Repository: usergrid Updated Branches: refs/heads/USERGRID-1187 [created] 5c70fbf86
Adding tests and fix for duplicate org administrators for collection connections. Only service level verification Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/5c70fbf8 Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/5c70fbf8 Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/5c70fbf8 Branch: refs/heads/USERGRID-1187 Commit: 5c70fbf86cc0aa7d8f0fd9558de56b58f3e169e9 Parents: 2867d26 Author: George Reyes <[email protected]> Authored: Wed Dec 30 13:01:54 2015 -0800 Committer: George Reyes <[email protected]> Committed: Wed Dec 30 13:01:54 2015 -0800 ---------------------------------------------------------------------- .../rest/management/OrganizationsIT.java | 61 ++++++++++++++++++++ .../cassandra/ManagementServiceImpl.java | 6 ++ 2 files changed, 67 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/usergrid/blob/5c70fbf8/stack/rest/src/test/java/org/apache/usergrid/rest/management/OrganizationsIT.java ---------------------------------------------------------------------- diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/management/OrganizationsIT.java b/stack/rest/src/test/java/org/apache/usergrid/rest/management/OrganizationsIT.java index 3acdfd5..cd3929d 100644 --- a/stack/rest/src/test/java/org/apache/usergrid/rest/management/OrganizationsIT.java +++ b/stack/rest/src/test/java/org/apache/usergrid/rest/management/OrganizationsIT.java @@ -18,8 +18,10 @@ package org.apache.usergrid.rest.management; import java.io.IOException; +import java.util.ArrayList; import java.util.HashMap; import java.util.Map; +import java.util.TreeMap; import org.apache.usergrid.java.client.exception.ClientException; import org.apache.usergrid.rest.test.resource.model.*; @@ -385,6 +387,65 @@ public class OrganizationsIT extends AbstractRestIT { } + @Test + public void testOrganizationNoDuplicateConnectionsPUT() throws Exception { + + RestClient restClient = clientSetup.getRestClient(); + + //Setup what will be interested into the organization + Map<String, Object> properties = new HashMap<String, Object>(); + Entity entity = new Entity( properties ); + + Organization orgPayload = clientSetup.getOrganization(); + orgPayload.put( "properties", properties ); + + + //retrieve the organization + Organization orgResponse = management().orgs().org( clientSetup.getOrganizationName() ).get(); + + + this.refreshIndex(); + //attempt to post duplicate connection + Entity userPostResponse = management().orgs().org( clientSetup.getOrganizationName() ).users().user( clientSetup.getEmail() ).put( entity ); + + Entity duplicateConnectionAdmins = management().orgs().org( clientSetup.getOrganizationName() ).users().get( Entity.class ); + ArrayList organizationAdminUsers = ( ArrayList ) duplicateConnectionAdmins.get( "data" ); + assertEquals(1,organizationAdminUsers.size() ); + + } + + @Test + public void testOrganizationNoDuplicateConnectionsPOST() throws Exception { + + RestClient restClient = clientSetup.getRestClient(); + + //Setup what will be interested into the organization + Map<String, Object> properties = new HashMap<String, Object>(); + properties.put( "email",clientSetup.getEmail() ); + Entity entity = new Entity( properties ); + + Organization orgPayload = clientSetup.getOrganization(); + orgPayload.put( "properties", properties ); + + + //retrieve the organization + Organization orgResponse = management().orgs().org( clientSetup.getOrganizationName() ).get(); + + + this.refreshIndex(); + //attempt to post duplicate connection + try { + Entity userPostResponse = management().orgs().org( clientSetup.getOrganizationName() ).users().post( Entity.class, entity ); + }catch(Exception e){ + //nom nom nom + } + + Entity duplicateConnectionAdmins = management().orgs().org( clientSetup.getOrganizationName() ).users().get( Entity.class ); + ArrayList organizationAdminUsers = ( ArrayList ) duplicateConnectionAdmins.get( "data" ); + assertEquals(1,organizationAdminUsers.size() ); + + } + /** * Create an organization payload with almost the same value for everyfield. * @param baseName http://git-wip-us.apache.org/repos/asf/usergrid/blob/5c70fbf8/stack/services/src/main/java/org/apache/usergrid/management/cassandra/ManagementServiceImpl.java ---------------------------------------------------------------------- diff --git a/stack/services/src/main/java/org/apache/usergrid/management/cassandra/ManagementServiceImpl.java b/stack/services/src/main/java/org/apache/usergrid/management/cassandra/ManagementServiceImpl.java index af70966..e1f36de 100644 --- a/stack/services/src/main/java/org/apache/usergrid/management/cassandra/ManagementServiceImpl.java +++ b/stack/services/src/main/java/org/apache/usergrid/management/cassandra/ManagementServiceImpl.java @@ -1608,6 +1608,12 @@ public class ManagementServiceImpl implements ManagementService { } EntityManager em = emf.getEntityManager( smf.getManagementAppId() ); + + if(em.getCollection(organization.getUuid() ,"users",Query.fromQL( "select * where uuid ="+user.getUuid() ),Level.IDS ).size() >0){ + logger.trace( "Found value: {} already in collection",user.getName() ); + return; + } + em.addToCollection(new SimpleEntityRef(Group.ENTITY_TYPE, organization.getUuid()), "users", new SimpleEntityRef(User.ENTITY_TYPE, user.getUuid()));
