package com.smartitengineering.clientrest.smartuserclientimpl; import com.smartitengineering.user.client.api.LoginResource; import com.smartitengineering.user.client.api.OrganizationResource; import com.smartitengineering.user.client.api.OrganizationsResource; import com.smartitengineering.user.client.api.PrivilegeResource; import com.smartitengineering.user.client.api.PrivilegesResource; import com.smartitengineering.user.client.api.RoleResource; import com.smartitengineering.user.client.api.RolesResource; import com.smartitengineering.user.client.api.RootResource; import com.smartitengineering.user.client.api.SecuredObjectResource; import com.smartitengineering.user.client.api.SecuredObjectsResource; import com.smartitengineering.user.client.api.UserGroup; import com.smartitengineering.user.client.api.UserGroupPrivilegeResource; import com.smartitengineering.user.client.api.UserGroupPrivilegesResource; import com.smartitengineering.user.client.api.UserGroupResource; import com.smartitengineering.user.client.api.UserGroupRoleResource; import com.smartitengineering.user.client.api.UserGroupRolesResource; import com.smartitengineering.user.client.api.UserGroupUserResource; import com.smartitengineering.user.client.api.UserGroupUsersResource; import com.smartitengineering.user.client.api.UserGroupsResource; import com.smartitengineering.user.client.api.UserLinkResource; import com.smartitengineering.user.client.api.UserPrivilegeResource; import com.smartitengineering.user.client.api.UserPrivilegesResource; import com.smartitengineering.user.client.api.UserResource; import com.smartitengineering.user.client.api.UserRolesResource; import com.smartitengineering.user.client.api.UsersResource; import com.smartitengineering.user.client.impl.RootResourceImpl; import com.smartitengineering.user.client.impl.domain.Address; import com.smartitengineering.user.client.impl.domain.BasicIdentity; import com.smartitengineering.user.client.impl.domain.Name; import com.smartitengineering.user.client.impl.domain.Organization; import com.smartitengineering.user.client.impl.domain.Person; import com.smartitengineering.user.client.impl.domain.Privilege; import com.smartitengineering.user.client.impl.domain.SecuredObject; import com.smartitengineering.user.client.impl.domain.User; import com.smartitengineering.user.client.impl.domain.UserPerson; import com.smartitengineering.user.domain.GlobalRole; import com.smartitengineering.util.rest.client.ApplicationWideClientFactoryImpl; import com.sun.jersey.api.client.UniformInterfaceException; import java.io.File; import java.util.List; import javax.ws.rs.core.Response.Status; import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.webapp.WebAppContext; import org.junit.AfterClass; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeansException; import org.springframework.context.support.ClassPathXmlApplicationContext; public class ComprehensiveClientTest { public static final String PASSWORD = "02040250204039"; public static final String USERNAME = "smartadmin@smart-user"; public final String CHITTAGONG = "Chittagong"; public final String DHAKA = "Dhaka"; public final String BANGLADESH = "Bangladesh"; public final String SITEL_ORG_SHORT_NAME = "SITEL"; public final String SITEL_ORG_NAME = "Smart IT EngineeringLtd."; public final String SITEL_ORG_ADMIN_USERNAME = "admin"; public final String SITEL_ORG_USER_USERNAME = "modhu"; public final String SITEL_ADMIN_USER_NAME = "admin"; public final String SITEL_ADMIN_USER_PASSWORD = "adminadmin"; public final String SITEL_USER_GROUP_NAME = "sitel-user-group-1"; public final int ORGANIZATION_NUM_AT_BEGINNING = 1; public final int USER_NUM_AT_BEGINNING = 1; public final int ORG_PRIVILEGES_NUM_AT_BEGINNING = 2; public final int USER_PRIVILEGES_NUM_AT_BEGINNING = 1; public final int ADMIN_USER_PRIVILEGES_NUM_AT_BEGINNING = 2; public final int NUM_OF_USER_GROUPS_AT_BEGINNING = 0; public final int ZERO = 0; public final String ORGS_OID = "test-oid"; public final String ORGS_OID_NAME = "Smart User Organizations"; public final Integer PRIVILEGE_PERMISSION_MASK = 31; public final String USERS_OID_NAME = "smart-user-users"; public final String USERS_OID = "test-user-oid"; private final String SITEL_ADMIN_USER_PRIVILEGE_TEST_1 = "organization-admin-user-privilege-test-1"; private final String SITEL_ADMIN_USER_PRIVILEGE_TEST_2 = "organization-admin-user-privilege-test-2"; private static Server jettyServer; private static final int PORT = 9090; private static OrganizationsResource orgsResource; private static RootResource rootResource; private static RolesResource rolesResource; private static OrganizationResource sitelOrgResource; private static UsersResource sitelUsersResource; private static UserResource sitelUserResource; private static PrivilegesResource sitelPrivsResource; private static UserPrivilegesResource sitelUserPrivsResource; private static UserGroupsResource sitelUserGroupsResource; private static UserGroupResource sitelUserGroupResource; private static UserGroupUsersResource sitelUserGroupUsersResource; private static UserGroupRolesResource sitelUserGroupRolesResource; private static UserGroupPrivilegesResource sitelUserGroupPrivilegesResource; private LoginResource sitelAdminUserLoginResource; private RootResource sitelAdminRootResource; private static final Logger LOGGER = LoggerFactory.getLogger(ComprehensiveClientTest.class); @BeforeClass public static void setup() throws Exception { setupServer(); setupClient(); } protected static void setupServer() throws IllegalStateException, Exception { System.out.println("::: Starting server :::"); jettyServer = new Server(PORT); final String webapp = "./target/smartuser/"; if (!new File(webapp).exists()) { throw new IllegalStateException("WebApp file/dir does not exist!"); } Handler webAppHandler = new WebAppContext(webapp, "/"); jettyServer.setHandler(webAppHandler); jettyServer.start(); } protected static void setupClient() throws BeansException { ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext("config-context.xml"); System.setProperty(ApplicationWideClientFactoryImpl.TRACE, Boolean.TRUE.toString()); } @AfterClass public static void shutdownServer() throws Exception { System.out.println("::: Stopping server :::"); jettyServer.stop(); } private RootResource login(String username, String password) { return RootResourceImpl.getInstance(username, password); } @Test public void testBootstraping() throws InterruptedException { Thread.sleep(4000); rootResource = login(USERNAME, PASSWORD); Assert.assertNotNull(rootResource); LoginResource loginResource = rootResource.getLoginResource(); Assert.assertNotNull(loginResource); rolesResource = loginResource.getRolesResource(); Assert.assertNotNull(rolesResource); OrganizationResource orgResource = loginResource.getOrganizationResource(); Assert.assertNotNull(orgResource); orgsResource = loginResource.getOrganizationsResource(); Assert.assertNotNull(orgsResource); System.out.println("---------------------------------------------------------------------------------Organization resource5 " + orgsResource. getLastReadStateOfEntity().getEntries().size()); Assert.assertEquals(ORGANIZATION_NUM_AT_BEGINNING, orgsResource.getOrganizationResources().size()); UserResource userResource = loginResource.getUserResource(); Assert.assertNotNull(userResource); UserRolesResource userRolesResource = userResource.getRolesResource(); Assert.assertNotNull(userRolesResource); Assert.assertNotNull(userRolesResource.getUserRoleResources()); Assert.assertEquals(1, userRolesResource.getUserRoleResources().size()); Assert.assertEquals(userRolesResource.getUserRoleResources().get(0).getRoleResource().getRole().getName(), GlobalRole.ROLE_ADMIN. toString()); } //Test Started by Uzzal @Test public void doTestCreateOrganization() throws InterruptedException { System.out.println("---------------------------------------------------------------------------------Organization resource4 " + orgsResource. getLastReadStateOfEntity().getEntries().size()); Assert.assertNotNull(orgsResource); Organization org = new Organization(); org.setName(SITEL_ORG_NAME); org.setUniqueShortName(SITEL_ORG_SHORT_NAME); Address address = new Address(); address.setCity(DHAKA); address.setCountry(BANGLADESH); address.setState(DHAKA); address.setStreetAddress("23/B hazi chinu miah road, Mohammadpur"); address.setZip("1207"); org.setAddress(address); OrganizationResource newOrgResource = null; System.out.println("---------------------------------------------------------------------------------Organization resource3 " + orgsResource. getLastReadStateOfEntity().getEntries().size()); try { newOrgResource = orgsResource.create(org); Thread.sleep(1500); System.out.println("Organization created"); } catch (Exception e) { Assert.fail("Failed to create new organization"); } System.out.println("---------------------------------------------------------------------------------Organization resource2 " + orgsResource. getLastReadStateOfEntity().getEntries().size()); sitelOrgResource = newOrgResource; Assert.assertNotNull(newOrgResource); com.smartitengineering.user.client.api.Organization newlyCreatedOrg = newOrgResource.getOrganization(); Assert.assertEquals(org.getName(), newlyCreatedOrg.getName()); System.out.println("---------------------------------------------------------------------------------Organization resource1 " + orgsResource. getLastReadStateOfEntity().getEntries().size()); Assert.assertEquals(ORGANIZATION_NUM_AT_BEGINNING, orgsResource.getOrganizationResources().size()); try { orgsResource.get(); Assert.assertEquals(ORGANIZATION_NUM_AT_BEGINNING + 1, orgsResource.getOrganizationResources().size()); } catch (Exception e) { Assert.fail("Expected Organization number didn't match with the actual number"); } Assert.assertEquals(ORGANIZATION_NUM_AT_BEGINNING + 1, orgsResource.getOrganizationResources().size()); Organization org1 = new Organization(); org1.setName("Agoora Limited"); org1.setUniqueShortName("AGOORA"); Address address1 = new Address(); address1.setCity(DHAKA); address1.setCountry(BANGLADESH); address1.setState(DHAKA); address1.setStreetAddress("15 Dhanmondi, Dhaka"); address1.setZip("1201"); org1.setAddress(address1); try { newOrgResource = orgsResource.create(org1); Thread.sleep(1500); } catch (Exception e) { Assert.fail("Failed to create new organization"); } com.smartitengineering.user.client.api.Organization newlyCreatedOrg1 = newOrgResource.getOrganization(); Assert.assertEquals(org1.getName(), newlyCreatedOrg1.getName()); Assert.assertEquals(ORGANIZATION_NUM_AT_BEGINNING + 1, orgsResource.getOrganizationResources().size()); try { orgsResource.get(); Assert.assertEquals(org1.getName(), newlyCreatedOrg1.getName()); Assert.assertEquals(ORGANIZATION_NUM_AT_BEGINNING + 2, orgsResource.getOrganizationResources().size()); } catch (Exception e) { Assert.fail("Expected organizations number and newly created organization name didn't match with the actual"); } } @Test public void doTestUpdateOrganization() throws InterruptedException { Assert.assertEquals(ORGANIZATION_NUM_AT_BEGINNING + 2, orgsResource.getOrganizationResources().size()); for (OrganizationResource orgIterResource : orgsResource.getOrganizationResources()) { Organization updatableOrganization = (Organization) orgIterResource.getOrganization(); LOGGER.info(updatableOrganization.getUniqueShortName()); if (updatableOrganization.getUniqueShortName().equals("SITEL")) { com.smartitengineering.user.client.api.Organization organization = orgIterResource.getOrganization(); Assert.assertNotNull(organization); Assert.assertNotNull(organization.getAddress()); Assert.assertFalse(CHITTAGONG.equals(organization.getAddress().getCity())); organization.getAddress().setCity(CHITTAGONG); try { orgIterResource.update(); } catch (Exception e) { Assert.fail("Exception due to failure of updating particular orgnization"); } try { orgIterResource.get(); organization = orgIterResource.getOrganizationReloaded(); Assert.assertEquals(CHITTAGONG, organization.getAddress().getCity()); } catch (Exception e) { Assert.fail("Expected city doesn't match with the actual"); } } } } @Test public void doInitialTest() throws InterruptedException { LOGGER.info("starting getting user resource"); sitelUsersResource = sitelOrgResource.getUsersResource(); LOGGER.info("the total number users: " + sitelUsersResource.getUserResources().size()); List<UserResource> userResources = sitelUsersResource.getUserResources(); Assert.assertNotNull(orgsResource); Assert.assertEquals(ORGANIZATION_NUM_AT_BEGINNING + 2, orgsResource.getOrganizationResources().size()); Assert.assertNotNull(sitelUsersResource); Assert.assertEquals(USER_NUM_AT_BEGINNING, sitelUsersResource.getUserResources().size()); Assert.assertEquals(SITEL_ADMIN_USER_NAME, userResources.get(0).getUser().getUser().getUsername()); Assert.assertEquals(SITEL_ADMIN_USER_PASSWORD, userResources.get(0).getUser().getUser().getPassword()); sitelPrivsResource = sitelOrgResource.getPrivilegesResource(); Assert.assertNotNull(sitelPrivsResource); Assert.assertEquals(ORG_PRIVILEGES_NUM_AT_BEGINNING, sitelPrivsResource.getPrivilegeResources().size()); } @Test public void doTestCreateUser() throws InterruptedException { sitelUsersResource = sitelOrgResource.getUsersResource(); Assert.assertNotNull(sitelUsersResource); Assert.assertEquals(USER_NUM_AT_BEGINNING, sitelUsersResource.getUserResources().size()); User user = new User(); user.setUsername("modhu"); user.setPassword("modhu123"); Person person = new Person(); BasicIdentity basicIdentity = new BasicIdentity(); Address address = new Address(); Name name = new Name(); name.setFirstName("S"); name.setLastName("G"); name.setMiddleInitial("S"); basicIdentity.setName(name); basicIdentity.setNationalID("1234567890"); person.setSelf(basicIdentity); address.setCity(DHAKA); address.setStreetAddress("Mohammadpur"); address.setCountry(BANGLADESH); address.setZip("1207"); person.setAddress(address); UserPerson userPerson = new UserPerson(); userPerson.setUser(user); userPerson.setPerson(person); UserResource userResource = null; try { userResource = sitelUsersResource.create(userPerson); Assert.fail("Should not be created without primary Email "); } catch (UniformInterfaceException e) { Assert.assertEquals(Status.INTERNAL_SERVER_ERROR.getStatusCode(), e.getResponse().getStatus()); } person.setPrimaryEmail("subrata@smartitengineering.com"); userPerson.setPerson(person); userResource = sitelUsersResource.create(userPerson); Thread.sleep(1500); sitelUserResource = userResource; Assert.assertEquals(SITEL_ORG_USER_USERNAME, userResource.getUserReloaded().getUser().getUsername()); OrganizationResource organizationResource = sitelUserResource.getOrganizationResource(); Assert.assertNotNull(organizationResource); Assert.assertTrue(organizationResource.getOrganization().getUniqueShortName().equals(sitelOrgResource. getOrganization().getUniqueShortName())); } @Test public void doTestCreateAnotherUser() { sitelUsersResource = sitelOrgResource.getUsersResource(); Assert.assertNotNull(sitelUsersResource); Assert.assertEquals(USER_NUM_AT_BEGINNING + 1, sitelUsersResource.getUserResources().size()); User user = new User(); user.setUsername("russel"); user.setPassword("russel123"); Person person = new Person(); BasicIdentity basicIdentity = new BasicIdentity(); Address address = new Address(); Name name = new Name(); name.setFirstName("Mohiuddin"); name.setLastName("Russel"); name.setMiddleInitial("K"); basicIdentity.setName(name); basicIdentity.setNationalID("9876543210"); person.setSelf(basicIdentity); address.setCity(DHAKA); address.setStreetAddress("Mohammadpur"); address.setCountry(BANGLADESH); address.setZip("1207"); person.setAddress(address); person.setPrimaryEmail("russel@smartitengineering.com"); UserPerson userPerson = new UserPerson(); userPerson.setUser(user); userPerson.setPerson(person); UserResource userResource = null; try { userResource = sitelUsersResource.create(userPerson); Thread.sleep(1500); } catch (Exception e) { Assert.fail("Exception due to failure of creating an userperson"); } Assert.assertEquals("russel", userResource.getUserReloaded().getUser().getUsername()); } // @Test // public void doUserAuthentication() { // RootResource rootResource = RootResourceImpl.getInstance(); // Assert.assertNotNull(rootResource); // LoginResource loginResource = rootResource.performAuthentication("modhu", "123modhu"); // Assert.assertNull(loginResource); // OrganizationResource orgResource = loginResource.getOrganizationResource(); // Assert.assertNotNull(orgResource); // orgsResource = loginResource.getOrganizationsResource(); // Assert.assertNotNull(orgsResource); // } @Test public void doTestUpdateUser() throws InterruptedException { try { Thread.sleep(1500); sitelUsersResource = sitelOrgResource.getUsersResource(); Assert.assertNotNull(sitelUsersResource); Assert.assertEquals(USER_NUM_AT_BEGINNING + 2, sitelUsersResource.getUserResources().size()); } catch (Exception e) { Assert.fail("Expected number of users doesn't match with the actual"); } for (UserResource userIterResource : sitelUsersResource.getUserResources()) { if (userIterResource.getUser().getUser().getUsername().equals("modhu")) { com.smartitengineering.user.client.api.UserPerson userPerson = userIterResource.getUser(); Assert.assertNotNull(userPerson); Assert.assertNotNull(userPerson.getUser().getPassword()); Assert.assertFalse("123modhu".equals(userPerson.getUser().getPassword())); userPerson.getUser().setPassword("123modhu"); Assert.assertNotNull(userPerson.getPerson().getSelf()); Assert.assertNotNull(userPerson.getPerson().getSelf().getName().getFirstName()); Assert.assertFalse("Subrata".equals(userPerson.getPerson().getSelf().getName().getFirstName())); userPerson.getPerson().getSelf().getName().setFirstName("Subrata"); Assert.assertNotNull(userPerson.getPerson().getSelf().getName().getLastName()); Assert.assertFalse("Gupta".equals(userPerson.getPerson().getSelf().getName().getLastName())); userPerson.getPerson().getSelf().getName().setLastName("Gupta"); Assert.assertNotNull(userPerson.getPerson().getAddress()); Assert.assertNotNull(userPerson.getPerson().getAddress().getStreetAddress()); Assert.assertFalse("5 Hazi Chinu Miah Road, Mohammadpur".equals(userPerson.getPerson().getAddress(). getStreetAddress())); userPerson.getPerson().getAddress().setStreetAddress("5 Hazi Chinu Miah Road, Mohammadpur"); Assert.assertFalse("1261".equals(userPerson.getPerson().getAddress().getZip())); userPerson.getPerson().getAddress().setZip("1261"); try { userIterResource.update(); Thread.sleep(5000); } catch (Exception e) { Assert.fail("Exception due to failure of updating particular user information"); } } } try { sitelUsersResource = sitelOrgResource.getUsersResource(); Assert.assertNotNull(sitelUsersResource); Assert.assertEquals(USER_NUM_AT_BEGINNING + 2, sitelUsersResource.getUserResources().size()); } catch (Exception e) { Assert.fail("Expected number of users doesn't match with the actual"); } for (UserResource userIterResource : sitelUsersResource.getUserResources()) { if (userIterResource.getUser().getUser().getUsername().equals("modhu")) { UserPerson userPerson = (UserPerson) userIterResource.getUser(); Assert.assertEquals("123modhu", userPerson.getUser().getPassword()); Assert.assertEquals("Subrata", userPerson.getPerson().getSelf().getName().getFirstName()); Assert.assertEquals("Gupta", userPerson.getPerson().getSelf().getName().getLastName()); Assert.assertEquals("5 Hazi Chinu Miah Road, Mohammadpur", userPerson.getPerson().getAddress().getStreetAddress()); Assert.assertEquals("1261", userPerson.getPerson().getAddress().getZip()); } } System.out.println("end of do test update user"); } @Test public void doTestUserUpdateSelf() throws InterruptedException { System.out.println("starting do test update user self"); RootResource modhuRootResource = login("modhu@SITEL", "123modhu"); LoginResource modhuLoginResource = modhuRootResource.getLoginResource(); UserResource userResource = modhuLoginResource.getUserResource(); User user = (User) userResource.getUser().getUser(); Assert.assertEquals(user.getUsername(), "modhu"); userResource.getUser().getUser().setPassword("modhu123updated"); try { userResource.update(); } catch (Exception e) { Assert.fail("Should not throw any exception"); } Thread.sleep(7000); modhuRootResource = login("modhu@SITEL", "modhu123updated"); UserResource updatedUserResource = modhuRootResource.getLoginResource().getUserResource(); Assert.assertEquals("modhu123updated", updatedUserResource.getUser().getUser().getPassword()); System.out.println("end of do test update user self"); } @Test public void doTestCreatePrivilegesofOrganization() { System.out.println("starting do test create privileges of organization"); try { sitelPrivsResource = sitelOrgResource.getPrivilegesResource(); Assert.assertNotNull(sitelPrivsResource); Assert.assertEquals(ORG_PRIVILEGES_NUM_AT_BEGINNING + 2, sitelPrivsResource.getPrivilegeResources().size()); } catch (Exception e) { Assert.fail("Expected number of privileges doesn't match with the actual number"); } SecuredObjectsResource securedObjectsResource = sitelOrgResource.getSecuredObjectsResource(); // List<SecuredObjectResource> securedObjectResources = securedObjectsResource.getSecuredObjectResources(); SecuredObject securedObjectOrganization = new SecuredObject(); securedObjectOrganization.setName(ORGS_OID_NAME); securedObjectOrganization.setObjectID(ORGS_OID); SecuredObjectResource securedObjectResource = securedObjectsResource.create(securedObjectOrganization); com.smartitengineering.user.client.api.SecuredObject securedObjectApi = securedObjectResource.getSecuredObjcet(); Assert.assertEquals(ORGS_OID_NAME, securedObjectApi.getName()); Privilege privilege = new Privilege(); privilege.setDisplayName("Smart User Adminstration"); privilege.setName(SITEL_ADMIN_USER_PRIVILEGE_TEST_1); privilege.setPermissionMask(PRIVILEGE_PERMISSION_MASK); privilege.setShortDescription("This admin privilege contains the authority to do any of the CRUD options"); privilege.setSecuredObject(securedObjectApi); com.smartitengineering.user.client.api.PrivilegeResource orgPrivilegesResource = null; try { orgPrivilegesResource = sitelPrivsResource.create( privilege); Thread.sleep(1500); } catch (Exception e) { Assert.fail("Exception due to failure of creating organization privileges"); } try { sitelPrivsResource.get(); Assert.assertEquals(ORG_PRIVILEGES_NUM_AT_BEGINNING + 3, sitelPrivsResource.getPrivilegeResources().size()); Assert.assertNotNull(orgPrivilegesResource); Assert.assertEquals("Smart User Adminstration", privilege.getDisplayName()); } catch (Exception e) { Assert.fail("Exception because number of expected privileges didn't match with the actual"); } } @Test public void doTestAddPrivilegesToUser() { sitelPrivsResource = sitelOrgResource.getPrivilegesResource(); sitelUserPrivsResource = sitelUserResource.getPrivilegesResource(); Assert.assertNotNull(sitelUserPrivsResource); Assert.assertEquals(USER_PRIVILEGES_NUM_AT_BEGINNING, sitelUserPrivsResource.getUserPrivilegeResources().size()); SecuredObjectsResource securedObjectsResource = sitelOrgResource.getSecuredObjectsResource(); SecuredObject securedObjectOrganization = new SecuredObject(); SecuredObject securedObjectUser = new SecuredObject(); securedObjectUser.setName(USERS_OID_NAME); securedObjectUser.setObjectID(USERS_OID); securedObjectUser.setParentObjectID(securedObjectOrganization.getObjectID()); SecuredObjectResource securedObjectUserResource = securedObjectsResource.create(securedObjectUser); com.smartitengineering.user.client.api.SecuredObject securedObjectUserApi = securedObjectUserResource. getSecuredObjcet(); Assert.assertEquals(USERS_OID_NAME, securedObjectUserApi.getName()); Assert.assertEquals(USERS_OID, securedObjectUserApi.getObjectID()); Assert.assertEquals(securedObjectOrganization.getObjectID(), securedObjectUserApi.getParentObjectID()); Privilege privilegeUser = new Privilege(); privilegeUser.setDisplayName("Admin User Profile Privilege"); privilegeUser.setName(SITEL_ADMIN_USER_PRIVILEGE_TEST_2); privilegeUser.setPermissionMask(PRIVILEGE_PERMISSION_MASK); privilegeUser.setShortDescription( "This privilege contains the authority to change the password and profile of the organization admin."); privilegeUser.setSecuredObject(securedObjectUserApi); PrivilegeResource privilegeResource = null; try { privilegeResource = sitelPrivsResource.create(privilegeUser); Thread.sleep(1500); } catch (Exception e) { Assert.fail("Exception due to failure of creating privileges for user"); } try { sitelUserPrivsResource.add(privilegeResource.getPrivilege()); } catch (Exception e) { Assert.fail("Exception due to failure of adding privileges to user"); } sitelUserPrivsResource.get(); privilegeUser = (Privilege) privilegeResource.getPrivilege(); Assert.assertEquals(USER_PRIVILEGES_NUM_AT_BEGINNING + 1, sitelUserPrivsResource.getUserPrivilegeResources().size()); Assert.assertEquals("Admin User Profile Privilege", privilegeUser.getDisplayName()); Assert.assertEquals(USERS_OID, privilegeUser.getSecuredObject().getObjectID()); } @Test public void doTestRemoveUserPrivilegeFromUser() throws InterruptedException { sitelUserPrivsResource = sitelUserResource.getPrivilegesResource(); List<UserPrivilegeResource> userPrivilegeResources = sitelUserPrivsResource.getUserPrivilegeResources(); for (UserPrivilegeResource userPrivilegeResource : userPrivilegeResources) { if (userPrivilegeResource.getPrivilegeResource().getPrivilege().getName().equals( SITEL_ADMIN_USER_PRIVILEGE_TEST_2)) { try { userPrivilegeResource.delete(); } catch (Exception e) { Assert.fail("Exception due to failure of deleting the user privilege resource"); } } } Thread.sleep(5500); try { sitelUserPrivsResource.get(); Assert.assertEquals(USER_PRIVILEGES_NUM_AT_BEGINNING, sitelUserPrivsResource.getUserPrivilegeResources().size()); Assert.assertNotNull(sitelUserPrivsResource); } catch (Exception e) { Assert.fail("Exception because expected number of privileges doesn't match with the actual number"); } } @Test public void doTestCreateUserGroup() { sitelUserGroupsResource = sitelOrgResource.getUserGroupsResource(); Assert.assertNotNull(sitelUserGroupsResource); UserGroupResource userGroupResource = null; UserGroup userGroup = new com.smartitengineering.user.client.impl.domain.UserGroup(); userGroup.setName(SITEL_USER_GROUP_NAME); try { userGroupResource = sitelUserGroupsResource.create(userGroup); Thread.sleep(1500); } catch (Exception e) { Assert.fail("Exception due to failure of creation user group"); } sitelUserGroupResource = userGroupResource; sitelUserGroupsResource.get(); Assert.assertNotNull(sitelUserGroupsResource); Assert.assertEquals(NUM_OF_USER_GROUPS_AT_BEGINNING + 1, sitelUserGroupsResource.getUserGroupResources().size()); Assert.assertEquals(SITEL_USER_GROUP_NAME, sitelUserGroupResource.getUserGroup().getName()); } @Test public void doTestAddUsersToUserGroup() { sitelUserGroupUsersResource = sitelUserGroupResource.getUserGroupUsersResource(); Assert.assertEquals(ZERO, sitelUserGroupUsersResource.getUserGroupUserResources().size()); UsersResource usersResource = sitelOrgResource.getUsersResource(); List<UserResource> userResources = usersResource.getUserResources(); for (UserGroupResource userGroupResource : sitelUserGroupsResource.getUserGroupResources()) { if (userGroupResource.getUserGroup().getName().equals(SITEL_USER_GROUP_NAME)) { for (UserResource userResource : userResources) { com.smartitengineering.user.client.api.User user = userResource.getUser().getUser(); if (user.getUsername().equals(SITEL_ORG_USER_USERNAME)) { sitelUserGroupUsersResource.add(user); } } } } sitelUserGroupUsersResource.get(); Assert.assertEquals(1, sitelUserGroupUsersResource.getUserGroupUserResources().size()); } @Test public void doTestRemoveUserFromUserGroup() throws InterruptedException { List<UserGroupUserResource> userGroupUserResources = sitelUserGroupUsersResource.getUserGroupUserResources(); for (UserGroupUserResource userGroupUserResource : userGroupUserResources) { com.smartitengineering.user.client.api.UserPerson user = userGroupUserResource.getUserResource().getUser(); if (user.getUser().getUsername().equals(SITEL_ORG_USER_USERNAME)) { userGroupUserResource.delete(); } } Thread.sleep(5500); sitelUserGroupUsersResource.get(); Assert.assertEquals(0, sitelUserGroupUsersResource.getUserGroupUserResources().size()); } @Test public void doTestAddPrivilegesToUserGroup() throws InterruptedException { sitelUserGroupPrivilegesResource = sitelUserGroupResource.getUserGroupPrivilegesResource(); Assert.assertEquals(ZERO, sitelUserGroupPrivilegesResource.getUserGroupPrivilegeResources().size()); PrivilegesResource privilegesResource = sitelOrgResource.getPrivilegesResource(); List<PrivilegeResource> privilegeResources = privilegesResource.getPrivilegeResources(); for (UserGroupResource userGroupResource : sitelUserGroupsResource.getUserGroupResources()) { if (userGroupResource.getUserGroup().getName().equals(SITEL_USER_GROUP_NAME)) { for (PrivilegeResource privilegeResource : privilegeResources) { com.smartitengineering.user.client.api.Privilege privilege = privilegeResource.getPrivilege(); LOGGER.info("%%%%%%%Privilege Name" + privilege.getName()); if (privilege.getName().equals(SITEL_ADMIN_USER_PRIVILEGE_TEST_2)) { sitelUserGroupPrivilegesResource.add(privilege); } } } } Thread.sleep(1500); sitelUserGroupPrivilegesResource.get(); Assert.assertEquals(1, sitelUserGroupPrivilegesResource.getUserGroupPrivilegeResources().size()); } @Test public void doTestRemovePrivilegeFromUserGroup() { List<UserGroupPrivilegeResource> userGroupPrivilegeResources = sitelUserGroupPrivilegesResource. getUserGroupPrivilegeResources(); for (UserGroupPrivilegeResource userGroupPrivilegeResource : userGroupPrivilegeResources) { com.smartitengineering.user.client.api.Privilege privilege = userGroupPrivilegeResource.getPrivilegeResource(). getPrivilege(); if (privilege.getName().equals(SITEL_ADMIN_USER_PRIVILEGE_TEST_2)) { userGroupPrivilegeResource.delete(); } } sitelUserGroupPrivilegesResource.get(); Assert.assertEquals(0, sitelUserGroupPrivilegesResource.getUserGroupPrivilegeResources().size()); } @Test public void doTestAddRoleToUserGroup() { sitelUserGroupRolesResource = sitelUserGroupResource.getUserGroupRolesResource(); Assert.assertEquals(ZERO, sitelUserGroupRolesResource.getUserGroupRoleResources().size()); List<RoleResource> roleResources = rolesResource.getRoleResources(); for (UserGroupResource userGroupResource : sitelUserGroupsResource.getUserGroupResources()) { if (userGroupResource.getUserGroup().getName().equals(SITEL_USER_GROUP_NAME)) { for (RoleResource roleResource : roleResources) { com.smartitengineering.user.client.api.Role role = roleResource.getRole(); if (role.getName().equals(GlobalRole.ROLE_READ.name())) { sitelUserGroupRolesResource.add(role); } } } } sitelUserGroupRolesResource.get(); Assert.assertEquals(1, sitelUserGroupRolesResource.getUserGroupRoleResources().size()); } @Test public void doTestRemoveRoleFromUserGroup() { List<UserGroupRoleResource> userGroupRoleResources = sitelUserGroupRolesResource.getUserGroupRoleResources(); for (UserGroupRoleResource userGroupRoleResource : userGroupRoleResources) { com.smartitengineering.user.client.api.Role role = userGroupRoleResource.getRoleResource().getRole(); if (role.getName().equals(GlobalRole.ROLE_READ.name())) { userGroupRoleResource.delete(); } } sitelUserGroupRolesResource.get(); Assert.assertEquals(0, sitelUserGroupRolesResource.getUserGroupRoleResources().size()); } // @Test // public void doTestAuthorization() { // doTestAuthoriztionForAdminUser(); // doTestAuthorizationForUser(); // doTestAuthorizationForUserGroup(); // } @Test public void doTestAuthoriztionForAdminUser() { sitelAdminRootResource = login("admin@SITEL", "adminadmin"); sitelAdminUserLoginResource = sitelAdminRootResource.getLoginResource(); Assert.assertNotNull(sitelAdminUserLoginResource); try { sitelAdminUserLoginResource.getOrganizationsResource(); Assert.fail("Should not be able to get the resource"); } catch (UniformInterfaceException e) { Assert.assertEquals(Status.FORBIDDEN.getStatusCode(), e.getResponse().getStatus()); } catch (Exception e) { Assert.fail("Should not throw any other exception"); } try { sitelOrgResource = sitelAdminUserLoginResource.getOrganizationResource(); Assert.assertEquals(SITEL_ORG_SHORT_NAME, sitelOrgResource.getOrganization().getUniqueShortName()); } catch (Exception e) { Assert.fail("Should not throw any exception"); } try { sitelUsersResource = sitelOrgResource.getUsersResource(); Assert.assertEquals(USER_NUM_AT_BEGINNING + 2, sitelUsersResource.getUserResources().size()); } catch (Exception e) { Assert.fail("Should not throw any exception"); } try { sitelPrivsResource = sitelOrgResource.getPrivilegesResource(); } catch (Exception e) { Assert.fail("Should not throw any exception"); } for (PrivilegeResource privilegeResource : sitelPrivsResource.getPrivilegeResources()) { if (privilegeResource.getPrivilege().getName().equals(SITEL_ADMIN_USER_PRIVILEGE_TEST_2)) { com.smartitengineering.user.client.api.Privilege privilege = privilegeResource.getPrivilege(); privilege.setDisplayName(privilege.getDisplayName() + "_updated"); privilegeResource.update(); } } UserResource sitelAdminUserResource = sitelAdminUserLoginResource.getUserResource(); UserPrivilegesResource sitelAdminUserPrivilegesResource = sitelAdminUserResource.getPrivilegesResource(); Assert.assertEquals(ADMIN_USER_PRIVILEGES_NUM_AT_BEGINNING, sitelAdminUserPrivilegesResource. getUserPrivilegeResources().size()); List<PrivilegeResource> privilegeResources = sitelPrivsResource.getPrivilegeResources(); for (PrivilegeResource privilegeResource : privilegeResources) { com.smartitengineering.user.client.api.Privilege privilege = privilegeResource.getPrivilege(); if (privilege.getName().equals(SITEL_ADMIN_USER_PRIVILEGE_TEST_2)) { sitelAdminUserPrivilegesResource.add(privilege); } } sitelAdminUserPrivilegesResource.get(); Assert.assertEquals(ADMIN_USER_PRIVILEGES_NUM_AT_BEGINNING + 1, sitelAdminUserPrivilegesResource. getUserPrivilegeResources().size()); User user = new User(); user.setUsername("saumitra"); user.setPassword("saumitra123"); Person person = new Person(); person.setPrimaryEmail("saumitra@smartitengineering.com"); UserPerson userPerson = new UserPerson(); userPerson.setUser(user); userPerson.setPerson(person); UserResource saumitraUserResource = sitelUsersResource.create(userPerson); Assert.assertEquals("saumitra", saumitraUserResource.getUser().getUser().getUsername()); UserPrivilegesResource saumitraPrivilegesResource = saumitraUserResource.getPrivilegesResource(); for (PrivilegeResource privilegeResource : privilegeResources) { com.smartitengineering.user.client.api.Privilege privilege = privilegeResource.getPrivilege(); if (privilege.getName().contains("SITEL-admin")) { saumitraPrivilegesResource.add(privilege); } } } @Test public void doTestGetUser() { rootResource = login("smartadmin@smart-user", "02040250204039"); Assert.assertNotNull(rootResource); LoginResource loginResource = rootResource.getLoginResource(); Assert.assertNotNull(loginResource); UserLinkResource userLinkResource = loginResource.getUserLinkResource("smartadmin@smart-user"); Assert.assertNotNull(loginResource); com.smartitengineering.user.client.api.User user = userLinkResource.getUserResource().getUser().getUser(); Assert.assertTrue(user.getUsername().equals("smartadmin")); Assert.assertTrue(user.getPassword().equals("02040250204039")); } @Test public void doTestAuthorizationForUser() throws InterruptedException { Thread.sleep(3400); RootResource saumitraRootResource = login("saumitra@SITEL", "saumitra123"); verifyAdminPrivilege(saumitraRootResource); sitelOrgResource = saumitraRootResource.getLoginResource().getOrganizationResource(); List<UserGroupResource> userGroupResources = sitelOrgResource.getUserGroupsResource().getUserGroupResources(); for (UserGroupResource userGroupResource : userGroupResources) { if (userGroupResource.getUserGroup().getName().equals(SITEL_USER_GROUP_NAME)) { sitelUserGroupUsersResource = userGroupResource.getUserGroupUsersResource(); sitelUserGroupPrivilegesResource = userGroupResource.getUserGroupPrivilegesResource(); } } Assert.assertEquals(ZERO, sitelUserGroupUsersResource.getUserGroupUserResources().size()); Assert.assertEquals(ZERO, sitelUserGroupPrivilegesResource.getUserGroupPrivilegeResources().size()); UsersResource usersResource = sitelOrgResource.getUsersResource(); List<UserResource> userResources = usersResource.getUserResources(); PrivilegesResource privilegesResource = sitelOrgResource.getPrivilegesResource(); List<PrivilegeResource> privilegeResources = privilegesResource.getPrivilegeResources(); UserGroupUserResource sitelUserGroupUserResource; UserGroupPrivilegeResource sitelUserGroupPrivilegeResource; for (UserGroupResource userGroupResource : sitelUserGroupsResource.getUserGroupResources()) { if (userGroupResource.getUserGroup().getName().equals(SITEL_USER_GROUP_NAME)) { for (UserResource userResource : userResources) { com.smartitengineering.user.client.api.User user = userResource.getUser().getUser(); if (user.getUsername().equals(SITEL_ORG_USER_USERNAME)) { try { sitelUserGroupUserResource = sitelUserGroupUsersResource.add(user); } catch (Exception e) { Assert.fail("should not throw any exception"); } } } for (PrivilegeResource privilegeResource : privilegeResources) { com.smartitengineering.user.client.api.Privilege privilege = privilegeResource.getPrivilege(); if (privilege.getName().contains("SITEL-admin")) { try { sitelUserGroupPrivilegeResource = sitelUserGroupPrivilegesResource.add(privilege); } catch (Exception e) { Assert.fail("should not throw any exception"); } } } } } } @Test public void doTestAuthorizationForUserGroup() { RootResource modhuRootResource = login("modhu@SITEL", "modhu123updated"); verifyAdminPrivilege(modhuRootResource); } @Test public void doTestDeleteOrganization() throws InterruptedException { rootResource = login(USERNAME, PASSWORD); System.out.println("------------------------------------------------------------------Smart admin re login"); LoginResource loginResource = rootResource.getLoginResource(); orgsResource = loginResource.getOrganizationsResource(); UsersResource usersResource; PrivilegesResource privsResource; List<OrganizationResource> organizationResources = loginResource.getOrganizationsResource().getOrganizationResources(); for (OrganizationResource organizationResource : organizationResources) { if (organizationResource.getOrganization().getUniqueShortName().equals("SITEL")) { usersResource = organizationResource.getUsersResource(); Assert.assertNotNull(usersResource); privsResource = organizationResource.getPrivilegesResource(); Assert.assertNotNull(privsResource); sitelUsersResource = usersResource; sitelPrivsResource = privsResource; } } sitelUserPrivsResource.get(); Assert.assertEquals(ORGANIZATION_NUM_AT_BEGINNING + 2, orgsResource.getOrganizationResources().size()); Assert.assertNotNull(sitelUsersResource); Assert.assertEquals(USER_NUM_AT_BEGINNING + 3, sitelUsersResource.getUserResources().size()); Assert.assertNotNull(sitelPrivsResource); Assert.assertEquals(ORG_PRIVILEGES_NUM_AT_BEGINNING + 5, sitelPrivsResource.getPrivilegeResources().size()); try { sitelUsersResource = sitelOrgResource.getUsersResource(); sitelPrivsResource = sitelOrgResource.getPrivilegesResource(); sitelUserPrivsResource = sitelUserResource.getPrivilegesResource(); } catch (Exception e) { Assert.fail("Exception due to failure to get userresource and privilegesresource"); } System.out.println("-------------------Start"); for (OrganizationResource orgIterResource : orgsResource.getOrganizationResources()) { System.out.println("------------------------ orgname " + orgIterResource.getOrganization().getUniqueShortName()); if (orgIterResource.getOrganization().getUniqueShortName().equals("SITEL")) { try { orgIterResource.delete(); } catch (Exception e) { Assert.fail("Exception due to failure of deleting the organization"); } } } Thread.sleep(5500); } @Test public void doTestUsersAndPrivsAfterRemovingOrg() throws InterruptedException { RootResource adminRootResource = login(USERNAME, PASSWORD); orgsResource = adminRootResource.getLoginResource().getOrganizationsResource(); List<OrganizationResource> organizationResources = orgsResource.getOrganizationResources(); for (OrganizationResource organizationResource : organizationResources) { if (organizationResource.getOrganization().getUniqueShortName().equals("SITEL")) { Assert.fail("SITEL organization should not exist"); } } } public void verifyAdminPrivilege(RootResource adminPrivilegeTestRootResource) { LoginResource loginResource = adminPrivilegeTestRootResource.getLoginResource(); Assert.assertNotNull(loginResource); OrganizationResource orgResource; try { loginResource.getOrganizationsResource(); Assert.fail("Should not be able to get the resource"); } catch (UniformInterfaceException e) { Assert.assertEquals(Status.FORBIDDEN.getStatusCode(), e.getResponse().getStatus()); } catch (Exception e) { Assert.fail("Should not throw any other exception"); } try { Thread.sleep(5500); loginResource.getOrganizationResource(); } catch (Exception e) { Assert.fail("Should not throw any exception"); } try { orgResource = loginResource.getOrganizationResource(); } catch (Exception e) { Assert.fail("Should not throw any exception"); } } //Test Ended by Uzzal { }