org.openecomp.sdc.ci.tests.execute.user.ActivateDeActivateDeleteUser.java Source code

Java tutorial

Introduction

Here is the source code for org.openecomp.sdc.ci.tests.execute.user.ActivateDeActivateDeleteUser.java

Source

/*-
 * ============LICENSE_START=======================================================
 * SDC
 * ================================================================================
 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
 * ================================================================================
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * ============LICENSE_END=========================================================
 */

package org.openecomp.sdc.ci.tests.execute.user;

import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertFalse;
import static org.testng.AssertJUnit.assertNotNull;
import static org.testng.AssertJUnit.assertTrue;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

import org.apache.http.HttpStatus;
import org.junit.Rule;
import org.junit.rules.TestName;
import org.openecomp.sdc.be.dao.api.ActionStatus;
import org.openecomp.sdc.be.dao.utils.UserStatusEnum;
import org.openecomp.sdc.be.model.LifecycleStateEnum;
import org.openecomp.sdc.be.model.Resource;
import org.openecomp.sdc.be.model.User;
import org.openecomp.sdc.ci.tests.api.ComponentBaseTest;
import org.openecomp.sdc.ci.tests.datatypes.ResourceReqDetails;
import org.openecomp.sdc.ci.tests.datatypes.ResourceRespJavaObject;
import org.openecomp.sdc.ci.tests.datatypes.ServiceReqDetails;
import org.openecomp.sdc.ci.tests.datatypes.enums.ErrorInfo;
import org.openecomp.sdc.ci.tests.datatypes.enums.NormativeTypesEnum;
import org.openecomp.sdc.ci.tests.datatypes.enums.ResourceCategoryEnum;
import org.openecomp.sdc.ci.tests.datatypes.enums.UserRoleEnum;
import org.openecomp.sdc.ci.tests.datatypes.expected.ExpectedUserCRUDAudit;
import org.openecomp.sdc.ci.tests.datatypes.http.RestResponse;
import org.openecomp.sdc.ci.tests.users.UserResponseMessageEnum;
import org.openecomp.sdc.ci.tests.utils.DbUtils;
import org.openecomp.sdc.ci.tests.utils.general.Convertor;
import org.openecomp.sdc.ci.tests.utils.general.ElementFactory;
import org.openecomp.sdc.ci.tests.utils.rest.CatalogRestUtils;
import org.openecomp.sdc.ci.tests.utils.rest.ImportRestUtils;
import org.openecomp.sdc.ci.tests.utils.rest.ResourceRestUtils;
import org.openecomp.sdc.ci.tests.utils.rest.ResponseParser;
import org.openecomp.sdc.ci.tests.utils.rest.UserRestUtils;
import org.openecomp.sdc.ci.tests.utils.validation.AuditValidationUtils;
import org.openecomp.sdc.ci.tests.utils.validation.ErrorValidationUtils;
import org.openecomp.sdc.ci.tests.utils.validation.ResourceValidationUtils;
import org.openecomp.sdc.ci.tests.utils.validation.UserValidationUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.AssertJUnit;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.reflect.TypeToken;

/**
 * @author alitvinsky
 *
 */
public class ActivateDeActivateDeleteUser extends ComponentBaseTest {
    private static Logger logger = LoggerFactory.getLogger(ActivateDeActivateDeleteUser.class.getName());
    protected Gson gson = new Gson();
    protected User sdncAdminUser;

    @BeforeMethod
    public void init() {
        sdncAdminUser = ElementFactory.getDefaultUser(UserRoleEnum.ADMIN);

    }

    @Rule
    public static TestName name = new TestName();

    public ActivateDeActivateDeleteUser() {
        super(name, ActivateDeActivateDeleteUser.class.getName());
    }

