You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by gr...@apache.org on 2015/06/04 20:25:49 UTC

incubator-usergrid git commit: [USERGRID-613] Fixed errors with running index endpoint. Added testing compatibility in rest test framework for index tests. (i.e adding a call for basic auth ) Added debugging for finding out if you are a superuser or not.

Repository: incubator-usergrid
Updated Branches:
  refs/heads/USERGRID-613 [created] 81148fcad


[USERGRID-613] Fixed errors with running index endpoint.
Added testing compatibility in rest test framework for index tests. (i.e adding a call for basic auth )
Added debugging for finding out if you are a superuser or not.
Added test for rebuilding endpoint and ignored previous unused test as fixing and adding tests for that should be a separate issue.


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

Branch: refs/heads/USERGRID-613
Commit: 81148fcad209ed153e930d73798a3f6330f23ce1
Parents: 283cc1f
Author: GERey <gr...@apigee.com>
Authored: Thu Jun 4 11:25:46 2015 -0700
Committer: GERey <gr...@apigee.com>
Committed: Thu Jun 4 11:25:46 2015 -0700

----------------------------------------------------------------------
 .../index/ReIndexRequestBuilderImpl.java        |   2 +-
 .../org/apache/usergrid/rest/IndexResource.java |   7 +-
 .../security/SecuredResourceFilterFactory.java  |   2 +
 .../apache/usergrid/rest/IndexResourceIT.java   | 101 +++++++++++++------
 .../rest/management/ManagementResourceIT.java   |   2 +-
 .../test/resource2point0/AbstractRestIT.java    |   4 +-
 .../endpoints/NamedResource.java                |  37 +++++--
 7 files changed, 113 insertions(+), 42 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/81148fca/stack/core/src/main/java/org/apache/usergrid/corepersistence/index/ReIndexRequestBuilderImpl.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/index/ReIndexRequestBuilderImpl.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/index/ReIndexRequestBuilderImpl.java
index 25e71e6..e93ccf1 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/index/ReIndexRequestBuilderImpl.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/index/ReIndexRequestBuilderImpl.java
@@ -62,7 +62,7 @@ public class ReIndexRequestBuilderImpl implements ReIndexRequestBuilder {
             this.withCollectionName = Optional.absent();
         }
         else {
-            this.withCollectionName = Optional.fromNullable( CpNamingUtils.getEdgeTypeFromCollectionName( collectionName ) );
+            this.withCollectionName = Optional.fromNullable( CpNamingUtils.getEdgeTypeFromCollectionName( collectionName.toLowerCase() ) );
         }
         return this;
     }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/81148fca/stack/rest/src/main/java/org/apache/usergrid/rest/IndexResource.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/main/java/org/apache/usergrid/rest/IndexResource.java b/stack/rest/src/main/java/org/apache/usergrid/rest/IndexResource.java
index ffb9700..5c6cec1 100644
--- a/stack/rest/src/main/java/org/apache/usergrid/rest/IndexResource.java
+++ b/stack/rest/src/main/java/org/apache/usergrid/rest/IndexResource.java
@@ -41,6 +41,7 @@ import org.springframework.context.annotation.Scope;
 import org.springframework.stereotype.Component;
 
 import org.apache.usergrid.corepersistence.index.ReIndexRequestBuilder;
+import org.apache.usergrid.corepersistence.index.ReIndexRequestBuilderImpl;
 import org.apache.usergrid.corepersistence.index.ReIndexService;
 import org.apache.usergrid.persistence.index.utils.UUIDUtils;
 import org.apache.usergrid.rest.security.annotations.RequireSystemAccess;
