This is an automated email from the ASF dual-hosted git repository. smarru pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/airavata-custos.git
commit 20e50106dba1251e62abb74073aa5f675874e5a6 Author: Aarushi <[email protected]> AuthorDate: Mon Aug 19 21:27:55 2019 -0400 addes user profile test cases --- .../src/main/resources/custos-server.properties | 3 +- .../src/main/resources/META-INF/persistence.xml | 1 - .../user-profile-service/pom.xml | 14 +++ .../user/handler/UserProfileServiceHandler.java | 18 ++-- .../test/java/TestUserProfileServiceHandler.java | 110 +++++++++++++++++++++ .../src/main/resources/custos-server.properties | 3 +- .../src/main/resources/docker-compose.yml | 2 +- pom.xml | 2 + 8 files changed, 139 insertions(+), 14 deletions(-) diff --git a/ide-integration/src/main/resources/custos-server.properties b/custos-commons/src/main/resources/custos-server.properties similarity index 98% copy from ide-integration/src/main/resources/custos-server.properties copy to custos-commons/src/main/resources/custos-server.properties index 4d75666..d9d59c3 100644 --- a/ide-integration/src/main/resources/custos-server.properties +++ b/custos-commons/src/main/resources/custos-server.properties @@ -54,8 +54,9 @@ in.memory.cache.size=1000 # Profile Service Configuration ########################################################################### profile.service.server.host=0.0.0.0 -profile.service.server.port=8963 +profile.service.server.port=9092 profile_service=org.apache.custos.profile.server.ProfileServiceServer + # MariaDB properties profile.service.jdbc.url=jdbc:mariadb://localhost:13306/profile_service profile.service.jdbc.user=root diff --git a/custos-profile-service/profile-service-commons/src/main/resources/META-INF/persistence.xml b/custos-profile-service/profile-service-commons/src/main/resources/META-INF/persistence.xml index f0a162e..4b92928 100644 --- a/custos-profile-service/profile-service-commons/src/main/resources/META-INF/persistence.xml +++ b/custos-profile-service/profile-service-commons/src/main/resources/META-INF/persistence.xml @@ -24,7 +24,6 @@ <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider> <class>org.apache.custos.profile.commons.user.entities.UserProfileEntity</class> <class>org.apache.custos.profile.commons.user.entities.NSFDemographicsEntity</class> - <class>org.apache.custos.profile.commons.user.entities.CustomizedDashboardEntity</class> <class>org.apache.custos.profile.commons.tenant.entities.GatewayEntity</class> <exclude-unlisted-classes>true</exclude-unlisted-classes> diff --git a/custos-profile-service/user-profile-service/pom.xml b/custos-profile-service/user-profile-service/pom.xml index 4afd95c..ec79614 100644 --- a/custos-profile-service/user-profile-service/pom.xml +++ b/custos-profile-service/user-profile-service/pom.xml @@ -34,6 +34,20 @@ <artifactId>iam-admin-services</artifactId> <version>${project.version}</version> </dependency> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>${junit.version}</version> + <scope>test</scope> + </dependency> + <!-- https://mvnrepository.com/artifact/org.jmockit/jmockit --> + <dependency> + <groupId>org.jmockit</groupId> + <artifactId>jmockit</artifactId> + <version>${jmockit.version}</version> + <scope>test</scope> + </dependency> + </dependencies> diff --git a/custos-profile-service/user-profile-service/src/main/java/org/apache/custos/profile/user/handler/UserProfileServiceHandler.java b/custos-profile-service/user-profile-service/src/main/java/org/apache/custos/profile/user/handler/UserProfileServiceHandler.java index 317eb51..e29b39d 100644 --- a/custos-profile-service/user-profile-service/src/main/java/org/apache/custos/profile/user/handler/UserProfileServiceHandler.java +++ b/custos-profile-service/user-profile-service/src/main/java/org/apache/custos/profile/user/handler/UserProfileServiceHandler.java @@ -27,13 +27,13 @@ import org.apache.custos.commons.model.security.UserInfo; import org.apache.custos.commons.utils.Constants; import org.apache.custos.commons.utils.CustosUtils; import org.apache.custos.commons.utils.ServerSettings; +import org.apache.custos.profile.commons.repositories.UserProfileRepository; import org.apache.custos.profile.iam.admin.services.client.CustosIamAdminServiceClient; import org.apache.custos.profile.iam.admin.services.cpi.IamAdminServices; import org.apache.custos.profile.iam.admin.services.cpi.exception.IamAdminServicesException; import org.apache.custos.profile.model.user.Status; import org.apache.custos.profile.model.user.UserProfile; import org.apache.custos.profile.model.user.user_profile_modelConstants; -import org.apache.custos.profile.commons.repositories.UserProfileRepository; import org.apache.custos.profile.user.cpi.UserProfileService; import org.apache.custos.profile.user.cpi.exception.UserProfileServiceException; import org.apache.custos.security.manager.CustosSecurityManager; @@ -62,7 +62,6 @@ public class UserProfileServiceHandler implements UserProfileService.Iface { } @Override - //@SecurityCheck public UserProfile initializeUserProfile(AuthzToken authzToken) throws UserProfileServiceException { String gatewayId = authzToken.getClaimsMap().get(Constants.GATEWAY_ID); try { @@ -100,7 +99,6 @@ public class UserProfileServiceHandler implements UserProfileService.Iface { } @Override - //@SecurityCheck public UserProfile addUserProfile(AuthzToken authzToken, UserProfile userProfile) throws UserProfileServiceException { try{ // Lowercase user id and internal id @@ -122,7 +120,6 @@ public class UserProfileServiceHandler implements UserProfileService.Iface { } @Override - //@SecurityCheck public UserProfile updateUserProfile(AuthzToken authzToken, UserProfile userProfile) throws UserProfileServiceException { try { // After updating the user profile in the database but before committing the transaction, the @@ -157,8 +154,7 @@ public class UserProfileServiceHandler implements UserProfileService.Iface { } @Override - //@SecurityCheck - public UserProfile getUserProfileById(AuthzToken authzToken, String userId, String gatewayId) throws UserProfileServiceException,TException { + public UserProfile getUserProfileById(AuthzToken authzToken, String userId, String gatewayId) throws UserProfileServiceException { try{ UserProfile userProfile = userProfileRepository.getUserProfileByIdAndGateWay(userId, gatewayId); if(userProfile != null) @@ -174,8 +170,7 @@ public class UserProfileServiceHandler implements UserProfileService.Iface { } @Override - //@SecurityCheck - public UserProfile deleteUserProfile(AuthzToken authzToken, String userId, String gatewayId) throws UserProfileServiceException,TException { + public UserProfile deleteUserProfile(AuthzToken authzToken, String userId, String gatewayId) throws UserProfileServiceException { UserProfile userProfile = null; try{ // find user-profile @@ -184,17 +179,20 @@ public class UserProfileServiceHandler implements UserProfileService.Iface { // delete user boolean deleteSuccess = userProfileRepository.delete(userId); logger.info("Delete UserProfile with userId: " + userId + ", " + (deleteSuccess? "Success!" : "Failed!")); + if(deleteSuccess){ + return userProfile; + }else { + throw new Exception("Deleting of user profile with userId: "+ userId + "was not successful"); + } } catch (Exception e) { logger.error("Error while deleting user profile", e); UserProfileServiceException exception = new UserProfileServiceException(); exception.setMessage("Error while deleting user profile. More info : " + e.getMessage()); throw exception; } - return userProfile; } @Override - //@SecurityCheck public List<UserProfile> getAllUserProfilesInGateway(AuthzToken authzToken, String gatewayId, int offset, int limit) throws UserProfileServiceException { try{ List<UserProfile> usersInGateway = userProfileRepository.getAllUserProfilesInGateway(gatewayId, offset, limit); diff --git a/custos-profile-service/user-profile-service/src/test/java/TestUserProfileServiceHandler.java b/custos-profile-service/user-profile-service/src/test/java/TestUserProfileServiceHandler.java new file mode 100644 index 0000000..b88cee2 --- /dev/null +++ b/custos-profile-service/user-profile-service/src/test/java/TestUserProfileServiceHandler.java @@ -0,0 +1,110 @@ +import mockit.*; +import mockit.integration.junit4.JMockit; +import org.apache.custos.commons.exceptions.CustosSecurityException; +import org.apache.custos.commons.model.security.AuthzToken; +import org.apache.custos.commons.model.security.UserInfo; +import org.apache.custos.commons.utils.Constants; +import org.apache.custos.profile.model.user.UserProfile; +import org.apache.custos.profile.user.cpi.exception.UserProfileServiceException; +import org.apache.custos.profile.user.handler.UserProfileServiceHandler; +import org.apache.custos.security.manager.CustosSecurityManager; +import org.apache.custos.security.manager.SecurityManagerFactory; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + +import java.util.HashMap; +import java.util.List; + +import static org.junit.Assert.*; + +@RunWith(JMockit.class) +public class TestUserProfileServiceHandler { + + private static String GATEWAY_ID = "test-gateway"; + private static String USER_NAME = "default-user"; + private static AuthzToken authzToken = new AuthzToken(); + private static String NEW_USER_ID = "test-username"; + private int NUMBER_OF_USERS = 1; + @Tested + private static UserProfileServiceHandler userProfileServiceHandler; + @Mocked + private static CustosSecurityManager mockedSecurityManager; + + @Before + public void setUp() throws CustosSecurityException { + HashMap<String,String> map = new HashMap<>(); + map.put(Constants.GATEWAY_ID, GATEWAY_ID); + map.put(Constants.USER_NAME, USER_NAME); + authzToken.setClaimsMap(map); + authzToken.setAccessToken("access token"); + } + @After + public void cleanUp() { + + } + @Test + public void testInitializeUserProfileWhenUserProfileDoesNotExist(@Mocked CustosSecurityManager mockedSecurityManager) throws UserProfileServiceException, CustosSecurityException { + UserInfo userInfo = new UserInfo(); + userInfo.setUsername("test-username"); + userInfo.setEmailAddress("[email protected]"); + userInfo.setFirstName("test-first-name"); + userInfo.setLastName("test-last-name"); + new MockUp<SecurityManagerFactory>() { + @Mock + public CustosSecurityManager getSecurityManager(){return mockedSecurityManager;}; + }; + new Expectations() {{ mockedSecurityManager.getUserInfoFromAuthzToken(authzToken); result = userInfo;}}; + + UserProfile createdUserProfile = userProfileServiceHandler.initializeUserProfile(authzToken); + assertNotNull(createdUserProfile); + assertEquals(userInfo.getUsername().toLowerCase(), createdUserProfile.getUserId()); + assertEquals(GATEWAY_ID,createdUserProfile.getGatewayId()); + } + @Test + public void testInitializeUserProfileWhenUserProfileExists(@Mocked CustosSecurityManager mockedSecurityManager) throws UserProfileServiceException, CustosSecurityException{ + UserInfo userInfo = new UserInfo(); + userInfo.setUsername("test-username"); + userInfo.setEmailAddress("[email protected]"); + userInfo.setFirstName("someother-test-first-name"); + userInfo.setLastName("someother-test-last-name"); + String old_email_address = "[email protected]"; + new MockUp<SecurityManagerFactory>() { + @Mock + public CustosSecurityManager getSecurityManager(){return mockedSecurityManager;}; + }; + new Expectations() {{ mockedSecurityManager.getUserInfoFromAuthzToken(authzToken); result = userInfo;}}; + + UserProfile createdUserProfile = userProfileServiceHandler.initializeUserProfile(authzToken); + assertNotNull(createdUserProfile); + assertEquals(old_email_address,createdUserProfile.getEmails().get(0)); + assertEquals(userInfo.getUsername().toLowerCase(), createdUserProfile.getUserId()); + assertEquals(GATEWAY_ID,createdUserProfile.getGatewayId()); + } + @Test + public void testGetAllUserProfilesInGateway() throws UserProfileServiceException{ + List<UserProfile> allGatewayUsers = userProfileServiceHandler.getAllUserProfilesInGateway(authzToken, GATEWAY_ID, 0, 0); + assertEquals(NUMBER_OF_USERS, allGatewayUsers.size()); + } + @Test + public void testDoesUserExistWhenUserExists()throws UserProfileServiceException{ + boolean shouldBeTrue = userProfileServiceHandler.doesUserExist(authzToken, "test-username", "test-gateway"); + assertTrue(shouldBeTrue); + } + @Test + public void testDoesUserExistWhenUserDoesNotExist()throws UserProfileServiceException{ + boolean shouldBeFalse = userProfileServiceHandler.doesUserExist(authzToken, "does-not-exist", "default"); + assertFalse(shouldBeFalse); + + } + @Test + //TODO: check + public void testDeleteUserProfile() throws UserProfileServiceException{ + UserProfile userProfile = userProfileServiceHandler.deleteUserProfile(authzToken, NEW_USER_ID, GATEWAY_ID); + assertNotNull(userProfile); + assertEquals(NEW_USER_ID, userProfile.getUserId()); + NUMBER_OF_USERS = 0; + //testGetAllUserProfilesInGateway(); + } +} diff --git a/ide-integration/src/main/resources/custos-server.properties b/ide-integration/src/main/resources/custos-server.properties index 4d75666..d9d59c3 100644 --- a/ide-integration/src/main/resources/custos-server.properties +++ b/ide-integration/src/main/resources/custos-server.properties @@ -54,8 +54,9 @@ in.memory.cache.size=1000 # Profile Service Configuration ########################################################################### profile.service.server.host=0.0.0.0 -profile.service.server.port=8963 +profile.service.server.port=9092 profile_service=org.apache.custos.profile.server.ProfileServiceServer + # MariaDB properties profile.service.jdbc.url=jdbc:mariadb://localhost:13306/profile_service profile.service.jdbc.user=root diff --git a/ide-integration/src/main/resources/docker-compose.yml b/ide-integration/src/main/resources/docker-compose.yml index 7ede3bf..5ced9a8 100644 --- a/ide-integration/src/main/resources/docker-compose.yml +++ b/ide-integration/src/main/resources/docker-compose.yml @@ -23,5 +23,5 @@ services: - ./database_scripts/init:/docker-entrypoint-initdb.d - ./database_data:/var/lib/mysql ports: - - "13306:3307" + - "13306:3306" command: ['mysqld', '--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci', '--sql_mode='] \ No newline at end of file diff --git a/pom.xml b/pom.xml index 6979179..e0524c7 100644 --- a/pom.xml +++ b/pom.xml @@ -30,6 +30,8 @@ <log4j.version>1.2.17</log4j.version> <thrift.version>0.12.0</thrift.version> <openjpa.version>2.4.3</openjpa.version> + <junit.version>4.8.1</junit.version> + <jmockit.version>1.8</jmockit.version> </properties> <dependencies> <dependency>
