You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by sn...@apache.org on 2016/04/26 17:02:52 UTC

[28/50] [abbrv] usergrid git commit: Added code fix for 500 errors when not using a token. Now accepts client credentials as well.

Added code fix for 500 errors when not using a token. Now accepts client credentials as well.


Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/3a442b0b
Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/3a442b0b
Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/3a442b0b

Branch: refs/heads/asf-site
Commit: 3a442b0bb580e6917ece785ffae5e9b47484f092
Parents: a462244
Author: George Reyes <gr...@apache.org>
Authored: Wed Apr 13 12:59:45 2016 -0700
Committer: George Reyes <gr...@apache.org>
Committed: Wed Apr 13 12:59:45 2016 -0700

----------------------------------------------------------------------
 .../collection/CollectionsResourceIT.java       | 40 ++++++++++++++++++++
 .../rest/test/resource/ClientSetup.java         | 10 +++++
 .../services/AbstractCollectionService.java     | 23 +++++++++--
 3 files changed, 70 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/usergrid/blob/3a442b0b/stack/rest/src/test/java/org/apache/usergrid/rest/applications/collection/CollectionsResourceIT.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/applications/collection/CollectionsResourceIT.java b/stack/rest/src/test/java/org/apache/usergrid/rest/applications/collection/CollectionsResourceIT.java
index e0b75ba..d052564 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/applications/collection/CollectionsResourceIT.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/applications/collection/CollectionsResourceIT.java
@@ -25,6 +25,7 @@ import org.apache.usergrid.persistence.entities.Application;
 import org.apache.usergrid.rest.test.resource.AbstractRestIT;
 import org.apache.usergrid.rest.test.resource.model.ApiResponse;
 import org.apache.usergrid.rest.test.resource.model.Collection;
+import org.apache.usergrid.rest.test.resource.model.Credentials;
 import org.apache.usergrid.rest.test.resource.model.Entity;
 import org.apache.usergrid.rest.test.resource.model.QueryParameters;
 import org.apache.usergrid.rest.test.resource.model.Token;
@@ -37,6 +38,9 @@ import org.slf4j.LoggerFactory;
 
 import javax.ws.rs.BadRequestException;
 import javax.ws.rs.ClientErrorException;
+import javax.ws.rs.client.Invocation;
+import javax.ws.rs.core.MediaType;
+
 import java.io.IOException;
 import java.util.HashMap;
 import java.util.LinkedHashMap;
@@ -119,6 +123,42 @@ public class CollectionsResourceIT extends AbstractRestIT {
     }
 
     @Test