    @Test
    public void authorizeDeActivatedUser() throws Exception {

        User sdncUserDetails = getDefaultUserDetails();

        try {

            UserRestUtils.deleteUser(sdncUserDetails, sdncAdminUser, true);
            DbUtils.cleanAllAudits();

            RestResponse createUserResponse = UserRestUtils.createUser(sdncUserDetails, sdncAdminUser);
            validateSuccessCreateUserResponse(sdncUserDetails, createUserResponse);

            // deActivate created user
            RestResponse deActivateUserResponse = UserRestUtils.deActivateUser(sdncUserDetails, sdncAdminUser);
            sdncUserDetails.setStatus(UserStatusEnum.INACTIVE);
            validateSuccessDeActivateUserResponse(sdncUserDetails, deActivateUserResponse);

            ErrorInfo errorInfo = ErrorValidationUtils.parseErrorConfigYaml(ActionStatus.USER_INACTIVE.name());
            RestResponse getUserResponse = UserRestUtils.getUser(sdncUserDetails, sdncAdminUser);

            AssertJUnit.assertEquals("Check response code after deActive user", errorInfo.getCode(),
                    getUserResponse.getErrorCode());

            List<String> variables = Arrays.asList(sdncUserDetails.getUserId());
            ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.USER_INACTIVE.name(), variables,
                    getUserResponse.getResponse());

            // clean audit before authorization test
            DbUtils.cleanAllAudits();

            // Perform login from WebSeal
            User sealUserDetails = sdncUserDetails;
            RestResponse authorizedUserResponse = UserRestUtils.authorizedUserTowardsCatalogBeQA(sealUserDetails);

            // validate response

            ErrorInfo errorInfo2 = ErrorValidationUtils.parseErrorConfigYaml(ActionStatus.RESTRICTED_ACCESS.name());

            AssertJUnit.assertNotNull("check response object is not null after user login", authorizedUserResponse);
            AssertJUnit.assertNotNull("check error code exists in response after user login",
                    authorizedUserResponse.getErrorCode());
            AssertJUnit.assertEquals("Check response code after deActive user", errorInfo2.getCode(),
                    authorizedUserResponse.getErrorCode());

            List<String> variables2 = Arrays.asList();
            ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESTRICTED_ACCESS.name(), variables2,
                    authorizedUserResponse.getResponse());

            // validate against ES DB

