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) {