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 2015/06/22 17:40:54 UTC
[22/22] incubator-usergrid git commit: Merge branch 'two-dot-o' into
two-dot-o-dev.
Merge branch 'two-dot-o' into two-dot-o-dev.
Conflicts:
stack/rest/src/main/java/org/apache/usergrid/rest/IndexResource.java
stack/rest/src/test/java/org/apache/usergrid/rest/IndexResourceIT.java
stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/ClientSetup.java
stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/RestClient.java
stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/ApplicationResource.java
Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/69aecffb
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/69aecffb
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/69aecffb
Branch: refs/heads/two-dot-o-dev
Commit: 69aecffb754f8cb213f4a9728839587bb7c79080
Parents: 2423840 81082f3
Author: Dave Johnson <dm...@apigee.com>
Authored: Mon Jun 22 11:21:30 2015 -0400
Committer: Dave Johnson <dm...@apigee.com>
Committed: Mon Jun 22 11:21:30 2015 -0400
----------------------------------------------------------------------
.../main/resources/usergrid-core-context.xml | 2 +-
.../org/apache/usergrid/rest/IndexResource.java | 39 +-
.../apache/usergrid/rest/IndexResourceIT.java | 14 +-
.../applications/ApplicationResourceIT.java | 126 +++-
.../rest/test/resource2point0/ClientSetup.java | 32 +-
.../rest/test/resource2point0/RestClient.java | 8 +-
.../endpoints/NamedResource.java | 29 +-
.../endpoints/SystemResource.java | 21 +
.../endpoints/mgmt/ApplicationResource.java | 2 +-
stack/rest/src/test/resources/log4j.properties | 30 +-
.../cassandra/ManagementServiceImpl.java | 3 +-
.../apache/usergrid/security/shiro/Realm.java | 2 +-
.../security/shiro/utils/SubjectUtils.java | 4 +-
.../apache/usergrid/management/EmailFlowIT.java | 6 +-
.../org/apache/usergrid/tools/ExportAdmins.java | 469 +++++++++++----
.../org/apache/usergrid/tools/ImportAdmins.java | 598 ++++++++++++++-----
16 files changed, 999 insertions(+), 386 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/69aecffb/stack/core/src/main/resources/usergrid-core-context.xml
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/69aecffb/stack/rest/src/main/java/org/apache/usergrid/rest/IndexResource.java
----------------------------------------------------------------------
diff --cc stack/rest/src/main/java/org/apache/usergrid/rest/IndexResource.java
index 2c26fd3,f32824f..9cf6672
--- a/stack/rest/src/main/java/org/apache/usergrid/rest/IndexResource.java
+++ b/stack/rest/src/main/java/org/apache/usergrid/rest/IndexResource.java
@@@ -20,43 -20,26 +20,32 @@@
package org.apache.usergrid.rest;
+
- import java.util.HashMap;
- import java.util.Map;
- import java.util.UUID;
-
- import javax.ws.rs.DefaultValue;
- import javax.ws.rs.POST;
- import javax.ws.rs.PUT;
- import javax.ws.rs.Path;
- import javax.ws.rs.PathParam;
- import javax.ws.rs.Produces;
- import javax.ws.rs.QueryParam;
- import javax.ws.rs.core.Context;
- import javax.ws.rs.core.MediaType;
- import javax.ws.rs.core.UriInfo;
-
- import com.google.common.base.Optional;
- import org.apache.usergrid.corepersistence.util.CpNamingUtils;
++import com.google.common.base.Preconditions;
+ import com.sun.jersey.api.json.JSONWithPadding;
-import org.apache.usergrid.persistence.EntityManagerFactory;
-import org.apache.usergrid.persistence.EntityRef;
++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.EntityManager;
+import org.apache.usergrid.persistence.index.utils.ConversionUtils;
+ import org.apache.usergrid.persistence.index.utils.UUIDUtils;
+ import org.apache.usergrid.rest.security.annotations.RequireSystemAccess;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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;
-
- import com.google.common.base.Preconditions;
- import com.sun.jersey.api.json.JSONWithPadding;
+ import javax.ws.rs.*;
+ import javax.ws.rs.core.Context;
+ import javax.ws.rs.core.MediaType;
+ import javax.ws.rs.core.UriInfo;
++import java.util.HashMap;
+ import java.util.Map;
-import java.util.Set;
+ import java.util.UUID;
+
/**
- * Classy class class.
+ * system/index/otherstuff
*/
@Component
@Scope( "singleton" )
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/69aecffb/stack/rest/src/test/java/org/apache/usergrid/rest/IndexResourceIT.java
----------------------------------------------------------------------
diff --cc stack/rest/src/test/java/org/apache/usergrid/rest/IndexResourceIT.java
index dc140bc,a310368..7820358
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/IndexResourceIT.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/IndexResourceIT.java
@@@ -20,10 -20,7 +20,11 @@@
package org.apache.usergrid.rest;
-import com.fasterxml.jackson.databind.JsonNode;
+import com.sun.jersey.api.client.WebResource;
+import com.sun.jersey.api.client.filter.HTTPBasicAuthFilter;
- import org.apache.usergrid.rest.test.resource2point0.model.*;
-
++import org.apache.usergrid.rest.test.resource2point0.model.ApiResponse;
++import org.apache.usergrid.rest.test.resource2point0.model.QueryParameters;
++import org.apache.usergrid.rest.test.resource2point0.model.Token;
import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
@@@ -33,23 -30,24 +34,16 @@@ import org.slf4j.LoggerFactory
import javax.ws.rs.core.MediaType;
import java.util.HashMap;
import java.util.Map;
--import java.util.UUID;
-
-import org.apache.usergrid.rest.test.resource2point0.AbstractRestIT;
-import org.apache.usergrid.rest.test.resource2point0.model.ApiResponse;
-import org.apache.usergrid.rest.test.resource2point0.model.Entity;
-import org.apache.usergrid.rest.test.resource2point0.model.QueryParameters;
-import org.apache.usergrid.rest.test.resource2point0.model.Token;
import static org.junit.Assert.assertNotNull;
-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
*/
-public class IndexResourceIT extends AbstractRestIT {
-
+public class IndexResourceIT extends org.apache.usergrid.rest.test.resource2point0.AbstractRestIT {
-
@Rule
public TestContextSetup context = new TestContextSetup( this );
//Used for all MUUserResourceITTests
@@@ -58,6 -56,35 +52,7 @@@
public IndexResourceIT(){
}
-//TODO: convert over and recheck intention of test.
-// @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");
-//
-// }
++
@Test
public void testCaseReindexEndpoint() {
@@@ -90,36 -118,4 +85,35 @@@
assertNotNull( result );
}
+
+ @Ignore
+ @Test
+ public void TestAddIndex() throws Exception{
+
+
+ Map<String, Object> data = new HashMap<String, Object>();
+ data.put( "replicas", 0 );
+ data.put( "shards", 1 );
+ data.put( "writeConsistency", "one" );
+
+ String appId = this.clientSetup.getAppUuid();
+
+ // change the password as admin. The old password isn't required
+ org.apache.usergrid.rest.test.resource2point0.model.ApiResponse node = null;
+ try {
+
+ WebResource resource = this.clientSetup.getRestClient().pathResource("/system/index/" + appId).getResource();
+
+ //added httpBasicauth filter to all setup calls because they all do verification this way.
+ HTTPBasicAuthFilter httpBasicAuthFilter = new HTTPBasicAuthFilter( clientSetup.getSuperuserName(),clientSetup.getSuperuserPassword() );
+ resource.addFilter( httpBasicAuthFilter );
+
+ node = resource.type( MediaType.APPLICATION_JSON_TYPE ).accept( MediaType.APPLICATION_JSON )
+ .get( org.apache.usergrid.rest.test.resource2point0.model.ApiResponse.class);
+ } catch (Exception e) {
+ LOG.error("failed", e);
+ fail(e.toString());
+ }
+ assertNotNull( node );
-
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/69aecffb/stack/rest/src/test/java/org/apache/usergrid/rest/applications/ApplicationResourceIT.java
----------------------------------------------------------------------
diff --cc stack/rest/src/test/java/org/apache/usergrid/rest/applications/ApplicationResourceIT.java
index d4a3e06,8629ccb..f296d06
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/applications/ApplicationResourceIT.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/applications/ApplicationResourceIT.java
@@@ -21,17 -21,11 +21,14 @@@ import com.sun.jersey.api.client.Client
import com.sun.jersey.api.client.UniformInterfaceException;
import com.sun.jersey.api.client.WebResource;
import com.sun.jersey.api.representation.Form;
++import org.apache.commons.lang.RandomStringUtils;
import org.apache.shiro.codec.Base64;
-import org.apache.usergrid.management.ApplicationInfo;
++import org.apache.usergrid.cassandra.SpringResource;
++import org.apache.usergrid.management.ManagementService;
import org.apache.usergrid.rest.test.resource2point0.AbstractRestIT;
import org.apache.usergrid.rest.test.resource2point0.endpoints.mgmt.OrganizationResource;
- import org.apache.usergrid.rest.test.resource2point0.model.ApiResponse;
- import org.apache.usergrid.rest.test.resource2point0.model.Application;
- import org.apache.usergrid.rest.test.resource2point0.model.Collection;
- import org.apache.usergrid.rest.test.resource2point0.model.Credentials;
- import org.apache.usergrid.rest.test.resource2point0.model.Entity;
- import org.apache.usergrid.rest.test.resource2point0.model.QueryParameters;
- import org.apache.usergrid.rest.test.resource2point0.model.Token;
- import org.apache.usergrid.rest.test.resource2point0.model.User;
+ import org.apache.usergrid.rest.test.resource2point0.model.*;
++import org.apache.usergrid.setup.ConcurrentProcessSingleton;
import org.apache.usergrid.utils.MapUtils;
import org.junit.Ignore;
import org.junit.Test;
@@@ -42,6 -36,6 +39,7 @@@ import javax.ws.rs.core.MediaType
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
++import java.util.UUID;
import static org.apache.usergrid.utils.MapUtils.hashMap;
import static org.junit.Assert.*;
@@@ -97,6 -95,106 +95,109 @@@ public class ApplicationResourceIT exte
}
/**
+ * Retrieve an collection using the application client credentials
+ */
+ @Test
+ public void applicationCollectionWithAppCredentials() throws Exception {
+
+ //retrieve the credentials
+ Credentials appCredentials = getAppCredentials();
+
+ //retrieve the app using only the org credentials
+ ApiResponse apiResponse = this.app().collection( "roles" ).getResource( false )
- .queryParam("grant_type", "client_credentials")
++ .queryParam( "grant_type", "client_credentials" )
+ .queryParam("client_id", appCredentials.getClientId())
+ .queryParam("client_secret", appCredentials.getClientSecret())
+ .accept(MediaType.APPLICATION_JSON)
+ .type(MediaType.APPLICATION_JSON_TYPE)
+ .get(ApiResponse.class);
+ //assert that a valid response is returned without error
+ assertNotNull(apiResponse);
+ assertNull(apiResponse.getError());
+
+ Collection roles = new Collection(apiResponse);
+ //assert that we have the correct number of default roles
+ assertEquals(3, roles.getNumOfEntities());
+ }
+
- // TODO: rewrite with new framework in two-dot-o-dev
-// /**
-// * Retrieve an collection using the application client credentials
-// */
-// @Test
-// public void applicationCollectionWithAppToken() throws Exception {
-//
-// Credentials appCredentials = getAppCredentials();
-//
-// QueryParameters queryParameters = new QueryParameters();
-// queryParameters.addParam("grant_type", "client_credentials");
-// queryParameters.addParam("client_id", appCredentials.getClientId());
-// queryParameters.addParam("client_secret", appCredentials.getClientSecret());
-//
-// Entity testUser = new Entity( );
-// testUser.chainPut( "name","temp" ).chainPut( "password","temp1" );
-//
-// Token appToken = this.app().token().post(
-// new Token("client_credentials",appCredentials.getClientId(),appCredentials.getClientSecret() ));
-//
-// String orgName = "MiXedApplicationResourceTest";
-// String appName = "mgmt-org-app-test";
-//
-// //create new org
-// Map payload = hashMap( "email", "test-user-1@mockserver.com" ).map( "username", "ApplicationAppCredsTest" )
-// .map( "name", "App Creds User" )
-// .map( "password", "password" )
-// .map( "organization", orgName );
-//
-// resource().path( "/management/organizations" ).accept( MediaType.APPLICATION_JSON )
-// .type( MediaType.APPLICATION_JSON_TYPE ).post( JsonNode.class, payload );
-//
-// //create new app
-// Map<String, String> data = new HashMap<String, String>();
-// data.put( "name", appName );
-//
-// JsonNode appdata = resource().path( "/management/orgs/" + orgName + "/applications" )
-// .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
-// .type( MediaType.APPLICATION_JSON_TYPE ).post( JsonNode.class, data );
-//
-//
-// ApplicationInfo appInfo = setup.getMgmtSvc().getApplicationInfo(orgName+"/"+appName );//"test-organization/test-app" );
-//
-// //don't know what kind of creds these are but they sure aren't app creds...
-// String clientId = setup.getMgmtSvc().getClientIdForApplication( appInfo.getId() );
-// String clientSecret = setup.getMgmtSvc().getClientSecretForApplication( appInfo.getId() );
-//
-// JsonNode applicationCredentials = resource().path( "/"+orgName.toLowerCase()+"/"+appName+"/credentials" ).queryParam( "client_id", clientId )
-//
-// .queryParam( "client_secret", clientSecret ).accept( MediaType.APPLICATION_JSON )
-// .type( MediaType.APPLICATION_JSON_TYPE ).get( JsonNode.class );
-//
-// JsonNode node = resource().path( "/"+orgName.toLowerCase()+"/"+appName+"/users" ).queryParam( "client_id", applicationCredentials.get( "credentials" ).get( "client_id" ).asText())
-// .queryParam( "client_secret", applicationCredentials.get( "credentials" ).get( "client_secret" ).asText() ).accept( MediaType.APPLICATION_JSON )
-// .type( MediaType.APPLICATION_JSON_TYPE ).get( JsonNode.class );
-//
-//
-// //retrieve the credentials
-//
-// //retrieve the app using only the org credentials
-// ApiResponse apiResponse = this.app().collection( "roles" ).getResource( true, appToken )
-// .accept( MediaType.APPLICATION_JSON )
-// .type(MediaType.APPLICATION_JSON_TYPE)
-// .get(ApiResponse.class);
-// //assert that a valid response is returned without error
-// assertNotNull(apiResponse);
-// assertNull(apiResponse.getError());
-//
-// Collection roles = new Collection(apiResponse);
-// //assert that we have the correct number of default roles
-// assertEquals(3, roles.getNumOfEntities());
-// }
++ /**
++ * Retrieve an collection using the application client credentials.
++ */
++ @Test
++ public void applicationCollectionWithAppToken() throws Exception {
++
++ String username = RandomStringUtils.randomAlphanumeric( 20 );
++ String orgName = "MiXedApplicationResourceTest_" + username;
++ String appName = "mgmt-org-app-test";
++
++ // create new org with mixed case name
++
++ Map payload = hashMap( "email", username + "@example.com" )
++ .map( "username", username )
++ .map( "name", "App Creds User" )
++ .map( "password", "password" )
++ .map( "organization", orgName );
++
++ QueryParameters tokenParams = new QueryParameters();
++ tokenParams.addParam( "access_token", getAdminToken("superuser","superpassword").getAccessToken() );
++
++ pathResource( "management/organizations" ).post( false, payload, tokenParams );
++
++ // create new app
++
++ Map<String, String> data = new HashMap<String, String>();
++ data.put( "name", appName );
++
++ ApiResponse appResponse = pathResource( "management/orgs/" + orgName + "/applications" )
++ .post( false, data, tokenParams );
++ UUID appId = appResponse.getEntities().get(0).getUuid();
++
++ // wait for app to become available and then get app creds
++
++ String clientId = null;
++ String clientSecret = null;
++
++ Map<String, String> loginMap = new HashMap<String, String>() {{
++ put("username", username);
++ put("password", "password");
++ put("grant_type", "password");
++ }};
++ ApiResponse authResponse = pathResource( "management/token" ).post( loginMap );
++
++ // TODO: rewrite to use REST rather
++
++ int tries = 0;
++ SpringResource springResource = ConcurrentProcessSingleton.getInstance().getSpringResource();
++ ManagementService mgmt = springResource.getBean( ManagementService.class );
++ while ( tries++ < 20 ) {
++ try {
++ clientId = mgmt.getClientIdForApplication( appId );
++ clientSecret = mgmt.getClientSecretForApplication( appId );
++ } catch ( Exception intentionallyIgnored ) {}
++ if ( clientId != null && clientSecret != null ) {
++ break;
++ }
++ logger.info( "Waiting for app to become available" );
++ Thread.sleep(500);
++ refreshIndex();
++ }
++ assertNotNull( clientId );
++ assertNotNull( clientSecret );
++
++ QueryParameters adminTokenParams = new QueryParameters();
++ adminTokenParams
++ .addParam( "grant_type", "client_credentials" )
++ .addParam( "client_id", clientId )
++ .addParam( "client_secret", clientSecret );
+
++ ApiResponse rolesResponse = pathResource( orgName.toLowerCase() + "/" + appName + "/roles" )
++ .get( ApiResponse.class, adminTokenParams, false );
++
++ assertTrue( rolesResponse.getEntityCount() > 0 );
++
++ }
+
+ /**
* Verifies that we return JSON even when no accept header is specified.
* (for backwards compatibility)
*/
@@@ -493,7 -591,7 +594,8 @@@
payload.add("redirect_uri", "http://www.my_test.com");
//POST the form to the authorization endpoint
- String apiResponse = clientSetup.getRestClient().management().authorize().getResource().type( MediaType.APPLICATION_FORM_URLENCODED_TYPE ).accept(MediaType.TEXT_HTML).post(String.class, payload);
- String apiResponse = clientSetup.getRestClient().management().authorize().post(String.class, payload);
++ String apiResponse = clientSetup.getRestClient().management().authorize().getResource()
++ .type( MediaType.APPLICATION_FORM_URLENCODED_TYPE ).accept(MediaType.TEXT_HTML).post(String.class, payload);
//Assert that an appropriate error message is returned
assertTrue(apiResponse.contains("Username or password do not match"));
@@@ -540,7 -637,7 +642,8 @@@
try {
//POST the form to the authorization endpoint
- clientSetup.getRestClient().management().authorize().getResource().accept(MediaType.TEXT_HTML).post(String.class, payload);
- clientSetup.getRestClient().management().authorize().post(String.class, payload);
++ clientSetup.getRestClient().management().authorize()
++ .getResource().accept(MediaType.TEXT_HTML).post(String.class, payload);
} catch (UniformInterfaceException uie) {
assertEquals(String.valueOf(Status.TEMPORARY_REDIRECT.getStatusCode()), uie.getResponse().getStatus());
}
@@@ -756,7 -863,8 +859,8 @@@
*/
public Credentials getOrgCredentials() throws IOException {
String orgName = clientSetup.getOrganizationName().toLowerCase();
- return new Credentials( clientSetup.getRestClient().management().orgs().org( orgName ).credentials().get(ApiResponse.class,null,true) );
- return clientSetup.getRestClient().management().orgs().organization(orgName).credentials().get();
++ return new Credentials( clientSetup.getRestClient().management()
++ .orgs().org( orgName ).credentials().get(ApiResponse.class,null,true) );
}
}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/69aecffb/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/ClientSetup.java
----------------------------------------------------------------------
diff --cc stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/ClientSetup.java
index 821b80a,7dc4eb5..d9bda7c
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/ClientSetup.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/ClientSetup.java
@@@ -21,22 -21,24 +21,17 @@@
package org.apache.usergrid.rest.test.resource2point0;
--import java.io.IOException;
-import java.util.LinkedHashMap;
-import java.util.UUID;
--
-import org.apache.usergrid.rest.test.resource2point0.model.Application;
-import org.apache.usergrid.rest.test.resource2point0.model.Entity;
-import org.apache.usergrid.rest.test.resource2point0.model.Token;
+import org.apache.usergrid.corepersistence.util.CpNamingUtils;
- import org.apache.usergrid.rest.test.resource2point0.model.ApiResponse;
- import org.apache.usergrid.rest.test.resource2point0.model.Application;
- import org.apache.usergrid.rest.test.resource2point0.model.Credentials;
- import org.apache.usergrid.rest.test.resource2point0.model.Token;
++import org.apache.usergrid.persistence.index.utils.UUIDUtils;
++import org.apache.usergrid.rest.test.resource2point0.model.*;
import org.junit.rules.TestRule;
import org.junit.runner.Description;
import org.junit.runners.model.Statement;
--
--import org.apache.usergrid.persistence.index.utils.UUIDUtils;
--import org.apache.usergrid.rest.test.resource2point0.model.Organization;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.ws.rs.core.MediaType;
++import java.io.IOException;
+
/**
* This class is used to setup the client rule that will setup the RestClient and create default applications.
@@@ -55,10 -57,9 +50,10 @@@ public class ClientSetup implements Tes
protected Token superuserToken;
protected String superuserName = "superuser";
protected String superuserPassword = "superpassword";
+ protected Credentials clientCredentials;
protected Organization organization;
- protected Application application;
+ protected Entity application;
public ClientSetup (String serverUrl) {
@@@ -113,21 -114,18 +108,21 @@@
orgName = "org_"+name+UUIDUtils.newTimeUUID();
appName = "app_"+name+UUIDUtils.newTimeUUID();
- organization = restClient.management().orgs()
- .post( new Organization( orgName, username, username + "@usergrid.com", username,
- username, null ) );
- organization = restClient.management().orgs().post(new Organization( orgName,username,username+"@usergrid.com",username,username, null ));
-
- refreshIndex();
++ organization = restClient.management().orgs().post(
++ new Organization( orgName, username, username + "@usergrid.com", username, username, null ) );
- restClient.management().token().post(new Token(username,username));
+ restClient.management().token().get(username,password);
- // refreshIndex();
- application = restClient.management().orgs().organization(organization.getName()).app().post(new Application(appName));
- // application = restClient.management().orgs().organization(organization.getName()).app().get();
- appUuid = (String)((LinkedHashMap)application.getDynamicProperties().get( "data" )).get( orgName+"/"+appName );
+ clientCredentials = restClient.management().orgs().org( orgName ).credentials().get(Credentials.class);
- //refreshIndex();
-
- ApiResponse appResponse = restClient.management().orgs().org( organization.getName() ).app().post(new Application(appName));
++ 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 );
refreshIndex();
++ restClient.management().token().post(new Token(username,username));
++ refreshIndex();
}
public String getUsername(){return username;}
@@@ -158,16 -154,8 +153,17 @@@
return superuserPassword;
}
+ public Credentials getClientCredentials() {
+ return clientCredentials;
+ }
+
public void refreshIndex() {
- this.restClient.refreshIndex(getOrganizationName(),getAppName(), CpNamingUtils.getManagementApplicationId().getUuid().toString());
- this.restClient.refreshIndex(getOrganizationName(),getAppName());
++ this.restClient.refreshIndex(getOrganizationName(),getAppName(),
++ CpNamingUtils.getManagementApplicationId().getUuid().toString());
+
+ if(!CpNamingUtils.getManagementApplicationId().getUuid().toString().equals(getAppUuid())) {
+ this.restClient.refreshIndex(getOrganizationName(), getAppName(), getAppUuid());
+ }
}
public RestClient getRestClient(){
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/69aecffb/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/RestClient.java
----------------------------------------------------------------------
diff --cc stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/RestClient.java
index 0d8f981,0cfeb40..cc24ebe
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/RestClient.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/RestClient.java
@@@ -16,19 -16,21 +16,17 @@@
*/
package org.apache.usergrid.rest.test.resource2point0;
- import org.apache.usergrid.rest.test.resource2point0.endpoints.*;
-import org.apache.usergrid.rest.test.resource2point0.endpoints.SystemResource;
-import org.apache.usergrid.rest.test.resource2point0.endpoints.TokenResource;
--import org.apache.usergrid.rest.test.resource2point0.endpoints.mgmt.ManagementResource;
-import org.apache.usergrid.rest.test.resource2point0.endpoints.OrganizationResource;
-import org.apache.usergrid.rest.test.resource2point0.endpoints.UrlResource;
--import org.apache.usergrid.rest.test.resource2point0.state.ClientContext;
--
import com.fasterxml.jackson.databind.JsonNode;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;
import com.sun.jersey.api.client.config.ClientConfig;
import com.sun.jersey.api.client.config.DefaultClientConfig;
import com.sun.jersey.api.client.filter.HTTPBasicAuthFilter;
++import org.apache.usergrid.rest.test.resource2point0.endpoints.*;
++import org.apache.usergrid.rest.test.resource2point0.endpoints.mgmt.ManagementResource;
++import org.apache.usergrid.rest.test.resource2point0.state.ClientContext;
import javax.ws.rs.core.MediaType;
- import java.util.UUID;
/**
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/69aecffb/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/NamedResource.java
----------------------------------------------------------------------
diff --cc stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/NamedResource.java
index 7e717b7,bf5dbf0..c80516f
--- 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
@@@ -17,28 -17,17 +17,22 @@@
package org.apache.usergrid.rest.test.resource2point0.endpoints;
++import com.sun.jersey.api.client.GenericType;
++import com.sun.jersey.api.client.WebResource;
++import com.sun.jersey.api.client.filter.HTTPBasicAuthFilter;
++import com.sun.jersey.api.representation.Form;
+import com.sun.jersey.multipart.FormDataMultiPart;
+import org.apache.usergrid.rest.test.resource2point0.model.ApiResponse;
+import org.apache.usergrid.rest.test.resource2point0.model.Entity;
import org.apache.usergrid.rest.test.resource2point0.model.QueryParameters;
import org.apache.usergrid.rest.test.resource2point0.model.Token;
import org.apache.usergrid.rest.test.resource2point0.state.ClientContext;
- import com.sun.jersey.api.client.GenericType;
--import com.sun.jersey.api.client.WebResource;
--
-import java.util.HashMap;
++import javax.ws.rs.core.MediaType;
+import java.io.InputStream;
- import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
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;
/**
@@@ -77,10 -66,7 +71,11 @@@ public class NamedResource implements U
public WebResource getResource(boolean useToken,Token token) {
WebResource resource = parent.getResource().path( getPath() );
token = token !=null ? token : this.context.getToken();
- return useToken ? resource.queryParam("access_token",token.getAccessToken()) : parent.getResource().path( getPath() );
+ //error checking
- if(token == null)
++ if (token == null) {
+ return resource;
++ }
+ return useToken ? resource.queryParam("access_token",token.getAccessToken()) : resource;
}
protected WebResource addParametersToResource(WebResource resource, final QueryParameters parameters){
@@@ -119,237 -105,5 +114,239 @@@
return resource;
}
+ protected String getMatrixValue(final QueryParameters parameters) {
+
+ StringBuilder sb = new StringBuilder();
+ if (parameters == null) {
+ return null;
+ }
+ if (parameters.getQuery() != null) {
+ sb.append(";");
+ sb.append("ql").append("=").append(parameters.getQuery());
+ }
+
+ if (parameters.getCursor() != null) {
+ sb.append(";");
+ sb.append("cursor").append("=").append(parameters.getCursor());
+ }
+ if (parameters.getStart() != null) {
+ sb.append(";");
+ sb.append("start").append("=").append(parameters.getStart());
+ }
+ if (parameters.getLimit() != null) {
+ sb.append(";");
+ sb.append("limit").append("=").append(parameters.getLimit());
+ }
+ //We can also post the params as queries
+ if (parameters.getFormPostData().size() > 0) {
+ Map<String, String> formData = parameters.getFormPostData();
+ Set<String> keySet = formData.keySet();
+ Iterator<String> keyIterator = keySet.iterator();
+
+
+ while (keyIterator.hasNext()) {
+ if (sb.length() > 0)
+ sb.append(";");
+ String key = keyIterator.next();
+ String value = formData.get(key);
+ sb.append(key).append("=").append(value);
+ }
+ }
+ return sb.toString();
+ }
+
+ /**
+ * Need to refactor all instances of tokens to either be passed in or manually set during the test.
+ * There isn't any reason we would want a rest forwarding framework to set something on behave of the user.
+ * @param map
+ * @return
+ */
+ //For edge cases like Organizations and Tokens
- public ApiResponse post(Map map) {
- return post(true,ApiResponse.class,map,null,false);
++ public ApiResponse post(Map map) {
++ 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(useToken,ApiResponse.class,map,queryParameters,false);
++ public ApiResponse post(boolean useToken, Map map, QueryParameters queryParameters) {
++ return post( useToken, ApiResponse.class, map, queryParameters, false );
+
+ }
++
+ /**
+ * Need to refactor all instances of tokens to either be passed in or manually set during the test.
+ * There isn't any reason we would want a rest forwarding framework to set something on behave of the user.
+ * @param type
+ * @param <T>
+ * @return
+ */
+ //For edge cases like Organizations and Tokens
+ public <T> T post(Class<T> type) {
+ return post(true,type,null,null,false);
+
+ }
+
+ /**
+ * Need to refactor all instances of tokens to either be passed in or manually set during the test.
+ * There isn't any reason we would want a rest forwarding framework to set something on behave of the user.
+ * @param type
+ * @param requestEntity
+ * @param <T>
+ * @return
+ */
+ //For edge cases like Organizations and Tokens
+ public <T> T post(Class<T> type, Entity requestEntity) {
+ return post(true,type,requestEntity,null,false);
+
+ }
+
+ /**
+ * Need to refactor all instances of tokens to either be passed in or manually set during the test.
+ * There isn't any reason we would want a rest forwarding framework to set something on behave of the user.
+ * @param type
+ * @param requestEntity
+ * @param <T>
+ * @return
+ */
+ //For edge cases like Organizations and Tokens
+ public <T> T post(Class<T> type, Map requestEntity) {
+ return post(true,type,requestEntity,null,false);
+
+ }
+
+ /**
+ * Used to test POST using form payloads.
+ * @param type
+ * @param requestEntity
+ * @param <T>
+ * @return
+ */
+ public <T> T post(Class<T> type, Form requestEntity) {
+ GenericType<T> gt = new GenericType<>((Class) type);
+ return getResource()
+ .accept(MediaType.APPLICATION_JSON)
+ .type(MediaType.APPLICATION_FORM_URLENCODED_TYPE)
+ .entity(requestEntity, MediaType.APPLICATION_FORM_URLENCODED_TYPE)
+ .post(gt.getRawClass());
+
+ }
+
+
+ //Used for empty posts
+ 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
+ .type(MediaType.APPLICATION_JSON_TYPE)
+ .accept( MediaType.APPLICATION_JSON );
+
+ if(entity!=null){
+ builder.entity(entity);
+ }
+ GenericType<T> gt = new GenericType<>((Class) type);
+ return builder
+ .post(gt.getRawClass());
+
+ }
+
+ //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) {
+ return get(type,null,true);
+
+ }
+
+ //For edge cases like Organizations and Tokens without any payload
+ public <T> T get(Class<T> type, boolean useToken) {
+ return get(type,null,useToken);
+ }
+
+
+
+ public <T> T get(Class<T> type,QueryParameters queryParameters) {
+ return get(type,queryParameters,true);
+ }
+
+ public <T> T get(Class<T> type,QueryParameters queryParameters, boolean useToken) {
+ WebResource resource = getResource(useToken);
+ if(queryParameters!=null) {
+ resource = addParametersToResource(resource, queryParameters);
+ }
+ GenericType<T> gt = new GenericType<>((Class) type);
+ return resource.type(MediaType.APPLICATION_JSON_TYPE)
+ .accept( MediaType.APPLICATION_JSON )
+ .get( gt.getRawClass() );
+
+ }
+
+ public String getMatrix() {
+ return "";
+ }
+
+ public ApiResponse post( boolean useToken, FormDataMultiPart multiPartForm ) {
+ WebResource resource = getResource( useToken );
+ return resource.type( MediaType.MULTIPART_FORM_DATA_TYPE ).post( ApiResponse.class, multiPartForm );
+ }
+
+ public ApiResponse post( FormDataMultiPart multiPartForm ) {
+ return post( true, multiPartForm );
+ }
+
+ public ApiResponse put( boolean useToken, byte[] data, MediaType type ) {
+ WebResource resource = getResource(useToken);
+ return resource.type( type ).put( ApiResponse.class, data );
+ }
+
+ public ApiResponse put( byte[] data, MediaType type ) {
+ return put( true, data, type );
+ }
+ public ApiResponse put( boolean useToken, FormDataMultiPart multiPartForm ) {
+ WebResource resource = getResource(useToken);
+ return resource.type( MediaType.MULTIPART_FORM_DATA_TYPE ).put( ApiResponse.class, multiPartForm );
+ }
+
+ public ApiResponse put( FormDataMultiPart multiPartForm ) {
+ return put( true, multiPartForm );
+ }
+
+ public InputStream getAssetAsStream( boolean useToken ) {
+ WebResource resource = getResource(useToken);
+ return resource.accept( MediaType.APPLICATION_OCTET_STREAM_TYPE ).get( InputStream.class );
+ }
+
+ public InputStream getAssetAsStream() {
+ return getAssetAsStream( true );
+ }
+
+ public ApiResponse delete( ) {
+ return delete(true);
+ }
+
+ public ApiResponse delete( boolean useToken ) {
+ return getResource(useToken).delete( ApiResponse.class );
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/69aecffb/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/ApplicationResource.java
----------------------------------------------------------------------
diff --cc stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/ApplicationResource.java
index c02c48b,e9947e3..1e8f1f1
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/ApplicationResource.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/ApplicationResource.java
@@@ -58,28 -46,14 +58,28 @@@ public class ApplicationResource extend
}
- public Application post(Application application) {
- return getResource(true).type(MediaType.APPLICATION_JSON_TYPE)
- .accept(MediaType.APPLICATION_JSON).post(Application.class,application);
+ public ApiResponse post(Application application) {
+ ApiResponse apiResponse =getResource(true).type(MediaType.APPLICATION_JSON_TYPE)
- .accept(MediaType.APPLICATION_JSON).post(ApiResponse.class,application);
++ .accept(MediaType.APPLICATION_JSON).post(ApiResponse.class, application);
+ return apiResponse;
}
- public Entity post(Entity payload){
- ApiResponse response = getResource(true).type( MediaType.APPLICATION_JSON_TYPE ).accept(MediaType.APPLICATION_JSON)
- .post(ApiResponse.class, payload);
+ public Entity post(Entity payload) {
+
+ String responseString = getResource(true)
+ .type( MediaType.APPLICATION_JSON_TYPE )
+ .accept(MediaType.APPLICATION_JSON)
+ .post(String.class, payload);
+
+ logger.debug("Response from post: " + responseString);
+
+ ApiResponse response;
+ try {
+ response = mapper.readValue(new StringReader(responseString), ApiResponse.class);
+ } catch (IOException e) {
+ throw new RuntimeException("Error parsing response", e);
+ }
+
return new Entity(response);
}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/69aecffb/stack/rest/src/test/resources/log4j.properties
----------------------------------------------------------------------
diff --cc stack/rest/src/test/resources/log4j.properties
index ab700af,4d3d764..71dd540
--- a/stack/rest/src/test/resources/log4j.properties
+++ b/stack/rest/src/test/resources/log4j.properties
@@@ -29,21 -29,24 +29,21 @@@ log4j.appender.stdout.layout.Conversion
log4j.logger.org.apache.usergrid=INFO
#log4j.logger.org.apache.usergrid.cassandra=DEBUG
#log4j.logger.org.apache.usergrid.persistence.cassandra=DEBUG
-=======
--log4j.category.org.apache=ERROR, stdout
--log4j.category.org.apache.usergrid=WARN, stdout
--log4j.category.org.apache.usergrid.rest=INFO, stdout
->>>>>>> master
++log4j.category.org.apache=ERROR
++log4j.category.org.apache.usergrid=WARN
++log4j.category.org.apache.usergrid.rest=INFO
--log4j.logger.org.apache.usergrid.persistence.cassandra.CounterUtils=ERROR, stdout
--log4j.logger.org.apache.usergrid.persistence.cassandra.DB=WARN, stdout
--log4j.logger.org.apache.usergrid.persistence.cassandra.BATCH=WARN, stdout
--log4j.logger.org.apache.usergrid.persistence.cassandra.EntityManagerFactoryImpl=WARN, stdout
--log4j.logger.org.apache.usergrid.persistence.cassandra.DaoUtils=WARN, stdout
--log4j.logger.org.apache.usergrid.persistence.cassandra.EntityManagerImpl=WARN, stdout
--log4j.logger.org.apache.usergrid.persistence.cassandra.ConnectionRefImpl=WARN, stdout
--log4j.logger.me.prettyprint.cassandra.hector.TimingLogger=WARN, stdout
--log4j.logger.org.apache.usergrid.rest.security.AllowAjaxFilter=WARN, stdout
--log4j.logger.me.prettyprint.hector.api.beans.AbstractComposite=ERROR, stdout
--log4j.logger.org.apache.usergrid.locking.singlenode.SingleNodeLockManagerImpl=DEBUG, stdout
++log4j.logger.org.apache.usergrid.persistence.cassandra.CounterUtils=ERROR
++log4j.logger.org.apache.usergrid.persistence.cassandra.DB=WARN
++log4j.logger.org.apache.usergrid.persistence.cassandra.BATCH=WARN
++log4j.logger.org.apache.usergrid.persistence.cassandra.EntityManagerFactoryImpl=WARN
++log4j.logger.org.apache.usergrid.persistence.cassandra.DaoUtils=WARN
++log4j.logger.org.apache.usergrid.persistence.cassandra.EntityManagerImpl=WARN
++log4j.logger.org.apache.usergrid.persistence.cassandra.ConnectionRefImpl=WARN
++log4j.logger.me.prettyprint.cassandra.hector.TimingLogger=WARN
++log4j.logger.org.apache.usergrid.rest.security.AllowAjaxFilter=WARN
++log4j.logger.me.prettyprint.hector.api.beans.AbstractComposite=ERROR
++log4j.logger.org.apache.usergrid.locking.singlenode.SingleNodeLockManagerImpl=DEBUG
log4j.logger.org.apache.usergrid.rest.filters.MeteringFilter=ERROR
#log4j.logger.org.apache.usergrid.corepersistence=DEBUG
@@@ -56,7 -60,7 +56,7 @@@
#log4j.logger.org.apache.usergrid.persistence.collection=INFO
#log4j.logger.org.apache.usergrid.services=DEBUG
--#log4j.logger.org.apache.cassandra.service.StorageProxy=DEBUG, stdout
++#log4j.logger.org.apache.cassandra.service.StorageProxy=DEBUG
#log4j.logger.org.apache.usergrid.rest=INFO
#log4j.logger.org.apache.usergrid.rest.NotificationsIT=DEBUG
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/69aecffb/stack/services/src/main/java/org/apache/usergrid/management/cassandra/ManagementServiceImpl.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/69aecffb/stack/services/src/main/java/org/apache/usergrid/security/shiro/Realm.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/69aecffb/stack/services/src/test/java/org/apache/usergrid/management/EmailFlowIT.java
----------------------------------------------------------------------