diff options
Diffstat (limited to 'ecomp-sdk/epsdk-aaf/src/test/java/org/onap/portalsdk/external/authorization/service/UserApiServiceImplTest.java')
-rw-r--r-- | ecomp-sdk/epsdk-aaf/src/test/java/org/onap/portalsdk/external/authorization/service/UserApiServiceImplTest.java | 313 |
1 files changed, 313 insertions, 0 deletions
diff --git a/ecomp-sdk/epsdk-aaf/src/test/java/org/onap/portalsdk/external/authorization/service/UserApiServiceImplTest.java b/ecomp-sdk/epsdk-aaf/src/test/java/org/onap/portalsdk/external/authorization/service/UserApiServiceImplTest.java new file mode 100644 index 00000000..d93b03c1 --- /dev/null +++ b/ecomp-sdk/epsdk-aaf/src/test/java/org/onap/portalsdk/external/authorization/service/UserApiServiceImplTest.java @@ -0,0 +1,313 @@ +/*- + * ============LICENSE_START========================================== + * ONAP Portal SDK + * =================================================================== + * Copyright (C) 2018 AT&T Intellectual Property. All rights reserved. + * =================================================================== + * + * Unless otherwise specified, all software contained herein is licensed + * under the Apache License, Version 2.0 (the "License"); + * you may not use this software 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. + * + * Unless otherwise specified, all documentation contained herein is licensed + * under the Creative Commons License, Attribution 4.0 Intl. (the "License"); + * you may not use this documentation except in compliance with the License. + * You may obtain a copy of the License at + * + * https://creativecommons.org/licenses/by/4.0/ + * + * Unless required by applicable law or agreed to in writing, documentation + * 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.onap.portalsdk.external.authorization.service; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; + +import java.util.ArrayList; +import java.util.Date; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.TreeSet; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.json.JSONObject; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Matchers; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.MockitoAnnotations; +import org.onap.portalsdk.core.command.PostSearchBean; +import org.onap.portalsdk.core.command.support.SearchResult; +import org.onap.portalsdk.core.domain.App; +import org.onap.portalsdk.core.domain.Role; +import org.onap.portalsdk.core.domain.RoleFunction; +import org.onap.portalsdk.core.domain.User; +import org.onap.portalsdk.core.domain.UserApp; +import org.onap.portalsdk.core.service.AppService; +import org.onap.portalsdk.core.service.DataAccessService; +import org.onap.portalsdk.core.service.LdapService; +import org.onap.portalsdk.core.service.PostSearchService; +import org.onap.portalsdk.core.util.SystemProperties; +import org.onap.portalsdk.external.authorization.util.EcompExternalAuthProperties; +import org.onap.portalsdk.external.authorization.util.EcompExternalAuthUtils; +import org.onap.portalsdk.external.framework.MockitoTestSuite; +import org.powermock.api.mockito.PowerMockito; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.client.RestTemplate; + +import com.fasterxml.jackson.databind.ObjectMapper; + +@SuppressWarnings({ "rawtypes", "unchecked" }) +@RunWith(PowerMockRunner.class) +@PrepareForTest({ EcompExternalAuthProperties.class, EcompExternalAuthUtils.class }) +public class UserApiServiceImplTest { + + private static final String APP_ID = "appId"; + + private static final String PRIORITY = "priority"; + + private static final String ACTIVE = "active"; + + private static final String ROLE_NAME = "name"; + + private static final String APP_ROLE_ID = "appRoleId"; + + private static final String ID = "id"; + + @InjectMocks + private UserApiServiceImpl UserApiServiceImpl; + + @Mock + private DataAccessService dataAccessService; + + @Mock + private LoginExternalAuthService loginAAFService; + + @Mock + private LdapService ldapService; + + @Mock + private PostSearchService postSearchService; + + @Mock + private AppService appService; + + @Mock + RestTemplate template = new RestTemplate(); + + @Before + public void setup() throws Exception { + PowerMockito.mockStatic(EcompExternalAuthProperties.class); + PowerMockito.mockStatic(EcompExternalAuthUtils.class); + PowerMockito.mockStatic(SystemProperties.class); + Mockito.when(EcompExternalAuthProperties.getProperty(EcompExternalAuthProperties.EXTERNAL_AUTH_NAMESPACE)) + .thenReturn("com.test.app2"); + Mockito.when(EcompExternalAuthUtils.base64encodeKeyForAAFBasicAuth()).thenReturn(new HttpHeaders()); + Mockito.when(EcompExternalAuthProperties.getProperty(EcompExternalAuthProperties.EXTERNAL_AUTH_USER_DOMAIN)) + .thenReturn("@test.com"); + MockitoAnnotations.initMocks(this); + } + + MockitoTestSuite mockitoTestSuite = new MockitoTestSuite(); + + HttpServletRequest mockedRequest = mockitoTestSuite.getMockedRequest(); + HttpServletResponse mockedResponse = mockitoTestSuite.getMockedResponse(); + + private User userObj() { + User user = new User(); + user.setEmail("test@mail.com"); + user.setFirstName("Test_firstname"); + user.setHrid("test_hrid"); + user.setJobTitle("test_jobtitle"); + user.setLastName("test_lastname"); + user.setLoginId("test123"); + user.setOrgManagerUserId("test456"); + user.setMiddleInitial("test_middlename"); + user.setOrgCode("testcode"); + user.setOrgId(1l); + user.setOrgUserId("test123"); + user.setActive(true); + user.setLastLoginDate(new Date()); + RoleFunction roleFunction = new RoleFunction(); + roleFunction.setId(12L); + roleFunction.setName("Role Function"); + + Set roleFunctions = new TreeSet(); + roleFunctions.add(roleFunction); + + Role role = new Role(); + role.setName("Role"); + role.setActive(true); + role.setRoleFunctions(roleFunctions); + Set userApps = new TreeSet(); + UserApp userApp = new UserApp(); + userApp.setUserId(1L); + userApp.setApp(getApp()); + userApp.setRole(role); + userApps.add(userApp); + user.setUserApps(userApps); + return user; + } + + public App getApp() { + App app = new App(); + app.setId(new Long(1)); + app.setName("Default"); + return app; + } + + @Test + public void getUserTest() throws Exception { + ObjectMapper mapper = new ObjectMapper(); + Map<String, String> roleDesc = new LinkedHashMap<>(); + roleDesc.put(ID, "1"); + roleDesc.put(ROLE_NAME, "test_role"); + roleDesc.put(ACTIVE, String.valueOf(true)); + roleDesc.put(PRIORITY, String.valueOf(1)); + roleDesc.put(APP_ID, String.valueOf(1)); + roleDesc.put(APP_ROLE_ID, String.valueOf(1l)); + String addDesc = mapper.writeValueAsString(roleDesc); + JSONObject mockJsonObjectRole = new JSONObject(); + JSONObject mockJsonObjectRole2 = new JSONObject(); + JSONObject mockJsonObjectRole3 = new JSONObject(); + JSONObject mockJsonObjectRole4 = new JSONObject(); + JSONObject mockJsonObjectRole5 = new JSONObject(); + JSONObject mockJsonObjectPerm1 = new JSONObject(); + JSONObject mockJsonObjectPerm2 = new JSONObject(); + mockJsonObjectPerm1.put("type", "com.test.app2.test_type"); + mockJsonObjectPerm1.put("instance", "test_instance"); + mockJsonObjectPerm1.put("action", "*"); + mockJsonObjectPerm2.put("type", "com.test.app.test_type2"); + mockJsonObjectPerm2.put("instance", "test_instance2"); + mockJsonObjectPerm2.put("action", "*"); + List<JSONObject> permsList = new ArrayList<>(); + permsList.add(mockJsonObjectPerm1); + permsList.add(mockJsonObjectPerm2); + mockJsonObjectRole.put("name", "com.test.app2.test_role"); + mockJsonObjectRole2.put("name", "com.test.app2.test_role2"); + mockJsonObjectRole2.put("perms", permsList); + mockJsonObjectRole2.put("description", addDesc); + mockJsonObjectRole3.put("name", "com.test.app2.Account_Administrator"); + mockJsonObjectRole4.put("name", "com.test.app2.admin"); + mockJsonObjectRole5.put("name", "com.test.app2.owner"); + List<JSONObject> userRolesList = new ArrayList<>(); + JSONObject mockJsonObjectFinalUserRole = new JSONObject(); + userRolesList.add(mockJsonObjectRole); + userRolesList.add(mockJsonObjectRole2); + userRolesList.add(mockJsonObjectRole3); + userRolesList.add(mockJsonObjectRole4); + userRolesList.add(mockJsonObjectRole5); + mockJsonObjectFinalUserRole.put("role", userRolesList); + Mockito.when(EcompExternalAuthUtils.isJSONValid(addDesc)).thenReturn(true); + ResponseEntity<String> response = new ResponseEntity<>(mockJsonObjectFinalUserRole.toString(), HttpStatus.OK); + Mockito.when(template.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET), + Matchers.<HttpEntity<String>>any(), Matchers.eq(String.class))).thenReturn(response); + Mockito.when(EcompExternalAuthUtils.checkNameSpaceMatching(Matchers.anyString(), Matchers.anyString())) + .thenReturn(true); + Mockito.when(loginAAFService.findUserWithoutPwd("test123")).thenReturn(userObj()); + Mockito.when(appService.getApp(1l)).thenReturn(getApp()); + User actual = UserApiServiceImpl.getUser("test123", mockedRequest); + assertNotNull(actual); + } + + @Test + public void getNewUserNullExceptionTest() throws Exception { + JSONObject mockJsonObjectRole = new JSONObject(); + JSONObject mockJsonObjectRole2 = new JSONObject(); + JSONObject mockJsonObjectRole3 = new JSONObject(); + JSONObject mockJsonObjectPerm1 = new JSONObject(); + JSONObject mockJsonObjectPerm2 = new JSONObject(); + mockJsonObjectPerm1.put("type", "com.test.app2.test_type"); + mockJsonObjectPerm1.put("instance", "test_instance"); + mockJsonObjectPerm1.put("action", "*"); + mockJsonObjectPerm2.put("type", "com.test.app.test_type2"); + mockJsonObjectPerm2.put("instance", "test_instance2"); + mockJsonObjectPerm2.put("action", "*"); + List<JSONObject> permsList = new ArrayList<>(); + permsList.add(mockJsonObjectPerm1); + permsList.add(mockJsonObjectPerm2); + mockJsonObjectRole.put("name", "com.test.app2.test_role"); + mockJsonObjectRole2.put("name", "com.test.app2.test_role2"); + mockJsonObjectRole2.put("perms", permsList); + mockJsonObjectRole3.put("name", "com.test.app2.Account_Administrator"); + List<JSONObject> userRolesList = new ArrayList<>(); + JSONObject mockJsonObjectFinalUserRole = new JSONObject(); + userRolesList.add(mockJsonObjectRole); + userRolesList.add(mockJsonObjectRole2); + userRolesList.add(mockJsonObjectRole3); + mockJsonObjectFinalUserRole.put("role", userRolesList); + ResponseEntity<String> response = new ResponseEntity<>(mockJsonObjectFinalUserRole.toString(), HttpStatus.OK); + Mockito.when(template.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET), + Matchers.<HttpEntity<String>>any(), Matchers.eq(String.class))).thenReturn(response); + Mockito.when(EcompExternalAuthUtils.checkNameSpaceMatching(Matchers.anyString(), Matchers.anyString())) + .thenReturn(true); + Mockito.when(loginAAFService.findUserWithoutPwd("test123")).thenReturn(null); + Mockito.when(appService.getApp(1l)).thenReturn(getApp()); + PostSearchBean postSearchBean = new PostSearchBean(); + postSearchBean.setOrgUserId("test123"); + SearchResult result = new SearchResult(); + result.add(userObj()); + Mockito.when(ldapService.searchPost(postSearchBean.getUser(), postSearchBean.getSortBy1(), + postSearchBean.getSortBy2(), postSearchBean.getSortBy3(), postSearchBean.getPageNo(), + postSearchBean.getNewDataSize(), 1)).thenReturn(result); + User user = UserApiServiceImpl.getUser("test123", mockedRequest); + assertNull(user); + } + + @Test + public void getRoleFunctionsTest() throws Exception { + JSONObject mockJsonObjectPerms = new JSONObject(); + JSONObject mockJsonObjectPerm1 = new JSONObject(); + JSONObject mockJsonObjectPerm2 = new JSONObject(); + JSONObject mockJsonObjectPerm3 = new JSONObject(); + mockJsonObjectPerm1.put("type", "com.test.app2.test_type"); + mockJsonObjectPerm1.put("instance", "test_instance"); + mockJsonObjectPerm1.put("action", "*"); + mockJsonObjectPerm2.put("type", "com.test.app2.test_type2"); + mockJsonObjectPerm2.put("instance", "test_instance2"); + mockJsonObjectPerm2.put("action", "*"); + mockJsonObjectPerm2.put("description", "test_name"); + mockJsonObjectPerm3.put("type", "com.test.app3.test_type3"); + mockJsonObjectPerm3.put("instance", "test_instance3"); + mockJsonObjectPerm3.put("action", "*"); + List<JSONObject> permsList = new ArrayList<>(); + permsList.add(mockJsonObjectPerm1); + permsList.add(mockJsonObjectPerm2); + mockJsonObjectPerms.put("perm", permsList); + ResponseEntity<String> response = new ResponseEntity<>(mockJsonObjectPerms.toString(), HttpStatus.OK); + Mockito.when(template.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET), + Matchers.<HttpEntity<String>>any(), Matchers.eq(String.class))).thenReturn(response); + List<RoleFunction> actual = UserApiServiceImpl.getRoleFunctions("test123"); + assertNotNull(actual); + } +} |