            UserValidationUtils.validateDataAgainstAuditDB_access(sealUserDetails,
                    DbUtils.parseAuditRespByAction("Access"), authorizedUserResponse, errorInfo2, variables2);

        } finally {
            UserRestUtils.deleteUser(sdncUserDetails, sdncAdminUser, true);
        }

    }

    public User getDefaultUserDetails() {

        String httpCspUserId = "km2000";
        String userFirstName = "Kot";
        String userLastName = "May";
        String email = "km2000@intl.sdc.com";
        String role = UserRoleEnum.ADMIN.name();
        User sdncUserDetails = new User(userFirstName, userLastName, httpCspUserId, email, role, null);

        return sdncUserDetails;
    }

    public void validateSuccessCreateUserResponse(User sdncUserDetails, RestResponse createUserResponse)
            throws Exception {

        AssertJUnit.assertNotNull("check response object is not null after create user", createUserResponse);
        AssertJUnit.assertNotNull("check error code exists in response after create user",
                createUserResponse.getErrorCode());
        AssertJUnit.assertEquals("Check response code after create user", HttpStatus.SC_CREATED,
                createUserResponse.getErrorCode().intValue());

        UserValidationUtils.validateUserDetailsOnResponse(sdncUserDetails, createUserResponse.getResponse());
        // UserRestUtils.validateAddUserAuditMessage(sdncUserDetails,
        // sdncAdminUser, String.valueOf(HttpStatus.SC_CREATED),
        // UserResponseMessageEnum.SUCCESS_MESSAGE.getValue(),
        // UserRestUtils.getAddUserAuditMessage("AddUser"));
        String addUser = "AddUser";
        ExpectedUserCRUDAudit constructFieldsForAuditValidation = Convertor.constructFieldsForAuditValidation(
                addUser, sdncAdminUser, ActionStatus.CREATED, sdncUserDetails, null);
        AuditValidationUtils.validateAddUserAudit(constructFieldsForAuditValidation, addUser);

        RestResponse getUserResponse = UserRestUtils.getUser(sdncUserDetails, sdncAdminUser);
        UserValidationUtils.validateUserDetailsOnResponse(sdncUserDetails, getUserResponse.getResponse());

    }

    public void validateSuccessDeActivateUserResponse(User sdncUserDetails, RestResponse deActivateUserResponse)
            throws Exception {

        AssertJUnit.assertNotNull("check response object is not null after deActive user", deActivateUserResponse);
        AssertJUnit.assertNotNull("check error code exists in response after deActive user",
                deActivateUserResponse.getErrorCode());
        AssertJUnit.assertEquals("Check response code after deActive user", 200,
                deActivateUserResponse.getErrorCode().intValue());

        UserValidationUtils.validateUserDetailsOnResponse(sdncUserDetails, deActivateUserResponse.getResponse());

        String deleteUser = "DeleteUser";
        ExpectedUserCRUDAudit constructFieldsForAuditValidation = Convertor.constructFieldsForAuditValidation(
                deleteUser, sdncAdminUser, ActionStatus.OK, null, sdncUserDetails);
        AuditValidationUtils.validateAddUserAudit(constructFieldsForAuditValidation, deleteUser);

    }

    // US498322 - Add Status Field to USER

    @Test
    public void createNewUser() throws Exception {

        User sdncUserDetails = getDefaultUserDetails();
        try {

            UserRestUtils.deleteUser(sdncUserDetails, sdncAdminUser, true);
            DbUtils.cleanAllAudits();

            RestResponse createUserResponse = UserRestUtils.createUser(sdncUserDetails, sdncAdminUser);
            validateSuccessCreateUserResponse(sdncUserDetails, createUserResponse);

        } finally {
            UserRestUtils.deleteUser(sdncUserDetails, sdncAdminUser, true);
        }

    }

    @Test
    public void createDefaultUser() throws Exception {

        User sdncUserDetails = getDefaultUserDetails();
        sdncUserDetails.setFirstName(null);
        sdncUserDetails.setLastName(null);
        sdncUserDetails.setEmail(null);
        sdncUserDetails.setRole(null);

        try {

            UserRestUtils.deleteUser(sdncUserDetails, sdncAdminUser, true);
            DbUtils.cleanAllAudits();

            RestResponse createUserResponse = UserRestUtils.createUser(sdncUserDetails, sdncAdminUser);
            validateSuccessCreateUserResponse(sdncUserDetails, createUserResponse);

        } finally {
            UserRestUtils.deleteUser(sdncUserDetails, sdncAdminUser, true);
        }

    }

    @Test
    public void createTesterUser() throws Exception {

        User sdncUserDetails = getDefaultUserDetails();
        sdncUserDetails.setLastName(null);
        sdncUserDetails.setRole(UserRoleEnum.TESTER.name());

        try {

            UserRestUtils.deleteUser(sdncUserDetails, sdncAdminUser, true);
            DbUtils.cleanAllAudits();

            RestResponse createUserResponse = UserRestUtils.createUser(sdncUserDetails, sdncAdminUser);
            validateSuccessCreateUserResponse(sdncUserDetails, createUserResponse);

        } finally {
            UserRestUtils.deleteUser(sdncUserDetails, sdncAdminUser, true);
        }

    }

    @Test
    public void deActivateCreatedAdminUser() throws Exception {

        User sdncUserDetails = getDefaultUserDetails();

        try {

            UserRestUtils.deleteUser(sdncUserDetails, sdncAdminUser, true);
            DbUtils.cleanAllAudits();

            RestResponse createUserResponse = UserRestUtils.createUser(sdncUserDetails, sdncAdminUser);
            validateSuccessCreateUserResponse(sdncUserDetails, createUserResponse);

            // deActivate created user
            RestResponse deActivateUserResponse = UserRestUtils.deActivateUser(sdncUserDetails, sdncAdminUser);
            sdncUserDetails.setStatus(UserStatusEnum.INACTIVE);
            validateSuccessDeActivateUserResponse(sdncUserDetails, deActivateUserResponse);

            ErrorInfo errorInfo = ErrorValidationUtils.parseErrorConfigYaml(ActionStatus.USER_INACTIVE.name());

            RestResponse getUserResponse = UserRestUtils.getUser(sdncUserDetails, sdncAdminUser);

            assertEquals("Check response code after get user", errorInfo.getCode(), getUserResponse.getErrorCode());

            List<String> variables = Arrays.asList(sdncUserDetails.getUserId());
            ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.USER_INACTIVE.name(), variables,
                    getUserResponse.getResponse());

        } finally {
            UserRestUtils.deleteUser(sdncUserDetails, sdncAdminUser, true);
        }

    }

    @Test
    public void deActivateTheSameUserTwice() throws Exception {

        User sdncUserDetails = getDefaultUserDetails();

        try {

            UserRestUtils.deleteUser(sdncUserDetails, sdncAdminUser, true);
            DbUtils.cleanAllAudits();

            RestResponse createUserResponse = UserRestUtils.createUser(sdncUserDetails, sdncAdminUser);
            validateSuccessCreateUserResponse(sdncUserDetails, createUserResponse);

            // deActivate created user
            RestResponse deActivateUserResponse = UserRestUtils.deActivateUser(sdncUserDetails, sdncAdminUser);
            sdncUserDetails.setStatus(UserStatusEnum.INACTIVE);
            validateSuccessDeActivateUserResponse(sdncUserDetails, deActivateUserResponse);

            ErrorInfo errorInfo = ErrorValidationUtils.parseErrorConfigYaml(ActionStatus.USER_INACTIVE.name());

            RestResponse getUserResponse = UserRestUtils.getUser(sdncUserDetails, sdncAdminUser);

            assertEquals("Check response code after deActive user", errorInfo.getCode(),
                    getUserResponse.getErrorCode());

            List<String> variables = Arrays.asList(sdncUserDetails.getUserId());
            ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.USER_INACTIVE.name(), variables,
                    getUserResponse.getResponse());

            // deActivate the same user once time more
            RestResponse deActivateUserResponse2 = UserRestUtils.deActivateUser(sdncUserDetails, sdncAdminUser);
            ErrorInfo errorInfo2 = ErrorValidationUtils.parseErrorConfigYaml(ActionStatus.USER_INACTIVE.name());
            assertEquals("Check response code after deActive user", errorInfo2.getCode(),
                    deActivateUserResponse2.getErrorCode());

            List<String> variables2 = Arrays.asList(sdncUserDetails.getUserId());
            ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.USER_INACTIVE.name(), variables2,
                    deActivateUserResponse2.getResponse());

        } finally {
            UserRestUtils.deleteUser(sdncUserDetails, sdncAdminUser, true);
        }

    }

    @Test
    public void createAgainDeActivatedUser() throws Exception {

        User sdncUserDetails = getDefaultUserDetails();

        try {

            UserRestUtils.deleteUser(sdncUserDetails, sdncAdminUser, true);
            DbUtils.cleanAllAudits();

            RestResponse createUserResponse = UserRestUtils.createUser(sdncUserDetails, sdncAdminUser);
            validateSuccessCreateUserResponse(sdncUserDetails, createUserResponse);

            // deActivate created user
            RestResponse deActivateUserResponse = UserRestUtils.deActivateUser(sdncUserDetails, sdncAdminUser);
            sdncUserDetails.setStatus(UserStatusEnum.INACTIVE);
            validateSuccessDeActivateUserResponse(sdncUserDetails, deActivateUserResponse);

            ErrorInfo errorInfo = ErrorValidationUtils.parseErrorConfigYaml(ActionStatus.USER_INACTIVE.name());
            RestResponse getUserResponse = UserRestUtils.getUser(sdncUserDetails, sdncAdminUser);

            assertEquals("Check response code after deActive user", errorInfo.getCode(),
                    getUserResponse.getErrorCode());

            List<String> variables = Arrays.asList(sdncUserDetails.getUserId());
            ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.USER_INACTIVE.name(), variables,
                    getUserResponse.getResponse());

            // create the user with the same UserId(details) as deActivated user
            DbUtils.cleanAllAudits();

            RestResponse createUserResponse2 = UserRestUtils.createUser(sdncUserDetails, sdncAdminUser);
            ErrorInfo errorInfo2 = ErrorValidationUtils.parseErrorConfigYaml(ActionStatus.USER_INACTIVE.name());
            assertEquals("Check response code after deActive user", errorInfo2.getCode(),
                    createUserResponse2.getErrorCode());

            List<String> variables2 = Arrays.asList(sdncUserDetails.getUserId());
            ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.USER_INACTIVE.name(), variables2,
                    createUserResponse2.getResponse());

        } finally {
            UserRestUtils.deleteUser(sdncUserDetails, sdncAdminUser, true);
        }

    }

    // very not recommend to run this test, resources/services may be zombie
    // @Test
    public void deActivateLastAdminUser() throws Exception {

        try {

            // send get all ADMIN user request toward BE
            RestResponse getAllAdminUsers = UserRestUtils.getAllAdminUsers(sdncAdminUser);

            assertNotNull("check response object is not null after create user", getAllAdminUsers);
            assertNotNull("check error code exists in response after create user", getAllAdminUsers.getErrorCode());
            assertEquals("Check response code after create user", 200, getAllAdminUsers.getErrorCode().intValue());

            TypeToken<List<User>> typeToken = new TypeToken<List<User>>() {
            };
            List<User> listOfUsersOnResponse = gson.fromJson(getAllAdminUsers.getResponse(), typeToken.getType());
            logger.debug("listOfUsers: {}", listOfUsersOnResponse);

            // build map of all Admin users from listOfUsersOnResponse from
            // response
            Map<String, User> mapAllUsersOnResponse = new HashMap<String, User>();
            for (User sdncUser : listOfUsersOnResponse) {
                mapAllUsersOnResponse.put(sdncUser.getUserId(), sdncUser);
            }

            // remove from mapAllUsersOnResponse map one of admin users
            mapAllUsersOnResponse.remove(sdncAdminUser.getUserId());
            logger.debug("map Of all Admin users exclude one : {}", mapAllUsersOnResponse);

            // deActivate all Admin users from the userIdAllAdminList list
            for (Entry<String, User> entry : mapAllUsersOnResponse.entrySet()) {
                UserRestUtils.deActivateUser(entry.getValue(), sdncAdminUser);
            }

            // deActivate last Admin user user
            RestResponse deActivateUserResponse = UserRestUtils.deActivateUser(sdncAdminUser, sdncAdminUser);

            ErrorInfo errorInfo = ErrorValidationUtils
                    .parseErrorConfigYaml(ActionStatus.DELETE_USER_ADMIN_CONFLICT.name());

            assertEquals("Check response code after deActive user", errorInfo.getCode(),
                    deActivateUserResponse.getErrorCode());

            List<String> variables = Arrays.asList();
            ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.DELETE_USER_ADMIN_CONFLICT.name(), variables,
                    deActivateUserResponse.getResponse());

        } finally {
            // UserRestUtils.deleteUser(UserRestUtils.getAdminDetails2(),
            // sdncAdminUser);
            // UserRestUtils.deleteUser(UserRestUtils.getAdminDetails3(),
            // sdncAdminUser);
            // UserRestUtils.createUser(UserRestUtils.getAdminDetails2(),
            // sdncAdminUser);
            // UserRestUtils.createUser(UserRestUtils.getAdminDetails3(),
            // sdncAdminUser);
        }

    }

    // test check the resource accessibility via catalog view, resource was
    // created by user which was deActivated

    @Test
    public void resourceAccessibility() throws Exception {

        User sdncUserDetails = getDefaultUserDetails();
        ResourceReqDetails resourceDetails = ElementFactory.getDefaultResource("tosca.nodes.newresource4test4",
                NormativeTypesEnum.ROOT, ResourceCategoryEnum.GENERIC_INFRASTRUCTURE, "jh0003");
        String resourceBaseVersion = "0.1";

        try {
            // Delete resource
            // resourceUtils.deleteResource_allVersions(resourceDetails,
            // sdncAdminUser);
            UserRestUtils.deleteUser(sdncUserDetails, sdncAdminUser, true);

            DbUtils.cleanAllAudits();
            RestResponse createUserResponse = UserRestUtils.createUser(sdncUserDetails, sdncAdminUser);
            validateSuccessCreateUserResponse(sdncUserDetails, createUserResponse);

            // ------------------------Start create
            // resource---------------------------------------------------------------------------------

            // create resource
            RestResponse createResponse = ResourceRestUtils.createResource(resourceDetails, sdncUserDetails);
            assertEquals("Check response code after create", 201, createResponse.getErrorCode().intValue());

            Resource createdResource = ResponseParser
                    .convertResourceResponseToJavaObject(createResponse.getResponse());

            RestResponse resourceGetResponse = ResourceRestUtils.getResource(sdncUserDetails,
                    createdResource.getUniqueId());
            assertEquals("Check response code after get", 200, resourceGetResponse.getErrorCode().intValue());

            // validate get response
            ResourceRespJavaObject resourceRespJavaObject = Convertor
                    .constructFieldsForRespValidation(resourceDetails, resourceBaseVersion);
            resourceRespJavaObject.setLifecycleState((LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT).toString());
            resourceRespJavaObject.setAbstractt("false");
            resourceRespJavaObject.setCreatorUserId(sdncUserDetails.getUserId());
            resourceRespJavaObject.setLastUpdaterUserId(sdncUserDetails.getUserId());

            resourceRespJavaObject
                    .setCreatorFullName(sdncUserDetails.getFirstName() + " " + sdncUserDetails.getLastName());
            resourceRespJavaObject
                    .setLastUpdaterFullName(sdncUserDetails.getFirstName() + " " + sdncUserDetails.getLastName());

            ResourceValidationUtils.validateResp(resourceGetResponse, resourceRespJavaObject);

            // ------------------------End create
            // resource---------------------------------------------------------------------------------

            // clean audit before authorization test
            DbUtils.cleanAllAudits();

            // deActivate created user
            RestResponse deActivateUserResponse = UserRestUtils.deActivateUser(sdncUserDetails, sdncAdminUser);
            sdncUserDetails.setStatus(UserStatusEnum.INACTIVE);
            validateSuccessDeActivateUserResponse(sdncUserDetails, deActivateUserResponse);

            UserValidationUtils.validateDeleteUserAuditMessage(sdncUserDetails, sdncAdminUser, "200",
                    UserResponseMessageEnum.SUCCESS_MESSAGE.getValue(),
                    UserValidationUtils.getAddUserAuditMessage("DeleteUser"));

            ErrorInfo errorInfo = ErrorValidationUtils.parseErrorConfigYaml(ActionStatus.USER_INACTIVE.name());
            RestResponse getUserResponse = UserRestUtils.getUser(sdncUserDetails, sdncAdminUser);

            assertEquals("Check response code after deActive user", errorInfo.getCode(),
                    getUserResponse.getErrorCode());

            List<String> variables = Arrays.asList(sdncUserDetails.getUserId());
            ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.USER_INACTIVE.name(), variables,
                    getUserResponse.getResponse());

            // checking if created resource is accessible
            DbUtils.cleanAllAudits();

            RestResponse getCatalogDataResponse = CatalogRestUtils.getCatalog(sdncAdminUser.getUserId());

            // validate response

            assertNotNull("check response object is not null after user login", getCatalogDataResponse);
            assertNotNull("check error code exists in response after user login",
                    getCatalogDataResponse.getErrorCode());
            assertEquals("Check response code after deActive user", 200,
                    getCatalogDataResponse.getErrorCode().intValue());

            // expected resource list
            List<String> resourceExpectedUniqIdList = new ArrayList<String>();
            resourceExpectedUniqIdList.add(resourceDetails.getUniqueId());
            logger.debug("resourceExpectedUniqIdList: {}", resourceExpectedUniqIdList);

            compareResourceUniqIdList(getCatalogDataResponse.getResponse(), resourceExpectedUniqIdList, true);

        } finally {
            // resourceUtils.deleteResource_allVersions(resourceDetails,
            // sdncAdminUser);
            UserRestUtils.deleteUser(sdncUserDetails, sdncAdminUser, true);
        }

    }

    // test check the resource accessibility via catalog view, resource was
    // created by user which was deActivated

    @Test
    public void resourceAccessibilityOnImport() throws Exception {

        User sdncUserDetails = getDefaultUserDetails();
        ResourceReqDetails resourceDetails = ElementFactory.getDefaultResource("importResource4test",
                NormativeTypesEnum.ROOT, ResourceCategoryEnum.NETWORK_L2_3_ROUTERS, "jh0003");
        resourceDetails.addCategoryChain(ResourceCategoryEnum.GENERIC_DATABASE.getCategory(),
                ResourceCategoryEnum.GENERIC_DATABASE.getSubCategory());
        // String resourceBaseVersion = "1.0";

        try {
            // Delete resource
            // resourceUtils.deleteResource_allVersions(resourceDetails,
            // sdncAdminUser);
            RestResponse deleteUserResponse = UserRestUtils.deleteUser(sdncUserDetails, sdncAdminUser, true);
            assertTrue("delete user request failed",
                    deleteUserResponse.getErrorCode() == 200 || deleteUserResponse.getErrorCode() == 404);
            DbUtils.cleanAllAudits();
            RestResponse createUserResponse = UserRestUtils.createUser(sdncUserDetails, sdncAdminUser);
            validateSuccessCreateUserResponse(sdncUserDetails, createUserResponse);

            // ------------------------Start import
            // resource---------------------------------------------------------------------------------

            // import new resource with CERTIFIED state
            User importer = ElementFactory.getDefaultUser(UserRoleEnum.ADMIN4);
            RestResponse importResponse = ImportRestUtils.importResourceByName(resourceDetails, importer);

            assertNotNull("check response object is not null after create user", importResponse);
            assertNotNull("check error code exists in response after create user", importResponse.getErrorCode());
            assertEquals("Check response code after create user", 201, importResponse.getErrorCode().intValue());

            // ------------------------End import
            // resource---------------------------------------------------------------------------------

            // clean audit before authorization test
            DbUtils.cleanAllAudits();

            // deActivate created user
            RestResponse deActivateUserResponse = UserRestUtils.deActivateUser(sdncUserDetails, sdncAdminUser);
            sdncUserDetails.setStatus(UserStatusEnum.INACTIVE);
            validateSuccessDeActivateUserResponse(sdncUserDetails, deActivateUserResponse);

            UserValidationUtils.validateDeleteUserAuditMessage(sdncUserDetails, sdncAdminUser, "200",
                    UserResponseMessageEnum.SUCCESS_MESSAGE.getValue(),
                    UserValidationUtils.getAddUserAuditMessage("DeleteUser"));

            ErrorInfo errorInfo = ErrorValidationUtils.parseErrorConfigYaml(ActionStatus.USER_INACTIVE.name());
            RestResponse getUserResponse = UserRestUtils.getUser(sdncUserDetails, sdncAdminUser);

            assertEquals("Check response code after deActive user", errorInfo.getCode(),
                    getUserResponse.getErrorCode());

            List<String> variables = Arrays.asList(sdncUserDetails.getUserId());
            ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.USER_INACTIVE.name(), variables,
                    getUserResponse.getResponse());

            // checking if created resource is accessible
            DbUtils.cleanAllAudits();

            RestResponse getCatalogDataResponse = CatalogRestUtils.getCatalog(sdncAdminUser.getUserId());

            // validate response

            assertNotNull("check response object is not null after user login", getCatalogDataResponse);
            assertNotNull("check error code exists in response after user login",
                    getCatalogDataResponse.getErrorCode());
            assertEquals("Check response code after deActive user", 200,
                    getCatalogDataResponse.getErrorCode().intValue());

            // expected resource list
            List<String> resourceExpectedUniqIdList = new ArrayList<String>();
            resourceExpectedUniqIdList.add(resourceDetails.getUniqueId());
            logger.debug("resourceExpectedUniqIdList: {}", resourceExpectedUniqIdList);

            compareResourceUniqIdList(getCatalogDataResponse.getResponse(), resourceExpectedUniqIdList, true);

        } finally {
            // resourceUtils.deleteResource_allVersions(resourceDetails,
            // sdncAdminUser);
            UserRestUtils.deleteUser(sdncUserDetails, sdncAdminUser, true);
        }

    }

    // test check the service accessibility via catalog view, service was
    // created by user which was deActivated

    // @Test
    // public void serviceAccessibility() throws Exception{
    //
    // User sdncUserDetails = getDefaultUserDetails();
    //// fill new service details
    // ServiceReqDetails serviceDetails = ElementFactory.getDefaultService();
    // String serviceBaseVersion = "0.1";
    //
    // try{
    // //Delete service
    //// ServiceRestUtils.deleteService_allVersions(serviceDetails,
    // sdncAdminUser);
    // UserRestUtils.deleteUser(sdncUserDetails, sdncAdminUser, true);
    //
    // DbUtils.cleanAllAudits();
    // RestResponse createUserResponse =
    // UserRestUtils.createUser(sdncUserDetails, sdncAdminUser);
    // validateSuccessCreateUserResponse(sdncUserDetails, createUserResponse);
    //
    //// ------------------------Start create
    // service---------------------------------------------------------------------------------
    // RestResponse restResponse =
    // ServiceRestUtils.createService(serviceDetails, sdncUserDetails);
    //
    // assertNotNull("check response object is not null after create service",
    // restResponse);
    // assertNotNull("check error code exists in response after create service",
    // restResponse.getErrorCode());
    // assertEquals("Check response code after create service", 201,
    // restResponse.getErrorCode().intValue());
    //
    //// validate create service response vs actual
    //
    // Service service =
    // ServiceRestUtils.convertServiceResponseToJavaObject(restResponse.getResponse());
    // UserValidationUtils.validateServiceResponseMetaData(serviceDetails,service,sdncUserDetails,
    // (LifecycleStateEnum)null);
    //
    //// validate get service response vs actual
    // restResponse = ServiceRestUtils.getService(serviceDetails.getUniqueId(),
    // sdncUserDetails);
    // service =
    // ServiceRestUtils.convertServiceResponseToJavaObject(restResponse.getResponse());
    // UserValidationUtils.validateServiceResponseMetaData(serviceDetails,service,sdncUserDetails,
    // (LifecycleStateEnum)null);
    //
    // //validate audit
    //
    // ExpectedResourceAuditJavaObject expectedResourceAuditJavaObject =
    // ServiceRestUtils.constructFieldsForAuditValidation(serviceDetails,
    // serviceBaseVersion, sdncUserDetails);
    //
    // String auditAction="Create";
    // expectedResourceAuditJavaObject.setAction(auditAction);
    // expectedResourceAuditJavaObject.setPrevState("");
    // expectedResourceAuditJavaObject.setPrevVersion("");
    // expectedResourceAuditJavaObject.setCurrState((LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT).toString());
    // expectedResourceAuditJavaObject.setStatus("201");
    // expectedResourceAuditJavaObject.setDesc("OK");
    //
    // AuditValidationUtils.validateAudit(expectedResourceAuditJavaObject,
    // auditAction, null, false);
    //
    //// ------------------------End create
    // service---------------------------------------------------------------------------------
    //
    //// clean audit before authorization test
    // DbUtils.cleanAllAudits();
    //
    //// deActivate created user
    // RestResponse deActivateUserResponse =
    // UserRestUtils.deActivateUser(sdncUserDetails,sdncAdminUser);
    // sdncUserDetails.setStatus(UserStatusEnum.INACTIVE);
    // validateSuccessDeActivateUserResponse(sdncUserDetails,
    // deActivateUserResponse);
    //
    // UserValidationUtils.validateDeleteUserAuditMessage(sdncUserDetails,
    // sdncAdminUser, "200", UserResponseMessageEnum.SUCCESS_MESSAGE.getValue(),
    // UserValidationUtils.getAddUserAuditMessage("DeleteUser"));
    //
    // ErrorInfo errorInfo =
    // ErrorValidationUtils.parseErrorConfigYaml(ActionStatus.USER_INACTIVE.name());
    // RestResponse getUserResponse = UserRestUtils.getUser(sdncUserDetails,
    // sdncAdminUser);
    //
    // assertEquals("Check response code after deActive user",
    // errorInfo.getCode(), getUserResponse.getErrorCode());
    //
    // List<String> variables = Arrays.asList(sdncUserDetails.getUserId());
    // ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.USER_INACTIVE.name(),
    // variables, getUserResponse.getResponse());
    //
    // //checking if created service is accessible
    // DbUtils.cleanAllAudits();
    //
    // RestResponse getCatalogDataResponse =
    // CatalogRestUtils.getCatalog(sdncAdminUser.getUserId());
    //
    // //validate response
    //
    // assertNotNull("check response object is not null after user login",
    // getCatalogDataResponse);
    // assertNotNull("check error code exists in response after user login",
    // getCatalogDataResponse.getErrorCode());
    // assertEquals("Check response code after deActive user", 200,
    // getCatalogDataResponse.getErrorCode().intValue());
    //
    //// expected service list
    // List<String> serviceExpectedUniqIdList= new ArrayList<String>();
    // serviceExpectedUniqIdList.add(serviceDetails.getUniqueId());
    // logger.debug("serviceExpectedUniqIdList: {}", serviceExpectedUniqIdList);
    //
    // compareServiceUniqIdList(getCatalogDataResponse.getResponse(),
    // serviceExpectedUniqIdList, true);
    //
    //
    // }finally{
    //// ServiceRestUtils.deleteService_allVersions(serviceDetails,
    // sdncAdminUser);
    // UserRestUtils.deleteUser(sdncUserDetails, sdncAdminUser, true);
    // }
    //
    // }

    public void compareServiceUniqIdList(String response, List<String> expectedList, boolean flag) {

        JsonElement jelement = new JsonParser().parse(response);
        JsonObject jobject = jelement.getAsJsonObject();
        JsonArray serviceArray = (JsonArray) jobject.get("services");
        logger.debug("{}", serviceArray);
        assertTrue(
                "expected service count: " + expectedList.size() + " or more" + ", actual: " + serviceArray.size(),
                serviceArray.size() >= expectedList.size());

        // build service list from response
        List<ServiceReqDetails> serviceReqDetailsListOnResponse = new ArrayList<ServiceReqDetails>();
        for (int i = 0; i < serviceArray.size(); i++) {
            ServiceReqDetails json = gson.fromJson(serviceArray.get(i), ServiceReqDetails.class);
            serviceReqDetailsListOnResponse.add(json);
        }
    }

    public void compareResourceUniqIdList(String response, List<String> expectedList, boolean flag) {

        JsonElement jelement = new JsonParser().parse(response);
        JsonObject jobject = jelement.getAsJsonObject();
        JsonArray resourceArray = (JsonArray) jobject.get("resources");
        logger.debug("{}", resourceArray);
        assertTrue("expected resource count: " + expectedList.size() + " or more" + ", actual: "
                + resourceArray.size(), resourceArray.size() >= expectedList.size());

        // build resource list from response
        List<ResourceReqDetails> resourceReqDetailsListOnResponse = new ArrayList<ResourceReqDetails>();
        for (int i = 0; i < resourceArray.size(); i++) {
            ResourceReqDetails json = gson.fromJson(resourceArray.get(i), ResourceReqDetails.class);
            resourceReqDetailsListOnResponse.add(json);
        }

        logger.debug("ResourceReqDetails list on response: {}", resourceReqDetailsListOnResponse);

        List<String> resourceActualUniqIdList = new ArrayList<String>();
        for (ResourceReqDetails resource : resourceReqDetailsListOnResponse) {
            resourceActualUniqIdList.add(resource.getUniqueId());
        }
        logger.debug("resourceActualUniqIdList on response: {}", resourceActualUniqIdList);
        logger.debug("resourceExpectedUniqIdList on response: {}", expectedList);

        if (flag) {
            assertTrue("actual list does not contain expected list",
                    resourceActualUniqIdList.containsAll(expectedList));
        } else {
            assertFalse("actual list contains non expected list elements",
                    resourceActualUniqIdList.containsAll(expectedList));
        }
    }

}