@@ -64,6 +65,7 @@ public class IndexResource extends AbstractContextResource {
     private static final String UPDATED_FIELD = "updated";
 
 
+
     public IndexResource() {
         super();
     }
@@ -199,7 +201,7 @@ public class IndexResource extends AbstractContextResource {
 
 
     @RequireSystemAccess
-    @POST
+    @PUT
     @Path( "rebuild/management" )
     public JSONWithPadding rebuildInternalIndexesPut( final Map<String, Object> payload,
                                                       @QueryParam( "callback" ) @DefaultValue( "callback" )
@@ -250,7 +252,8 @@ public class IndexResource extends AbstractContextResource {
 
 
     private ReIndexRequestBuilder createRequest() {
-        return createRequest();
+        //TODO: wire this up through spring, and in the future guice.
+        return new ReIndexRequestBuilderImpl();
     }
 
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/81148fca/stack/rest/src/main/java/org/apache/usergrid/rest/security/SecuredResourceFilterFactory.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/main/java/org/apache/usergrid/rest/security/SecuredResourceFilterFactory.java b/stack/rest/src/main/java/org/apache/usergrid/rest/security/SecuredResourceFilterFactory.java
index 202eb31..551c687 100644
--- a/stack/rest/src/main/java/org/apache/usergrid/rest/security/SecuredResourceFilterFactory.java
+++ b/stack/rest/src/main/java/org/apache/usergrid/rest/security/SecuredResourceFilterFactory.java
@@ -300,11 +300,13 @@ public class SecuredResourceFilterFactory implements ResourceFilterFactory {
             logger.debug( "SystemFilter.authorize" );
             try {
                 if ( !request.isUserInRole( "sysadmin" ) ) {
+                    logger.debug( "You are not the system admin." );
                     throw mappableSecurityException( "unauthorized", "No system access authorized",
                             SecurityException.REALM );
                 }
             }
             catch ( IllegalStateException e ) {
+                logger.debug( "This is an invalid state",e );
                 if ( ( request.getUserPrincipal() == null ) || !"sysadmin"
                         .equals( request.getUserPrincipal().getName() ) ) {
                     throw mappableSecurityException( "unauthorized", "No system access authorized",

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/81148fca/stack/rest/src/test/java/org/apache/usergrid/rest/IndexResourceIT.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/IndexResourceIT.java b/stack/rest/src/test/java/org/apache/usergrid/rest/IndexResourceIT.java
index afb9610..c0580d4 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/IndexResourceIT.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/IndexResourceIT.java
@@ -32,8 +32,12 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.UUID;
 
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.fail;
+import org.apache.usergrid.rest.test.resource2point0.AbstractRestIT;
+import org.apache.usergrid.rest.test.resource2point0.model.*;
+import org.apache.usergrid.rest.test.resource2point0.model.ApiResponse;
+
+import static org.junit.Assert.assertNotNull;
+
 
 /**
  * test index creation
@@ -41,8 +45,8 @@ import static org.junit.Assert.fail;
 public class IndexResourceIT extends AbstractRestIT {
 
 
-    @Rule
-    public TestContextSetup context = new TestContextSetup( this );
+//    @Rule
+//    public TestContextSetup context = new TestContextSetup( this );
     //Used for all MUUserResourceITTests
     private Logger LOG = LoggerFactory.getLogger(IndexResourceIT.class);
 
@@ -50,33 +54,70 @@ public class IndexResourceIT extends AbstractRestIT {
 
     }
 
-    @Ignore( "will finish when tests are working from rest" )
+//    @Ignore( "will finish when tests are working from rest" )
+//    @Test
+//    public void TestAddIndex() throws Exception{
+//
+//        String superToken = superAdminToken();
+//
+//        Map<String, Object> data = new HashMap<String, Object>();
+//        data.put( "replicas", 0 );
+//        data.put( "shards", 1 );
+//        data.put( "writeConsistency", "one" );
+//
+//        UUID appId = this.context.getAppUuid();
+//
+//        // change the password as admin. The old password isn't required
+//        JsonNode node = null;
+//        try {
+//            node = mapper.readTree(resource().path("/system/index/" + appId)
+//                    .queryParam("access_token", superToken)
+//                    .accept(MediaType.APPLICATION_JSON).type(MediaType.APPLICATION_JSON_TYPE)
+//                    .post(String.class, data));
+//        } catch (Exception e) {
+//            LOG.error("failed", e);
+//            fail(e.toString());
+//        }
+//        assertNull( getError( node ) );
+//
+//        refreshIndex("test-organization", "test-app");
+//
+//    }
+
+
+    /**
+     * checks that reindex endpoint is case insensitive
+     */
     @Test
-    public void TestAddIndex() throws Exception{
-
-        String superToken = superAdminToken();
-
-        Map<String, Object> data = new HashMap<String, Object>();
-        data.put( "replicas", 0 );
-        data.put( "shards", 1 );
-        data.put( "writeConsistency", "one" );
-
-        UUID appId = this.context.getAppUuid();
-
-        // change the password as admin. The old password isn't required
-        JsonNode node = null;
-        try {
-            node = mapper.readTree(resource().path("/system/index/" + appId)
-                    .queryParam("access_token", superToken)
-                    .accept(MediaType.APPLICATION_JSON).type(MediaType.APPLICATION_JSON_TYPE)
-                    .post(String.class, data));
-        } catch (Exception e) {
-            LOG.error("failed", e);
-            fail(e.toString());
-        }
-        assertNull( getError( node ) );
-
-        refreshIndex("test-organization", "test-app");
+    public void testCaseReindexEndpoint() {
+
+        //Create Collection
+        Map payload = new HashMap<>(  );
+        payload.put( "name","wazer wifle!!" );
+        ApiResponse collectionResponse = clientSetup.getRestClient()
+            .pathResource( getOrgAppPath( "storelatlons" ) ).post( payload );
+
+        assertNotNull( collectionResponse );
+
+        //try reindex endpoint with ALl mixed case characters
+        Token superUserToken = clientSetup.getRestClient().management().token().get(clientSetup.getSuperuserName(),clientSetup.getSuperuserPassword());
+
+        QueryParameters queryParameters = new QueryParameters();
+        queryParameters.addParam( "access_token",superUserToken.getAccessToken());
+        ApiResponse result = clientSetup.getRestClient()
+                                   .pathResource( "system/index/rebuild/"+clientSetup.getAppUuid()+"/StOrElaTloNs" )
+                                   .post( false, ApiResponse.class, null, queryParameters, true );
+
+        assertNotNull(result);
+
+        //try the reindex endpoint with all lowercase Characters
+        queryParameters = new QueryParameters();
+        queryParameters.addParam( "access_token",clientSetup.getSuperuserToken().getAccessToken() );
+        result = clientSetup.getRestClient()
+                                        .pathResource( "system/index/rebuild/"+clientSetup.getAppUuid()+"/storelatlons" )
+                                        .post( false, ApiResponse.class,null,queryParameters,true);
+
+        assertNotNull( result );
 
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/81148fca/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java b/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java
index f361e8b..25736f7 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java
@@ -457,7 +457,7 @@ public class ManagementResourceIT extends AbstractRestIT {
         assertNotNull(response.get("email").toString());
 
         // now revoke the tokens
-        response = management.users().user(clientSetup.getUsername()).revokeTokens().post(true,Entity.class,null, null);
+        response = management.users().user(clientSetup.getUsername()).revokeTokens().post(true,Entity.class,null, null,false);
 
         // the tokens shouldn't work
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/81148fca/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/AbstractRestIT.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/AbstractRestIT.java b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/AbstractRestIT.java
index 29b6414..a7cf04a 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/AbstractRestIT.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/AbstractRestIT.java
@@ -172,13 +172,13 @@ public class AbstractRestIT extends JerseyTest {
 
     protected Token getAdminToken(String username, String password){
         return this.clientSetup.getRestClient().management().token().post(false,Token.class,
-                new Token(username, password),null
+                new Token(username, password),null,false
         );
     }
 
     protected Token getAdminToken(){
         return this.clientSetup.getRestClient().management().token().post(false,Token.class,
-                new Token(this.clientSetup.getUsername(),this.clientSetup.getUsername()),null
+                new Token(this.clientSetup.getUsername(),this.clientSetup.getUsername()),null,false
         );
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/81148fca/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/NamedResource.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/NamedResource.java b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/NamedResource.java
index f5083ba..69d2fcf 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/NamedResource.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/NamedResource.java
@@ -33,6 +33,8 @@ import java.util.Set;
 import java.util.UUID;
 
 import javax.ws.rs.core.MediaType;
+
+import com.sun.jersey.api.client.filter.HTTPBasicAuthFilter;
 import com.sun.jersey.api.representation.Form;
 import org.jclouds.openstack.v2_0.domain.Extension;
 
@@ -164,12 +166,12 @@ public class NamedResource implements UrlResource {
      */
     //For edge cases like Organizations and Tokens
     public ApiResponse  post(Map map) {
-        return post(true,ApiResponse.class,map,null);
+        return post(true,ApiResponse.class,map,null,false);
 
     }
     //For edge cases like Organizations and Tokens
     public ApiResponse  post(boolean useToken, Map map, QueryParameters queryParameters) {
-        return post(true,ApiResponse.class,map,queryParameters);
+        return post(useToken,ApiResponse.class,map,queryParameters,false);
 
     }
     /**
@@ -181,7 +183,7 @@ public class NamedResource implements UrlResource {
      */
     //For edge cases like Organizations and Tokens
     public <T> T post(Class<T> type) {
-        return post(true,type,null,null);
+        return post(true,type,null,null,false);
 
     }
 
@@ -195,7 +197,7 @@ public class NamedResource implements UrlResource {
      */
     //For edge cases like Organizations and Tokens
     public <T> T post(Class<T> type, Entity requestEntity) {
-        return post(true,type,requestEntity,null);
+        return post(true,type,requestEntity,null,false);
 
     }
 
@@ -209,7 +211,7 @@ public class NamedResource implements UrlResource {
      */
     //For edge cases like Organizations and Tokens
     public <T> T post(Class<T> type, Map requestEntity) {
-        return post(true,type,requestEntity,null);
+        return post(true,type,requestEntity,null,false);
 
     }
 
@@ -232,7 +234,7 @@ public class NamedResource implements UrlResource {
 
 
     //Used for empty posts
-    public <T> T post( boolean useToken, Class<T> type, Map entity, final QueryParameters queryParameters ) {
+    public <T> T post( boolean useToken, Class<T> type, Map entity, final QueryParameters queryParameters) {
         WebResource resource = getResource(useToken);
         resource = addParametersToResource(resource, queryParameters);
         WebResource.Builder builder = resource
@@ -248,6 +250,29 @@ public class NamedResource implements UrlResource {
 
     }
 
+    //Used for empty posts
+    public <T> T post( boolean useToken, Class<T> type, Map entity, final QueryParameters queryParameters, boolean useBasicAuthentication ) {
+        WebResource resource = getResource(useToken);
+        resource = addParametersToResource(resource, queryParameters);
+        WebResource.Builder builder = resource
+            .type(MediaType.APPLICATION_JSON_TYPE)
+            .accept( MediaType.APPLICATION_JSON );
+
+        if(entity!=null){
+            builder.entity(entity);
+        }
+
+        if(useBasicAuthentication){
+            //added httpBasicauth filter to all setup calls because they all do verification this way.
+            HTTPBasicAuthFilter httpBasicAuthFilter = new HTTPBasicAuthFilter( "superuser","superpassword" );
+            resource.addFilter( httpBasicAuthFilter );
+        }
+
+        GenericType<T> gt = new GenericType<>((Class) type);
+        return builder
+            .post(gt.getRawClass());
+
+    }
 
     //For edge cases like Organizations and Tokens without any payload
     public <T> T get(Class<T> type) {