From 00875f083ffd56b2b861c147c5ef0fe928b77202 Mon Sep 17 00:00:00 2001 From: sebdet Date: Wed, 24 Jun 2020 12:14:57 +0200 Subject: Fix sonar issues Fix sonar/checkstyle issues in sdc code Issue-ID: SDC-3158 Signed-off-by: sebdet Change-Id: I004b0f579ff1f273f39a155217972f5efcdcf5cb --- .../templates/default/BE-portal.properties.erb | 4 +- .../be/ecomp/PortalRestAPICentralServiceImpl.java | 231 ----------------- .../be/ecomp/PortalRestApiCentralServiceImpl.java | 244 ++++++++++++++++++ catalog-be/src/main/resources/portal.properties | 2 +- .../ecomp/PortalRestAPICentralServiceImplTest.java | 274 --------------------- .../ecomp/PortalRestApiCentralServiceImplTest.java | 274 +++++++++++++++++++++ 6 files changed, 521 insertions(+), 508 deletions(-) delete mode 100644 catalog-be/src/main/java/org/openecomp/sdc/be/ecomp/PortalRestAPICentralServiceImpl.java create mode 100644 catalog-be/src/main/java/org/openecomp/sdc/be/ecomp/PortalRestApiCentralServiceImpl.java delete mode 100644 catalog-be/src/test/java/org/openecomp/sdc/be/ecomp/PortalRestAPICentralServiceImplTest.java create mode 100644 catalog-be/src/test/java/org/openecomp/sdc/be/ecomp/PortalRestApiCentralServiceImplTest.java diff --git a/catalog-be/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/templates/default/BE-portal.properties.erb b/catalog-be/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/templates/default/BE-portal.properties.erb index 73316266e7..159a6cce15 100644 --- a/catalog-be/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/templates/default/BE-portal.properties.erb +++ b/catalog-be/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/templates/default/BE-portal.properties.erb @@ -54,7 +54,7 @@ use_rest_for_functional_menu=true ########################################################################## # Name of java class that implements the OnBoardingApiService interface. -portal.api.impl.class = org.openecomp.sdc.be.ecomp.PortalRestAPICentralServiceImpl +portal.api.impl.class = org.openecomp.sdc.be.ecomp.PortalRestApiCentralServiceImpl role_access_centralized = remote # Cookie set by CSP-SSO @@ -74,7 +74,7 @@ ext_req_connection_timeout = 15000 ext_req_read_timeout = 20000 # Name of java class that implements the OnBoardingApiService interface. -portal.api.impl.class = org.openecomp.sdc.be.ecomp.PortalRestAPICentralServiceImpl +portal.api.impl.class = org.openecomp.sdc.be.ecomp.PortalRestApiCentralServiceImpl #Portal user & key portal_app_name = <%= @portal_app_name %> diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/ecomp/PortalRestAPICentralServiceImpl.java b/catalog-be/src/main/java/org/openecomp/sdc/be/ecomp/PortalRestAPICentralServiceImpl.java deleted file mode 100644 index 5b9c83fb98..0000000000 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/ecomp/PortalRestAPICentralServiceImpl.java +++ /dev/null @@ -1,231 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * SDC - * ================================================================================ - * Copyright (C) 2019 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.be.ecomp; - -import fj.data.Either; -import org.onap.portalsdk.core.onboarding.crossapi.IPortalRestCentralService; -import org.onap.portalsdk.core.onboarding.exception.CipherUtilException; -import org.onap.portalsdk.core.onboarding.exception.PortalAPIException; -import org.onap.portalsdk.core.onboarding.util.CipherUtil; -import org.onap.portalsdk.core.onboarding.util.PortalApiProperties; -import org.onap.portalsdk.core.restful.domain.EcompUser; -import org.openecomp.sdc.be.components.impl.exceptions.ComponentException; -import org.openecomp.sdc.be.config.BeEcompErrorManager; -import org.openecomp.sdc.be.dao.api.ActionStatus; -import org.openecomp.sdc.be.ecomp.converters.EcompUserConverter; -import org.openecomp.sdc.be.model.User; -import org.openecomp.sdc.be.user.UserBusinessLogic; -import org.openecomp.sdc.be.user.UserBusinessLogicExt; -import org.openecomp.sdc.common.api.Constants; -import org.openecomp.sdc.common.log.wrappers.Logger; -import org.openecomp.sdc.exception.ResponseFormat; -import org.springframework.context.ApplicationContext; -import org.springframework.web.context.ContextLoader; - -import javax.servlet.http.HttpServletRequest; -import java.util.HashMap; -import java.util.Map; - -public final class PortalRestAPICentralServiceImpl implements IPortalRestCentralService { - private static final String FAILED_TO_UPDATE_USER_CREDENTIALS = "Failed to update user credentials"; - private static final String FAILED_TO_DEACTIVATE_USER = "Failed to deactivate user {}"; - private static final String FAILED_TO_EDIT_USER = "Failed to edit user"; - private static final String EDIT_USER = "EditUser"; - private static final String CHECK_ROLES = "checkIfSingleRoleProvided"; - private static final String RECEIVED_NULL_FOR_ARGUMENT_LOGIN_ID = "Received null for argument loginId"; - private static final String RECEIVED_NULL_ROLES = "Received null roles for user"; - private static final String RECEIVED_MULTIPLE_ROLES = "Received multiple roles for user {}"; - private static final String RECEIVED_MULTIPLE_ROLES2 = "Received multiple roles for user"; - private static final String FAILED_TO_CREATE_USER = "Failed to create user {}"; - private static final String FAILED_TO_GET_USER_ID_HEADER = "Failed to get user_id header"; - private static final String JH0003 = "jh0003"; - private static final String PUSH_USER = "PushUser"; - private static final String RECEIVED_NULL_FOR_ARGUMENT_USER = "Received null for argument user"; - private static final Logger log = Logger.getLogger(PortalRestAPICentralServiceImpl.class); - private UserBusinessLogic userBusinessLogic; - private UserBusinessLogicExt userBusinessLogicExt; - - public PortalRestAPICentralServiceImpl() throws PortalAPIException { - try { - ApplicationContext ctx = ContextLoader.getCurrentWebApplicationContext(); - userBusinessLogic = (UserBusinessLogic) ctx.getBean("userBusinessLogic"); - userBusinessLogicExt = (UserBusinessLogicExt) ctx.getBean("userBusinessLogicExt"); - } catch (Exception e) { - log.debug("Failed to get user UserBusinessLogic", e); - BeEcompErrorManager.getInstance().logInvalidInputError("constructor", "Exception thrown" + e.getMessage(), BeEcompErrorManager.ErrorSeverity.ERROR); - throw new PortalAPIException("SDC Internal server error"); - } - log.debug("PortalRestAPICentralServiceImpl Class Instantiated"); - } - - //For testing purposes - PortalRestAPICentralServiceImpl(UserBusinessLogic ubl, UserBusinessLogicExt uble) { - this.userBusinessLogic = ubl; - this.userBusinessLogicExt = uble; - } - - @Override - public Map getAppCredentials() throws PortalAPIException { - Map credMap = new HashMap<>(); - String portal_user = PortalApiProperties.getProperty(PortalPropertiesEnum.USER.value()); - String password = PortalApiProperties.getProperty(PortalPropertiesEnum.PASSWORD.value()); - String appName = PortalApiProperties.getProperty(PortalPropertiesEnum.APP_NAME.value()); - try { - credMap.put("username", CipherUtil.decryptPKC(portal_user)); - credMap.put("password", CipherUtil.decryptPKC(password)); - credMap.put("appName", CipherUtil.decryptPKC(appName)); - } catch (CipherUtilException e) { - log.debug("User authentication failed - Decryption failed", e); - throw new PortalAPIException("Failed to decrypt" + e.getMessage()); - } - log.debug("the credentials map for portal is {}", credMap); - return credMap; - } - - @Override - public void pushUser(EcompUser user) throws PortalAPIException { - log.debug("Start handle request of ECOMP pushUser"); - - if (user == null) { - BeEcompErrorManager.getInstance().logInvalidInputError(PUSH_USER, RECEIVED_NULL_FOR_ARGUMENT_USER, BeEcompErrorManager.ErrorSeverity.INFO); - log.debug(RECEIVED_NULL_FOR_ARGUMENT_USER); - throw new PortalAPIException(RECEIVED_NULL_FOR_ARGUMENT_USER); - } - checkIfSingleRoleProvided(user); - - final String modifierAttId = JH0003; - log.debug("modifier id is {}", modifierAttId); - - User convertedAsdcUser = EcompUserConverter.convertEcompUserToUser(user); - - try{ - log.debug("Before creating ecomp user {} sdc user {}", user, convertedAsdcUser); - userBusinessLogic.createUser(modifierAttId, convertedAsdcUser); - }catch (Exception e) { - log.debug(FAILED_TO_CREATE_USER, user, e); - BeEcompErrorManager.getInstance().logInvalidInputError(PUSH_USER, FAILED_TO_CREATE_USER, BeEcompErrorManager.ErrorSeverity.ERROR); - throw new PortalAPIException(FAILED_TO_CREATE_USER + e.getMessage()); - } - - log.debug("User created ecomp user {} sdc user {}", user, convertedAsdcUser); - } - - @Override - public void editUser(String loginId, EcompUser user) throws PortalAPIException { - if (user == null) { - log.debug(RECEIVED_NULL_FOR_ARGUMENT_USER); - BeEcompErrorManager.getInstance().logInvalidInputError(EDIT_USER, RECEIVED_NULL_FOR_ARGUMENT_USER, BeEcompErrorManager.ErrorSeverity.INFO); - throw new PortalAPIException(RECEIVED_NULL_FOR_ARGUMENT_USER); - } else if (loginId == null) { - log.debug(RECEIVED_NULL_FOR_ARGUMENT_LOGIN_ID); - BeEcompErrorManager.getInstance().logInvalidInputError(EDIT_USER, RECEIVED_NULL_FOR_ARGUMENT_LOGIN_ID, BeEcompErrorManager.ErrorSeverity.INFO); - throw new PortalAPIException(RECEIVED_NULL_FOR_ARGUMENT_LOGIN_ID); - } - - log.debug("Start handle request of ECOMP editUser {} with loginId {} with follopwing roles {}", user, loginId, user.getRoles()); - - final String modifierAttId = JH0003; - log.debug("modifier id is {}", modifierAttId); - - if (user.getLoginId() != null && !user.getLoginId().equals(loginId)) { - log.debug("loginId and user loginId not equal"); - BeEcompErrorManager.getInstance().logInvalidInputError(EDIT_USER, "loginId and user loginId not equal", BeEcompErrorManager.ErrorSeverity.INFO); - throw new PortalAPIException("loginId not equals to the user loginId field"); - } else if (user.getLoginId() == null) { - user.setLoginId(loginId); - } - - Either verifyNewUser; - try{ - verifyNewUser = userBusinessLogic.verifyNewUserForPortal(user.getLoginId()); - } catch (ComponentException e){ - log.debug("Failed to verify new user", e); - throw new PortalAPIException(e.getCause()); - } - - if(verifyNewUser.isRight() && - (ActionStatus.USER_NOT_FOUND.equals(verifyNewUser.right().value()) || - ActionStatus.USER_INACTIVE.equals(verifyNewUser.right().value()))){ - log.debug("Edit user for user that not exist in DB, executing push user flow {}", user); - pushUser(user); - return; - } - - User asdcUser = EcompUserConverter.convertEcompUserToUser(user); - log.debug("Before editing ecomp user {} sdc user {}", user, asdcUser); - Either updateUserCredentialsResponse = userBusinessLogic.updateUserCredentials(asdcUser); - - if (updateUserCredentialsResponse.isRight()) { - log.debug(FAILED_TO_UPDATE_USER_CREDENTIALS); - BeEcompErrorManager.getInstance().logInvalidInputError(EDIT_USER, FAILED_TO_UPDATE_USER_CREDENTIALS, BeEcompErrorManager.ErrorSeverity.ERROR); - throw new PortalAPIException(FAILED_TO_EDIT_USER + updateUserCredentialsResponse.right().value()); - } - - if(user.getRoles() == null || user.getRoles().isEmpty()){ - try { - log.debug("Before deactivating ecomp user {} sdc user {}", user, asdcUser); - userBusinessLogicExt.deActivateUser(modifierAttId, loginId); - } - catch (Exception e) { - log.debug("Error: Failed to deactivate user {}", loginId); - BeEcompErrorManager.getInstance().logInvalidInputError(FAILED_TO_DEACTIVATE_USER, "Failed to deactivate user", BeEcompErrorManager.ErrorSeverity.INFO); - throw new PortalAPIException("Error: Failed to deactivate user" + e); - } - } else { - checkIfSingleRoleProvided(user); - try { - log.debug("Before updating ecomp user {} sdc user {}", user, asdcUser); - userBusinessLogic.updateUserRole(modifierAttId, loginId, asdcUser.getRole()); - }catch (Exception e) { - log.debug("Error: Failed to update user role {}", loginId); - BeEcompErrorManager.getInstance().logInvalidInputError(FAILED_TO_EDIT_USER, "Failed to update user role", BeEcompErrorManager.ErrorSeverity.INFO); - throw new PortalAPIException("Error: Failed to update user role" + e); - } - } - log.debug("user updated ecomp user {} sdc user {}", user, asdcUser); - } - - @Override - public String getUserId(HttpServletRequest request) throws PortalAPIException { - String header = request.getHeader(Constants.USER_ID_HEADER); - if (header == null) { - log.debug(FAILED_TO_GET_USER_ID_HEADER); - BeEcompErrorManager.getInstance().logInvalidInputError("getUserId", FAILED_TO_GET_USER_ID_HEADER, BeEcompErrorManager.ErrorSeverity.ERROR); - throw new PortalAPIException(FAILED_TO_GET_USER_ID_HEADER); - } - return header; - } - - - public static void checkIfSingleRoleProvided(EcompUser user) throws PortalAPIException { - if(user.getRoles() == null) { - log.debug(RECEIVED_NULL_ROLES, user); - BeEcompErrorManager.getInstance().logInvalidInputError(CHECK_ROLES, RECEIVED_NULL_ROLES, BeEcompErrorManager.ErrorSeverity.ERROR); - throw new PortalAPIException(RECEIVED_NULL_ROLES + user); - }else if(user.getRoles().size() > 1) { - log.debug(RECEIVED_MULTIPLE_ROLES, user); - BeEcompErrorManager.getInstance().logInvalidInputError(CHECK_ROLES, RECEIVED_MULTIPLE_ROLES2, BeEcompErrorManager.ErrorSeverity.ERROR); - throw new PortalAPIException(RECEIVED_MULTIPLE_ROLES2 + user); - } - } - - -} diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/ecomp/PortalRestApiCentralServiceImpl.java b/catalog-be/src/main/java/org/openecomp/sdc/be/ecomp/PortalRestApiCentralServiceImpl.java new file mode 100644 index 0000000000..757eeb83ce --- /dev/null +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/ecomp/PortalRestApiCentralServiceImpl.java @@ -0,0 +1,244 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2019 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.be.ecomp; + +import fj.data.Either; +import java.util.HashMap; +import java.util.Map; +import javax.servlet.http.HttpServletRequest; +import org.onap.portalsdk.core.onboarding.crossapi.IPortalRestCentralService; +import org.onap.portalsdk.core.onboarding.exception.CipherUtilException; +import org.onap.portalsdk.core.onboarding.exception.PortalAPIException; +import org.onap.portalsdk.core.onboarding.util.CipherUtil; +import org.onap.portalsdk.core.onboarding.util.PortalApiProperties; +import org.onap.portalsdk.core.restful.domain.EcompUser; +import org.openecomp.sdc.be.components.impl.exceptions.ComponentException; +import org.openecomp.sdc.be.config.BeEcompErrorManager; +import org.openecomp.sdc.be.dao.api.ActionStatus; +import org.openecomp.sdc.be.ecomp.converters.EcompUserConverter; +import org.openecomp.sdc.be.model.User; +import org.openecomp.sdc.be.user.UserBusinessLogic; +import org.openecomp.sdc.be.user.UserBusinessLogicExt; +import org.openecomp.sdc.common.api.Constants; +import org.openecomp.sdc.common.log.wrappers.Logger; +import org.openecomp.sdc.exception.ResponseFormat; +import org.springframework.context.ApplicationContext; +import org.springframework.web.context.ContextLoader; + +public final class PortalRestApiCentralServiceImpl implements IPortalRestCentralService { + private static final String FAILED_TO_UPDATE_USER_CREDENTIALS = "Failed to update user credentials"; + private static final String FAILED_TO_DEACTIVATE_USER = "Failed to deactivate user {}"; + private static final String FAILED_TO_EDIT_USER = "Failed to edit user"; + private static final String EDIT_USER = "EditUser"; + private static final String CHECK_ROLES = "checkIfSingleRoleProvided"; + private static final String RECEIVED_NULL_FOR_ARGUMENT_LOGIN_ID = "Received null for argument loginId"; + private static final String RECEIVED_NULL_ROLES = "Received null roles for user"; + private static final String RECEIVED_MULTIPLE_ROLES = "Received multiple roles for user {}"; + private static final String RECEIVED_MULTIPLE_ROLES2 = "Received multiple roles for user"; + private static final String FAILED_TO_CREATE_USER = "Failed to create user {}"; + private static final String FAILED_TO_GET_USER_ID_HEADER = "Failed to get user_id header"; + private static final String JH0003 = "jh0003"; + private static final String PUSH_USER = "PushUser"; + private static final String RECEIVED_NULL_FOR_ARGUMENT_USER = "Received null for argument user"; + private static final Logger log = Logger.getLogger(PortalRestApiCentralServiceImpl.class); + private UserBusinessLogic userBusinessLogic; + private UserBusinessLogicExt userBusinessLogicExt; + + public PortalRestApiCentralServiceImpl() throws PortalAPIException { + try { + ApplicationContext ctx = ContextLoader.getCurrentWebApplicationContext(); + userBusinessLogic = (UserBusinessLogic) ctx.getBean("userBusinessLogic"); + userBusinessLogicExt = (UserBusinessLogicExt) ctx.getBean("userBusinessLogicExt"); + } catch (Exception e) { + log.debug("Failed to get user UserBusinessLogic", e); + BeEcompErrorManager.getInstance().logInvalidInputError("constructor", "Exception thrown" + e.getMessage(), + BeEcompErrorManager.ErrorSeverity.ERROR); + throw new PortalAPIException("SDC Internal server error"); + } + log.debug("PortalRestApiCentralServiceImpl Class Instantiated"); + } + + //For testing purposes + PortalRestApiCentralServiceImpl(UserBusinessLogic ubl, UserBusinessLogicExt uble) { + this.userBusinessLogic = ubl; + this.userBusinessLogicExt = uble; + } + + @Override + public Map getAppCredentials() throws PortalAPIException { + Map credMap = new HashMap<>(); + String portalUser = PortalApiProperties.getProperty(PortalPropertiesEnum.USER.value()); + String password = PortalApiProperties.getProperty(PortalPropertiesEnum.PASSWORD.value()); + String appName = PortalApiProperties.getProperty(PortalPropertiesEnum.APP_NAME.value()); + try { + credMap.put("username", CipherUtil.decryptPKC(portalUser)); + credMap.put("password", CipherUtil.decryptPKC(password)); + credMap.put("appName", CipherUtil.decryptPKC(appName)); + } catch (CipherUtilException e) { + log.debug("User authentication failed - Decryption failed", e); + throw new PortalAPIException("Failed to decrypt" + e.getMessage()); + } + log.debug("the credentials map for portal is {}", credMap); + return credMap; + } + + @Override + public void pushUser(EcompUser user) throws PortalAPIException { + log.debug("Start handle request of ECOMP pushUser"); + + if (user == null) { + BeEcompErrorManager.getInstance().logInvalidInputError(PUSH_USER, RECEIVED_NULL_FOR_ARGUMENT_USER, + BeEcompErrorManager.ErrorSeverity.INFO); + log.debug(RECEIVED_NULL_FOR_ARGUMENT_USER); + throw new PortalAPIException(RECEIVED_NULL_FOR_ARGUMENT_USER); + } + checkIfSingleRoleProvided(user); + + final String modifierAttId = JH0003; + log.debug("modifier id is {}", modifierAttId); + + User convertedAsdcUser = EcompUserConverter.convertEcompUserToUser(user); + + try { + log.debug("Before creating ecomp user {} sdc user {}", user, convertedAsdcUser); + userBusinessLogic.createUser(modifierAttId, convertedAsdcUser); + } catch (Exception e) { + log.debug(FAILED_TO_CREATE_USER, user, e); + BeEcompErrorManager.getInstance() + .logInvalidInputError(PUSH_USER, FAILED_TO_CREATE_USER, BeEcompErrorManager.ErrorSeverity.ERROR); + throw new PortalAPIException(FAILED_TO_CREATE_USER + e.getMessage()); + } + + log.debug("User created ecomp user {} sdc user {}", user, convertedAsdcUser); + } + + @Override + public void editUser(String loginId, EcompUser user) throws PortalAPIException { + if (user == null) { + log.debug(RECEIVED_NULL_FOR_ARGUMENT_USER); + BeEcompErrorManager.getInstance().logInvalidInputError(EDIT_USER, RECEIVED_NULL_FOR_ARGUMENT_USER, + BeEcompErrorManager.ErrorSeverity.INFO); + throw new PortalAPIException(RECEIVED_NULL_FOR_ARGUMENT_USER); + } else if (loginId == null) { + log.debug(RECEIVED_NULL_FOR_ARGUMENT_LOGIN_ID); + BeEcompErrorManager.getInstance().logInvalidInputError(EDIT_USER, RECEIVED_NULL_FOR_ARGUMENT_LOGIN_ID, + BeEcompErrorManager.ErrorSeverity.INFO); + throw new PortalAPIException(RECEIVED_NULL_FOR_ARGUMENT_LOGIN_ID); + } + + log.debug("Start handle request of ECOMP editUser {} with loginId {} with follopwing roles {}", user, loginId, + user.getRoles()); + + final String modifierAttId = JH0003; + log.debug("modifier id is {}", modifierAttId); + + if (user.getLoginId() != null && !user.getLoginId().equals(loginId)) { + log.debug("loginId and user loginId not equal"); + BeEcompErrorManager.getInstance().logInvalidInputError(EDIT_USER, "loginId and user loginId not equal", + BeEcompErrorManager.ErrorSeverity.INFO); + throw new PortalAPIException("loginId not equals to the user loginId field"); + } else if (user.getLoginId() == null) { + user.setLoginId(loginId); + } + + Either verifyNewUser; + try { + verifyNewUser = userBusinessLogic.verifyNewUserForPortal(user.getLoginId()); + } catch (ComponentException e) { + log.debug("Failed to verify new user", e); + throw new PortalAPIException(e.getCause()); + } + + if (verifyNewUser.isRight() + && (ActionStatus.USER_NOT_FOUND.equals(verifyNewUser.right().value()) + || ActionStatus.USER_INACTIVE.equals(verifyNewUser.right().value()))) { + log.debug("Edit user for user that not exist in DB, executing push user flow {}", user); + pushUser(user); + return; + } + + User asdcUser = EcompUserConverter.convertEcompUserToUser(user); + log.debug("Before editing ecomp user {} sdc user {}", user, asdcUser); + Either updateUserCredentialsResponse = userBusinessLogic.updateUserCredentials(asdcUser); + + if (updateUserCredentialsResponse.isRight()) { + log.debug(FAILED_TO_UPDATE_USER_CREDENTIALS); + BeEcompErrorManager.getInstance().logInvalidInputError(EDIT_USER, FAILED_TO_UPDATE_USER_CREDENTIALS, + BeEcompErrorManager.ErrorSeverity.ERROR); + throw new PortalAPIException(FAILED_TO_EDIT_USER + updateUserCredentialsResponse.right().value()); + } + + if (user.getRoles() == null || user.getRoles().isEmpty()) { + try { + log.debug("Before deactivating ecomp user {} sdc user {}", user, asdcUser); + userBusinessLogicExt.deActivateUser(modifierAttId, loginId); + } catch (Exception e) { + log.debug("Error: Failed to deactivate user {}", loginId); + BeEcompErrorManager.getInstance() + .logInvalidInputError(FAILED_TO_DEACTIVATE_USER, "Failed to deactivate user", + BeEcompErrorManager.ErrorSeverity.INFO); + throw new PortalAPIException("Error: Failed to deactivate user" + e); + } + } else { + checkIfSingleRoleProvided(user); + try { + log.debug("Before updating ecomp user {} sdc user {}", user, asdcUser); + userBusinessLogic.updateUserRole(modifierAttId, loginId, asdcUser.getRole()); + } catch (Exception e) { + log.debug("Error: Failed to update user role {}", loginId); + BeEcompErrorManager.getInstance() + .logInvalidInputError(FAILED_TO_EDIT_USER, "Failed to update user role", + BeEcompErrorManager.ErrorSeverity.INFO); + throw new PortalAPIException("Error: Failed to update user role" + e); + } + } + log.debug("user updated ecomp user {} sdc user {}", user, asdcUser); + } + + @Override + public String getUserId(HttpServletRequest request) throws PortalAPIException { + String header = request.getHeader(Constants.USER_ID_HEADER); + if (header == null) { + log.debug(FAILED_TO_GET_USER_ID_HEADER); + BeEcompErrorManager.getInstance().logInvalidInputError("getUserId", FAILED_TO_GET_USER_ID_HEADER, + BeEcompErrorManager.ErrorSeverity.ERROR); + throw new PortalAPIException(FAILED_TO_GET_USER_ID_HEADER); + } + return header; + } + + + public static void checkIfSingleRoleProvided(EcompUser user) throws PortalAPIException { + if (user.getRoles() == null) { + log.debug(RECEIVED_NULL_ROLES, user); + BeEcompErrorManager.getInstance() + .logInvalidInputError(CHECK_ROLES, RECEIVED_NULL_ROLES, BeEcompErrorManager.ErrorSeverity.ERROR); + throw new PortalAPIException(RECEIVED_NULL_ROLES + user); + } else if (user.getRoles().size() > 1) { + log.debug(RECEIVED_MULTIPLE_ROLES, user); + BeEcompErrorManager.getInstance().logInvalidInputError(CHECK_ROLES, RECEIVED_MULTIPLE_ROLES2, + BeEcompErrorManager.ErrorSeverity.ERROR); + throw new PortalAPIException(RECEIVED_MULTIPLE_ROLES2 + user); + } + } + + +} diff --git a/catalog-be/src/main/resources/portal.properties b/catalog-be/src/main/resources/portal.properties index a182e80972..8c31b4c281 100644 --- a/catalog-be/src/main/resources/portal.properties +++ b/catalog-be/src/main/resources/portal.properties @@ -53,7 +53,7 @@ use_rest_for_functional_menu=true ########################################################################## # Name of java class that implements the OnBoardingApiService interface. -portal.api.impl.class = org.openecomp.sdc.be.ecomp.PortalRestAPICentralServiceImpl +portal.api.impl.class = org.openecomp.sdc.be.ecomp.PortalRestApiCentralServiceImpl # Use this tag if the app is centralized remote/local role_access_centralized = remote diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/ecomp/PortalRestAPICentralServiceImplTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/ecomp/PortalRestAPICentralServiceImplTest.java deleted file mode 100644 index 964e6258df..0000000000 --- a/catalog-be/src/test/java/org/openecomp/sdc/be/ecomp/PortalRestAPICentralServiceImplTest.java +++ /dev/null @@ -1,274 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * SDC - * ================================================================================ - * Copyright (C) 2019 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.be.ecomp; - -import fj.data.Either; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; -import org.mockito.Mockito; -import org.onap.portalsdk.core.onboarding.exception.PortalAPIException; -import org.onap.portalsdk.core.restful.domain.EcompRole; -import org.onap.portalsdk.core.restful.domain.EcompUser; -import org.openecomp.sdc.be.model.User; -import org.openecomp.sdc.be.user.UserBusinessLogic; -import org.openecomp.sdc.be.user.UserBusinessLogicExt; -import org.openecomp.sdc.exception.ResponseFormat; - -import javax.servlet.http.HttpServletRequest; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; - -public class PortalRestAPICentralServiceImplTest { - - private PortalRestAPICentralServiceImpl testSubject; - private UserBusinessLogic ubl; - private UserBusinessLogicExt uble; - - @Before - public void createTestSubject() { - ubl = Mockito.mock(UserBusinessLogic.class); - uble = Mockito.mock(UserBusinessLogicExt.class); - testSubject = new PortalRestAPICentralServiceImpl(ubl, uble); - - } - - @Test - public void testGetAppCredentials() throws Exception { - Map appCredentials = testSubject.getAppCredentials(); - Assert.assertTrue(appCredentials.get("appName").equals("sdc")); - Assert.assertTrue(appCredentials.get("username").equals("sdc")); - Assert.assertTrue(appCredentials.get("password").equals("asdc")); - } - - @Test - public void testPushUser() { - EcompUser user = new EcompUser(); - Set roleSet = new HashSet<>(); - EcompRole role = new EcompRole(); - role.setId(1L); - role.setName("Designer"); - roleSet.add(role); - user.setRoles(roleSet); - try { - testSubject.pushUser(user); - } catch (PortalAPIException e) { - Assert.fail(); - } - } - - @Test - public void testPushUserUBLError() { - Mockito.when(ubl.createUser(Mockito.anyString(), Mockito.any(User.class))).thenThrow(RuntimeException.class); - EcompUser user = new EcompUser(); - Set roleSet = new HashSet<>(); - EcompRole role = new EcompRole(); - role.setId(1L); - role.setName("Designer"); - roleSet.add(role); - user.setRoles(roleSet); - try { - testSubject.pushUser(user); - } catch (PortalAPIException e) { - Assert.assertTrue(e.getMessage().startsWith("Failed to create user")); - return; - } - Assert.fail(); - } - - @Test - public void testPushUserMultipleRoles() { - EcompUser user = new EcompUser(); - Set roleSet = new HashSet<>(); - EcompRole role = new EcompRole(); - role.setId(1L); - role.setName("Designer"); - roleSet.add(role); - EcompRole role1 = new EcompRole(); - role.setId(2L); - roleSet.add(role1); - role.setName("Tester"); - user.setRoles(roleSet); - try { - testSubject.pushUser(user); - } catch (PortalAPIException e) { - Assert.assertTrue(e.getMessage().startsWith("Received multiple roles for user")); - return; - } - Assert.fail(); - } - - @Test - public void testPushUserNullRoles() { - EcompUser user = new EcompUser(); - try{ - testSubject.pushUser(user); - } catch (PortalAPIException e){ - Assert.assertTrue(e.getMessage().equals("Received null roles for user" + user)); - return; - } - Assert.fail(); - } - - @Test - public void testPushUserUserNull() { - try { - testSubject.pushUser(null); - } catch (PortalAPIException e) { - Assert.assertTrue(e.getMessage().equals("Received null for argument user")); - return; - } - Assert.fail(); - } - - @Test - public void testEditUserUserNull() { - try { - testSubject.editUser(null, null); - } catch (PortalAPIException e) { - Assert.assertTrue(e.getMessage().equals("Received null for argument user")); - return; - } - Assert.fail(); - } - - @Test - public void testEditUserIdNull() { - try { - testSubject.editUser(null, new EcompUser()); - } catch (PortalAPIException e) { - Assert.assertTrue(e.getMessage().equals("Received null for argument loginId")); - return; - } - Assert.fail(); - } - - @Test - public void testEditUserFailOnUpdate() { - Mockito.when(ubl.updateUserCredentials(Mockito.any(User.class))).thenReturn(Either.right(new ResponseFormat())); - Mockito.when(ubl.verifyNewUserForPortal(Mockito.anyString())).thenReturn(Either.left(new User())); - EcompUser user = new EcompUser(); - Set roleSet = new HashSet<>(); - EcompRole role = new EcompRole(); - role.setId(1L); - role.setName("Designer"); - roleSet.add(role); - user.setRoles(roleSet); - try { - testSubject.editUser("mock_id", user); - } catch (PortalAPIException e) { - Assert.assertTrue(e.getMessage().startsWith("Failed to edit user")); - } - } - - @Test - public void testEditUserDeactivate() { - Mockito.when(ubl.updateUserCredentials(Mockito.any(User.class))).thenReturn(Either.left(new User())); - Mockito.when(ubl.verifyNewUserForPortal(Mockito.anyString())).thenReturn(Either.left(new User())); - EcompUser user = new EcompUser(); - try { - testSubject.editUser("mock_id", user); - } catch (PortalAPIException e) { - Assert.fail(); - } - } - - @Test - public void testEditUserFailUpdate() { - Mockito.when(ubl.updateUserCredentials(Mockito.any(User.class))).thenReturn(Either.left(new User())); - Mockito.when(ubl.updateUserRole(Mockito.anyString(), Mockito.anyString(), Mockito.anyString())).thenThrow(new RuntimeException()); - Mockito.when(ubl.verifyNewUserForPortal(Mockito.anyString())).thenReturn(Either.left(new User())); - EcompUser user = new EcompUser(); - Set roleSet = new HashSet<>(); - EcompRole role = new EcompRole(); - role.setId(1L); - role.setName("Designer"); - roleSet.add(role); - user.setRoles(roleSet); - try { - testSubject.editUser("mock_id", user); - } catch (PortalAPIException e) { - Assert.assertTrue(e.getMessage().startsWith("Error: Failed to update user role")); - return; - } - Assert.fail(); - } - - @Test - public void testEditUserFailDeactivate() { - Mockito.when(ubl.updateUserCredentials(Mockito.any(User.class))).thenReturn(Either.left(new User())); - Mockito.when(uble.deActivateUser(Mockito.anyString(), Mockito.anyString())).thenThrow(new RuntimeException()); - Mockito.when(ubl.verifyNewUserForPortal(Mockito.anyString())).thenReturn(Either.left(new User())); - EcompUser user = new EcompUser(); - try { - testSubject.editUser("mock_id", user); - } catch (PortalAPIException e) { - Assert.assertTrue(e.getMessage().startsWith("Error: Failed to deactivate user")); - return; - } - Assert.fail(); - } - - @Test - public void testEditUser() { - Mockito.when(ubl.updateUserCredentials(Mockito.any(User.class))).thenReturn(Either.left(new User())); - Mockito.when(ubl.verifyNewUserForPortal(Mockito.anyString())).thenReturn(Either.left(new User())); - EcompUser user = new EcompUser(); - Set roleSet = new HashSet<>(); - EcompRole role = new EcompRole(); - role.setId(1L); - role.setName("Designer"); - roleSet.add(role); - user.setRoles(roleSet); - try { - testSubject.editUser("mock_id", user); - } catch (PortalAPIException e) { - Assert.fail(); - } - } - - @Test - public void testGetUserId() { - HttpServletRequest httpServletRequestMock = Mockito.mock(HttpServletRequest.class); - String mockHeader = "MockHeader"; - Mockito.when(httpServletRequestMock.getHeader(Mockito.anyString())).thenReturn(mockHeader); - try { - String userId = testSubject.getUserId(httpServletRequestMock); - Assert.assertTrue(userId.equals(mockHeader)); - } catch (PortalAPIException e){ - Assert.fail(); - } - - } - - @Test - public void testGetUserIdException() { - HttpServletRequest httpServletRequestMock = Mockito.mock(HttpServletRequest.class); - try { - testSubject.getUserId(httpServletRequestMock); - } catch (PortalAPIException e){ - Assert.assertTrue(e.getMessage().equals("Failed to get user_id header")); - return; - } - Assert.fail(); - } -} diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/ecomp/PortalRestApiCentralServiceImplTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/ecomp/PortalRestApiCentralServiceImplTest.java new file mode 100644 index 0000000000..d09ec17fd3 --- /dev/null +++ b/catalog-be/src/test/java/org/openecomp/sdc/be/ecomp/PortalRestApiCentralServiceImplTest.java @@ -0,0 +1,274 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2019 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.be.ecomp; + +import fj.data.Either; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mockito; +import org.onap.portalsdk.core.onboarding.exception.PortalAPIException; +import org.onap.portalsdk.core.restful.domain.EcompRole; +import org.onap.portalsdk.core.restful.domain.EcompUser; +import org.openecomp.sdc.be.model.User; +import org.openecomp.sdc.be.user.UserBusinessLogic; +import org.openecomp.sdc.be.user.UserBusinessLogicExt; +import org.openecomp.sdc.exception.ResponseFormat; + +import javax.servlet.http.HttpServletRequest; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +public class PortalRestApiCentralServiceImplTest { + + private PortalRestApiCentralServiceImpl testSubject; + private UserBusinessLogic ubl; + private UserBusinessLogicExt uble; + + @Before + public void createTestSubject() { + ubl = Mockito.mock(UserBusinessLogic.class); + uble = Mockito.mock(UserBusinessLogicExt.class); + testSubject = new PortalRestApiCentralServiceImpl(ubl, uble); + + } + + @Test + public void testGetAppCredentials() throws Exception { + Map appCredentials = testSubject.getAppCredentials(); + Assert.assertTrue(appCredentials.get("appName").equals("sdc")); + Assert.assertTrue(appCredentials.get("username").equals("sdc")); + Assert.assertTrue(appCredentials.get("password").equals("asdc")); + } + + @Test + public void testPushUser() { + EcompUser user = new EcompUser(); + Set roleSet = new HashSet<>(); + EcompRole role = new EcompRole(); + role.setId(1L); + role.setName("Designer"); + roleSet.add(role); + user.setRoles(roleSet); + try { + testSubject.pushUser(user); + } catch (PortalAPIException e) { + Assert.fail(); + } + } + + @Test + public void testPushUserUBLError() { + Mockito.when(ubl.createUser(Mockito.anyString(), Mockito.any(User.class))).thenThrow(RuntimeException.class); + EcompUser user = new EcompUser(); + Set roleSet = new HashSet<>(); + EcompRole role = new EcompRole(); + role.setId(1L); + role.setName("Designer"); + roleSet.add(role); + user.setRoles(roleSet); + try { + testSubject.pushUser(user); + } catch (PortalAPIException e) { + Assert.assertTrue(e.getMessage().startsWith("Failed to create user")); + return; + } + Assert.fail(); + } + + @Test + public void testPushUserMultipleRoles() { + EcompUser user = new EcompUser(); + Set roleSet = new HashSet<>(); + EcompRole role = new EcompRole(); + role.setId(1L); + role.setName("Designer"); + roleSet.add(role); + EcompRole role1 = new EcompRole(); + role.setId(2L); + roleSet.add(role1); + role.setName("Tester"); + user.setRoles(roleSet); + try { + testSubject.pushUser(user); + } catch (PortalAPIException e) { + Assert.assertTrue(e.getMessage().startsWith("Received multiple roles for user")); + return; + } + Assert.fail(); + } + + @Test + public void testPushUserNullRoles() { + EcompUser user = new EcompUser(); + try{ + testSubject.pushUser(user); + } catch (PortalAPIException e){ + Assert.assertTrue(e.getMessage().equals("Received null roles for user" + user)); + return; + } + Assert.fail(); + } + + @Test + public void testPushUserUserNull() { + try { + testSubject.pushUser(null); + } catch (PortalAPIException e) { + Assert.assertTrue(e.getMessage().equals("Received null for argument user")); + return; + } + Assert.fail(); + } + + @Test + public void testEditUserUserNull() { + try { + testSubject.editUser(null, null); + } catch (PortalAPIException e) { + Assert.assertTrue(e.getMessage().equals("Received null for argument user")); + return; + } + Assert.fail(); + } + + @Test + public void testEditUserIdNull() { + try { + testSubject.editUser(null, new EcompUser()); + } catch (PortalAPIException e) { + Assert.assertTrue(e.getMessage().equals("Received null for argument loginId")); + return; + } + Assert.fail(); + } + + @Test + public void testEditUserFailOnUpdate() { + Mockito.when(ubl.updateUserCredentials(Mockito.any(User.class))).thenReturn(Either.right(new ResponseFormat())); + Mockito.when(ubl.verifyNewUserForPortal(Mockito.anyString())).thenReturn(Either.left(new User())); + EcompUser user = new EcompUser(); + Set roleSet = new HashSet<>(); + EcompRole role = new EcompRole(); + role.setId(1L); + role.setName("Designer"); + roleSet.add(role); + user.setRoles(roleSet); + try { + testSubject.editUser("mock_id", user); + } catch (PortalAPIException e) { + Assert.assertTrue(e.getMessage().startsWith("Failed to edit user")); + } + } + + @Test + public void testEditUserDeactivate() { + Mockito.when(ubl.updateUserCredentials(Mockito.any(User.class))).thenReturn(Either.left(new User())); + Mockito.when(ubl.verifyNewUserForPortal(Mockito.anyString())).thenReturn(Either.left(new User())); + EcompUser user = new EcompUser(); + try { + testSubject.editUser("mock_id", user); + } catch (PortalAPIException e) { + Assert.fail(); + } + } + + @Test + public void testEditUserFailUpdate() { + Mockito.when(ubl.updateUserCredentials(Mockito.any(User.class))).thenReturn(Either.left(new User())); + Mockito.when(ubl.updateUserRole(Mockito.anyString(), Mockito.anyString(), Mockito.anyString())).thenThrow(new RuntimeException()); + Mockito.when(ubl.verifyNewUserForPortal(Mockito.anyString())).thenReturn(Either.left(new User())); + EcompUser user = new EcompUser(); + Set roleSet = new HashSet<>(); + EcompRole role = new EcompRole(); + role.setId(1L); + role.setName("Designer"); + roleSet.add(role); + user.setRoles(roleSet); + try { + testSubject.editUser("mock_id", user); + } catch (PortalAPIException e) { + Assert.assertTrue(e.getMessage().startsWith("Error: Failed to update user role")); + return; + } + Assert.fail(); + } + + @Test + public void testEditUserFailDeactivate() { + Mockito.when(ubl.updateUserCredentials(Mockito.any(User.class))).thenReturn(Either.left(new User())); + Mockito.when(uble.deActivateUser(Mockito.anyString(), Mockito.anyString())).thenThrow(new RuntimeException()); + Mockito.when(ubl.verifyNewUserForPortal(Mockito.anyString())).thenReturn(Either.left(new User())); + EcompUser user = new EcompUser(); + try { + testSubject.editUser("mock_id", user); + } catch (PortalAPIException e) { + Assert.assertTrue(e.getMessage().startsWith("Error: Failed to deactivate user")); + return; + } + Assert.fail(); + } + + @Test + public void testEditUser() { + Mockito.when(ubl.updateUserCredentials(Mockito.any(User.class))).thenReturn(Either.left(new User())); + Mockito.when(ubl.verifyNewUserForPortal(Mockito.anyString())).thenReturn(Either.left(new User())); + EcompUser user = new EcompUser(); + Set roleSet = new HashSet<>(); + EcompRole role = new EcompRole(); + role.setId(1L); + role.setName("Designer"); + roleSet.add(role); + user.setRoles(roleSet); + try { + testSubject.editUser("mock_id", user); + } catch (PortalAPIException e) { + Assert.fail(); + } + } + + @Test + public void testGetUserId() { + HttpServletRequest httpServletRequestMock = Mockito.mock(HttpServletRequest.class); + String mockHeader = "MockHeader"; + Mockito.when(httpServletRequestMock.getHeader(Mockito.anyString())).thenReturn(mockHeader); + try { + String userId = testSubject.getUserId(httpServletRequestMock); + Assert.assertTrue(userId.equals(mockHeader)); + } catch (PortalAPIException e){ + Assert.fail(); + } + + } + + @Test + public void testGetUserIdException() { + HttpServletRequest httpServletRequestMock = Mockito.mock(HttpServletRequest.class); + try { + testSubject.getUserId(httpServletRequestMock); + } catch (PortalAPIException e){ + Assert.assertTrue(e.getMessage().equals("Failed to get user_id header")); + return; + } + Assert.fail(); + } +} -- cgit 1.2.3-korg