+    public void postToCollectionSchemaUsingOrgAppCreds(){
+        //Creating schema.
+        //this could be changed to a hashmap.
+        ArrayList<String> indexingArray = new ArrayList<>(  );
+
+
+        //field "fields" is required.
+        Entity payload = new Entity();
+        payload.put( "fields", indexingArray);
+
+
+        Credentials appCredentials = clientSetup.getAppCredentials();
+
+
+        try {
+
+            this.pathResource( getOrgAppPath( "testcollections/_indexes" ) ).post( false, payload,
+                new QueryParameters().addParam( "grant_type", "client_credentials" ).addParam( "client_id",
+                    String.valueOf( ( ( Map ) appCredentials.get( "credentials" ) ).get( "client_id" ) ) )
+                                     .addParam( "client_secret", String.valueOf(
+                                         ( ( Map ) appCredentials.get( "credentials" ) ).get( "client_secret" ) ) ) );
+        }catch(Exception e){
+            fail("This should return a success.");
+        }
+
+        refreshIndex();
+
+
+        Collection collection = this.app().collection( "testCollections" ).collection( "_index" ).get();
+
+        LinkedHashMap testCollectionSchema = (LinkedHashMap)collection.getResponse().getData();
+        assertEquals( "app credentials",testCollectionSchema.get( "lastUpdateBy" ) );
+        assertEquals( 0,testCollectionSchema.get( "lastReindexed" ) );
+    }
+
+    @Test
     public void deleteCollectionSchema() throws Exception {
         //Creating schema.
         //this could be changed to a hashmap.

http://git-wip-us.apache.org/repos/asf/usergrid/blob/3a442b0b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource/ClientSetup.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource/ClientSetup.java b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource/ClientSetup.java
index 2a13880..38a7e12 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource/ClientSetup.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource/ClientSetup.java
@@ -49,6 +49,7 @@ public class ClientSetup implements TestRule {
     protected String superuserName = "superuser";
     protected String superuserPassword = "superpassword";
     protected Credentials clientCredentials;
+    protected Credentials appCredentials;
 
     protected Organization organization;
     protected Entity application;
@@ -108,11 +109,16 @@ public class ClientSetup implements TestRule {
         restClient.management().token().get(username, password);
 
         clientCredentials = restClient.management().orgs().org(orgName).credentials().get(Credentials.class);
+        //appCredentials = restClient.management().orgs().org(orgName).app().path//.credentials().get(Credentials.class);
+
 
         ApiResponse appResponse = restClient.management().orgs()
             .org(organization.getName()).app().post(new Application(appName));
         appUuid = (String) appResponse.getEntities().get(0).get("uuid");
         application = new Application(appResponse);
+
+        appCredentials = restClient.pathResource( "management/orgs/"+orgName+"/apps/"+appName+"/credentials" ).get( Credentials.class,true );
+
         refreshIndex();
 
         ApiResponse response = restClient.management().token().post(new Token(username, password));
@@ -163,6 +169,10 @@ public class ClientSetup implements TestRule {
         return clientCredentials;
     }
 
+    public Credentials getAppCredentials(){
+        return appCredentials;
+    }
+
     public void refreshIndex() {
         this.restClient.refreshIndex(getOrganizationName(), getAppName(),
             CpNamingUtils.getManagementApplicationId().getUuid().toString());

http://git-wip-us.apache.org/repos/asf/usergrid/blob/3a442b0b/stack/services/src/main/java/org/apache/usergrid/services/AbstractCollectionService.java
----------------------------------------------------------------------
diff --git a/stack/services/src/main/java/org/apache/usergrid/services/AbstractCollectionService.java b/stack/services/src/main/java/org/apache/usergrid/services/AbstractCollectionService.java
index 8b23e7a..c5473cf 100644
--- a/stack/services/src/main/java/org/apache/usergrid/services/AbstractCollectionService.java
+++ b/stack/services/src/main/java/org/apache/usergrid/services/AbstractCollectionService.java
@@ -38,6 +38,8 @@ import org.apache.usergrid.persistence.exceptions.EntityNotFoundException;
 import org.apache.usergrid.persistence.exceptions.UnexpectedEntityTypeException;
 import org.apache.usergrid.persistence.Query.Level;
 import org.apache.usergrid.security.shiro.principals.AdminUserPrincipal;
+import org.apache.usergrid.security.shiro.principals.ApplicationPrincipal;
+import org.apache.usergrid.security.shiro.principals.PrincipalIdentifier;
 import org.apache.usergrid.security.shiro.utils.SubjectUtils;
 import org.apache.usergrid.services.ServiceResults.Type;
 import org.apache.usergrid.services.exceptions.ForbiddenServiceOperationException;
@@ -334,11 +336,26 @@ public class AbstractCollectionService extends AbstractService {
         ServiceContext context = serviceRequest.getAppContext();
 
         checkPermissionsForCollection( context );
+        //TODO: write rest test for these line of codes
         Subject currentUser = SubjectUtils.getSubject();
-        Object currentUser2 =currentUser.getPrincipal();
+        Object currentUserPrincipal =currentUser.getPrincipal();
 
-        Map collectionSchema = em.createCollectionSchema(context.getCollectionName(),
-            ( ( AdminUserPrincipal ) currentUser2 ).getUser().getEmail(),context.getProperties());
+        Map collectionSchema = null;
+
+        if(currentUserPrincipal instanceof AdminUserPrincipal) {
+            AdminUserPrincipal adminUserPrincipal = ( AdminUserPrincipal ) currentUserPrincipal;
+
+            collectionSchema = em.createCollectionSchema( context.getCollectionName(),
+                adminUserPrincipal.getUser().getEmail(), context.getProperties() );
+        }
+        else if(currentUserPrincipal instanceof ApplicationPrincipal){
+            collectionSchema = em.createCollectionSchema( context.getCollectionName(),
+                "app credentials", context.getProperties() );
+        }
+        else if ( currentUserPrincipal instanceof PrincipalIdentifier ) {
+            collectionSchema = em.createCollectionSchema( context.getCollectionName(),
+                "generic credentials", context.getProperties() );
+        }
 
         return new ServiceResults( this, context, Type.COLLECTION, Results.fromData( collectionSchema ), null, null );