[USERGRID-342, USERGRID-336, USERGRID-340] Updating and refactoring IT tests


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

Branch: refs/heads/USERGRID-336
Commit: 9b1bd03e81e620324bb66724fc57b46ac34f5c7f
Parents: c77835a
Author: ryan bridges <[email protected]>
Authored: Mon Apr 20 12:12:46 2015 -0400
Committer: ryan bridges <[email protected]>
Committed: Mon Apr 20 12:12:46 2015 -0400

----------------------------------------------------------------------
 .../activities/ActivityResourceIT.java          |   2 +-
 .../collection/users/OwnershipResourceIT.java   |   4 +-
 .../collection/users/PermissionsResourceIT.java |   2 +-
 .../collection/users/UserResourceIT.java        |  18 +--
 .../rest/filters/ContentTypeResourceIT.java     |  55 +++----
 .../rest/management/RegistrationIT.java         | 145 ++++++++++++-------
 .../resource2point0/TestPropertiesResource.java |   7 +-
 .../endpoints/ApplicationsResource.java         |   5 +
 .../endpoints/CollectionEndpoint.java           | 111 +++++++-------
 .../endpoints/DatabaseResource.java             |   7 +-
 .../endpoints/EntityEndpoint.java               |   7 +-
 .../endpoints/NamedResource.java                |  50 ++++++-
 .../endpoints/OrganizationResource.java         |   7 +-
 .../endpoints/SetupResource.java                |   8 +-
 .../endpoints/SystemResource.java               |   7 +-
 .../endpoints/TokenResource.java                |   6 +-
 .../endpoints/mgmt/ApplicationResource.java     |   7 +-
 .../endpoints/mgmt/AuthorizeResource.java       |   6 +-
 .../endpoints/mgmt/ConfirmResource.java         |   7 +-
 .../endpoints/mgmt/CredentialsResource.java     |   7 +-
 .../endpoints/mgmt/DeactivateResource.java      |  24 +++
 .../endpoints/mgmt/FeedResource.java            |   7 +-
 .../endpoints/mgmt/ManagementResource.java      |   6 +-
 .../endpoints/mgmt/OrgResource.java             |   6 +-
 .../endpoints/mgmt/OrganizationResource.java    |   7 +-
 .../endpoints/mgmt/PasswordResource.java        |   7 +-
 .../endpoints/mgmt/ReactivateResource.java      |   7 +-
 .../endpoints/mgmt/ResetResource.java           |   7 +-
 .../endpoints/mgmt/RevokeTokensResource.java    |  19 +++
 .../endpoints/mgmt/TokenResource.java           |   7 +-
 .../endpoints/mgmt/UserResource.java            |  15 +-
 .../endpoints/mgmt/UsersResource.java           |   7 +-
 32 files changed, 414 insertions(+), 173 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9b1bd03e/stack/rest/src/test/java/org/apache/usergrid/rest/applications/collection/activities/ActivityResourceIT.java
----------------------------------------------------------------------
diff --git 
a/stack/rest/src/test/java/org/apache/usergrid/rest/applications/collection/activities/ActivityResourceIT.java
 
b/stack/rest/src/test/java/org/apache/usergrid/rest/applications/collection/activities/ActivityResourceIT.java
index f7737b9..39b49a2 100644
--- 
a/stack/rest/src/test/java/org/apache/usergrid/rest/applications/collection/activities/ActivityResourceIT.java
+++ 
b/stack/rest/src/test/java/org/apache/usergrid/rest/applications/collection/activities/ActivityResourceIT.java
@@ -58,7 +58,7 @@ public class ActivityResourceIT extends AbstractRestIT {
         this.usersResource = this.app().collection("users");
         Entity entity = groupsResource.post(new 
Entity().chainPut("name",GROUP).chainPut("path","/"+GROUP));
         current = new User("user1","user1","user1","user1");
-        current = new User( this.app().collection("users").post(current));
+        current = this.app().collection("users").post(current);
         this.activityTitle = "testTitle" ;
         this.activityDesc = "testActivity" ;
         this.activity = new 
ActivityEntity().putActor(current).chainPut("title", 
activityTitle).chainPut("content", activityDesc).chainPut("category", 
"testCategory").chainPut("verb", "POST");

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9b1bd03e/stack/rest/src/test/java/org/apache/usergrid/rest/applications/collection/users/OwnershipResourceIT.java
----------------------------------------------------------------------
diff --git 
a/stack/rest/src/test/java/org/apache/usergrid/rest/applications/collection/users/OwnershipResourceIT.java
 
b/stack/rest/src/test/java/org/apache/usergrid/rest/applications/collection/users/OwnershipResourceIT.java
index f898cd6..31d57a9 100644
--- 
a/stack/rest/src/test/java/org/apache/usergrid/rest/applications/collection/users/OwnershipResourceIT.java
+++ 
b/stack/rest/src/test/java/org/apache/usergrid/rest/applications/collection/users/OwnershipResourceIT.java
@@ -61,8 +61,8 @@ public class OwnershipResourceIT extends AbstractRestIT {
         user1 = new User("testuser1","testuser1", email, "password" );
         user2 = new User("testuser2","testuser2", email2, "password" );
 
-        user1 = new User(this.usersResource.post(user1));
-        user2 = new User(this.usersResource.post(user2));
+        user1 = this.usersResource.post(user1);
+        user2 = this.usersResource.post(user2);
 
         refreshIndex();
     }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9b1bd03e/stack/rest/src/test/java/org/apache/usergrid/rest/applications/collection/users/PermissionsResourceIT.java
----------------------------------------------------------------------
diff --git 
a/stack/rest/src/test/java/org/apache/usergrid/rest/applications/collection/users/PermissionsResourceIT.java
 
b/stack/rest/src/test/java/org/apache/usergrid/rest/applications/collection/users/PermissionsResourceIT.java
index 4fa8ab0..db59624 100644
--- 
a/stack/rest/src/test/java/org/apache/usergrid/rest/applications/collection/users/PermissionsResourceIT.java
+++ 
b/stack/rest/src/test/java/org/apache/usergrid/rest/applications/collection/users/PermissionsResourceIT.java
@@ -72,7 +72,7 @@ public class PermissionsResourceIT extends AbstractRestIT {
     public void setup(){
 
         user = new User(USER,USER,USER+"@apigee.com","password");
-        user = new User( this.app().collection("users").post(user));
+        user = this.app().collection("users").post(user);
         refreshIndex();
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9b1bd03e/stack/rest/src/test/java/org/apache/usergrid/rest/applications/collection/users/UserResourceIT.java
----------------------------------------------------------------------
diff --git 
a/stack/rest/src/test/java/org/apache/usergrid/rest/applications/collection/users/UserResourceIT.java
 
b/stack/rest/src/test/java/org/apache/usergrid/rest/applications/collection/users/UserResourceIT.java
index 8761dd3..4296a07 100644
--- 
a/stack/rest/src/test/java/org/apache/usergrid/rest/applications/collection/users/UserResourceIT.java
+++ 
b/stack/rest/src/test/java/org/apache/usergrid/rest/applications/collection/users/UserResourceIT.java
@@ -379,7 +379,7 @@ public class UserResourceIT extends AbstractRestIT {
         String name = "name" + id;
         User entity = new User(username, name, id + "@usergrid.org", 
"password");
 
-        entity = new User(usersResource.post(entity));
+        entity = usersResource.post(entity);
 
         UUID createdId = entity.getUuid();
 
@@ -395,7 +395,7 @@ public class UserResourceIT extends AbstractRestIT {
         assertEquals(0, results.getResponse().getEntities().size());
 
         // now create that same user again, it should work
-        entity = new User(usersResource.post(entity));
+        entity = usersResource.post(entity);
 
         createdId = entity.getUuid();
 
@@ -412,7 +412,7 @@ public class UserResourceIT extends AbstractRestIT {
 
         User entity = new User(username, name, email, "password");
 
-        entity = new User(usersResource.post(entity));
+        entity = usersResource.post(entity);
         refreshIndex();
 
         UUID firstCreatedId = entity.getUuid();
@@ -422,7 +422,7 @@ public class UserResourceIT extends AbstractRestIT {
 
         entity = new User(username, name, email, "password");
 
-        entity = new User(usersResource.post(entity));
+        entity = usersResource.post(entity);
         refreshIndex();
 
         UUID secondCreatedId = entity.getUuid();
@@ -473,7 +473,7 @@ public class UserResourceIT extends AbstractRestIT {
 
         User entity = new User(username1, name1, email1, "password");
 
-        entity = new User(usersResource.post(entity));
+        entity = usersResource.post(entity);
 
         UUID firstCreatedId = entity.getUuid();
 
@@ -483,7 +483,7 @@ public class UserResourceIT extends AbstractRestIT {
 
         entity = new User(username2, name2, email2, "password");
 
-        entity = new User(usersResource.post(entity));
+        entity = usersResource.post(entity);
 
         UUID secondCreatedId = entity.getUuid();
 
@@ -516,7 +516,7 @@ public class UserResourceIT extends AbstractRestIT {
 
         User entity = new User(email, name, email, "password");
 
-        entity = new User(usersResource.post(entity));
+        entity = usersResource.post(entity);
 
         UUID userId = entity.getUuid();
 
@@ -604,7 +604,7 @@ public class UserResourceIT extends AbstractRestIT {
         String email1 = "email1" + id + "@usergrid.org";
         User entity = new User(username1, name1, email1, "password");
 
-        entity = new User(usersResource.post(entity));
+        entity = usersResource.post(entity);
 
         UUID firstCreatedId = entity.getUuid();
 
@@ -824,7 +824,7 @@ public class UserResourceIT extends AbstractRestIT {
         String email = "email" + "@usergrid.org";
 
         User user = new User(username, name, email, "password");
-        user = new User(usersResource.post(user));
+        user = usersResource.post(user);
         UUID createdId = user.getUuid();
 
         // create Role

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9b1bd03e/stack/rest/src/test/java/org/apache/usergrid/rest/filters/ContentTypeResourceIT.java
----------------------------------------------------------------------
diff --git 
a/stack/rest/src/test/java/org/apache/usergrid/rest/filters/ContentTypeResourceIT.java
 
b/stack/rest/src/test/java/org/apache/usergrid/rest/filters/ContentTypeResourceIT.java
index 10909b4..04a96ab 100644
--- 
a/stack/rest/src/test/java/org/apache/usergrid/rest/filters/ContentTypeResourceIT.java
+++ 
b/stack/rest/src/test/java/org/apache/usergrid/rest/filters/ContentTypeResourceIT.java
@@ -21,6 +21,8 @@ import com.sun.jersey.api.client.ClientResponse;
 import com.sun.jersey.api.client.WebResource;
 import com.sun.jersey.api.representation.Form;
 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.utils.JsonUtils;
 import org.apache.usergrid.utils.UUIDUtils;
 import org.junit.Ignore;
@@ -32,6 +34,8 @@ import java.util.List;
 
 import static org.apache.usergrid.utils.MapUtils.hashMap;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
 
 
 /**
@@ -48,19 +52,16 @@ public class ContentTypeResourceIT extends AbstractRestIT {
      */
     @Test
     public void correctHeaders() throws Exception {
-
-        String json = JsonUtils.mapToFormattedJsonString(hashMap("name", 
"Solitaire1"));
-
-        WebResource.Builder builder = 
app().collection("games").getResource(true)
-            .queryParam("access_token", this.getAdminToken().getAccessToken())
+        refreshIndex();
+        Entity testEntity=new Entity().chainPut("name", "Solitaire1");
+        WebResource.Builder builder = app().collection("games")
+            .getResource(true, getAdminToken())
             .type(MediaType.APPLICATION_JSON_TYPE)
             .accept(MediaType.APPLICATION_JSON);
+        ClientResponse apiResponse=builder.post(ClientResponse.class, 
testEntity);
+        assertEquals(200, apiResponse.getStatus());
 
-        ClientResponse clientResponse = builder.post(ClientResponse.class, 
json);
-
-        assertEquals(200, clientResponse.getStatus());
-
-        MultivaluedMap<String, String> headers = clientResponse.getHeaders();
+        MultivaluedMap<String, String> headers = apiResponse.getHeaders();
 
         List<String> contentType = headers.get("Content-Type");
         assertEquals(1, contentType.size());
@@ -74,11 +75,11 @@ public class ContentTypeResourceIT extends AbstractRestIT {
      */
     @Test
     public void textPlainContentType() throws Exception {
+        refreshIndex();
         String json = JsonUtils.mapToFormattedJsonString(hashMap("name", 
"Solitaire2"));
-        WebResource.Builder builder = app().getResource(true)
-            .queryParam("access_token", this.getAdminToken().getAccessToken())
+        WebResource.Builder builder = 
app().collection("games").getResource(true, getAdminToken())
             .accept(MediaType.APPLICATION_JSON)
-            .type(MediaType.TEXT_PLAIN_TYPE);
+            .type(MediaType.APPLICATION_JSON);
 
         ClientResponse clientResponse = builder.post(ClientResponse.class, 
json);
 
@@ -101,17 +102,18 @@ public class ContentTypeResourceIT extends AbstractRestIT 
{
 
 
         Form payload = new Form();
+        payload.add("access_token", getAdminToken().toString());
         payload.add("organization", "formContentOrg");
         payload.add("username", "formContentOrg");
         payload.add("name", "Test User");
         payload.add("email", UUIDUtils.newTimeUUID() + "@usergrid.org");
         payload.add("password", "foobar");
 
-        WebResource.Builder builder = app().getResource(true, 
this.getAdminToken(clientSetup.getSuperuserName(), 
clientSetup.getSuperuserPassword()))
-            .accept(MediaType.APPLICATION_JSON)
-            .type(MediaType.APPLICATION_FORM_URLENCODED_TYPE);
 
-        ClientResponse clientResponse = builder.post(ClientResponse.class, 
payload);
+        ClientResponse clientResponse = app().users().getResource(false)
+            .accept(MediaType.APPLICATION_JSON)
+            .type(MediaType.APPLICATION_FORM_URLENCODED)
+            .post(ClientResponse.class, payload);
 
         assertEquals(200, clientResponse.getStatus());
 
@@ -160,10 +162,10 @@ public class ContentTypeResourceIT extends AbstractRestIT 
{
      */
     @Test
     public void missingAcceptAndContent() throws Exception {
-
-        WebResource.Builder builder = 
app().collection("games").getResource(true)
-            .queryParam("access_token", this.getAdminToken().getAccessToken())
-            .type(MediaType.APPLICATION_JSON_TYPE);
+        refreshIndex();
+        WebResource builder = app()
+            .collection("games")
+            .getResource(true, getAdminToken());
 
         ClientResponse clientResponse = builder.post(ClientResponse.class, 
JsonUtils.mapToJsonString(hashMap("name", "bar")));
 
@@ -183,12 +185,10 @@ public class ContentTypeResourceIT extends AbstractRestIT 
{
      */
     @Test
     public void noAcceptGet() throws Exception {
+        ClientResponse clientResponse = app().collection("games")
+            .getResource(true, getAdminToken())
+            .type(MediaType.APPLICATION_JSON_TYPE).post(ClientResponse.class, 
JsonUtils.mapToJsonString(hashMap("name", "bar")));
 
-        WebResource.Builder builder = 
app().collection("games").getResource(true)
-            .queryParam("access_token", this.getAdminToken().getAccessToken())
-            .type(MediaType.APPLICATION_JSON_TYPE);
-
-        ClientResponse clientResponse = builder.post(ClientResponse.class, 
JsonUtils.mapToJsonString(hashMap("name", "bar")));
 
         assertEquals(200, clientResponse.getStatus());
 
@@ -199,7 +199,8 @@ public class ContentTypeResourceIT extends AbstractRestIT {
         assertEquals(MediaType.APPLICATION_JSON, contentType.get(0));
 
         //do the get with no content type, it should get set to 
application/json
-        clientResponse = builder.get(ClientResponse.class);
+        clientResponse = app().collection("games")
+            .getResource(true, getAdminToken()).get(ClientResponse.class);
 
         assertEquals(200, clientResponse.getStatus());
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9b1bd03e/stack/rest/src/test/java/org/apache/usergrid/rest/management/RegistrationIT.java
----------------------------------------------------------------------
diff --git 
a/stack/rest/src/test/java/org/apache/usergrid/rest/management/RegistrationIT.java
 
b/stack/rest/src/test/java/org/apache/usergrid/rest/management/RegistrationIT.java
index 1e94a2d..f557ce0 100644
--- 
a/stack/rest/src/test/java/org/apache/usergrid/rest/management/RegistrationIT.java
+++ 
b/stack/rest/src/test/java/org/apache/usergrid/rest/management/RegistrationIT.java
@@ -24,6 +24,7 @@ import org.apache.usergrid.management.AccountCreationProps;
 import org.apache.usergrid.persistence.model.util.UUIDGenerator;
 import org.apache.usergrid.rest.test.resource2point0.AbstractRestIT;
 import org.apache.usergrid.rest.test.resource2point0.model.*;
+import org.apache.usergrid.rest.test.resource2point0.model.Collection;
 import org.junit.Test;
 import org.jvnet.mock_javamail.Mailbox;
 import org.slf4j.Logger;
@@ -78,19 +79,21 @@ public class RegistrationIT extends AbstractRestIT {
         return StringUtils.substringAfterLast(body, "token=");
     }
 
-    public User postAddAdminToOrg(String organizationName, String email, 
String password, String token) throws IOException {
+    public User postAddAdminToOrg(String organizationName, String email, 
String password, Token token) throws IOException {
 
-        User user = this
+        ApiResponse apiResponse = this
             .management()
             .orgs()
             .organization(organizationName)
             .users()
-            .getResource(false)
-            .queryParam("access_token", token)
-            .post(User.class, new User().chainPut("email", 
email).chainPut("password", password));
-
-        assertNotNull(user);
-        return user;
+            .getResource(true, token)
+            .type(MediaType.APPLICATION_JSON_TYPE)
+            .accept(MediaType.APPLICATION_ATOM_XML_TYPE)
+            .post(ApiResponse.class, new User().chainPut("email", 
email).chainPut("password", password));
+
+        assertNotNull(apiResponse);
+        LinkedHashMap map = (LinkedHashMap) apiResponse.getData();
+        return new User((LinkedHashMap) map.get("user"));
     }
 
     private Message[] getMessages(String host, String user, String password) 
throws MessagingException, IOException {
@@ -122,24 +125,27 @@ public class RegistrationIT extends AbstractRestIT {
             setTestProperty(PROPERTIES_SYSADMIN_APPROVES_ADMIN_USERS, "false");
             setTestProperty(PROPERTIES_SYSADMIN_APPROVES_ORGANIZATIONS, 
"false");
             setTestProperty(PROPERTIES_ADMIN_USERS_REQUIRE_CONFIRMATION, 
"false");
-            setTestProperty(PROPERTIES_SYSADMIN_EMAIL, 
"[email protected]");
+            setTestProperty(PROPERTIES_SYSADMIN_EMAIL, "sysadmin-1@usergrid");
 
             final String username = "registrationUser" + 
UUIDGenerator.newTimeUUID();
             final String email = username + "@usergrid.com";
             final String password = "password";
+            final String orgname = "org" + UUIDGenerator.newTimeUUID();
+            final String appname = "app" + UUIDGenerator.newTimeUUID();
 
             Organization organization = this
                 .management()
                 .orgs()
-                .post(new Organization("org" + UUIDGenerator.newTimeUUID(), 
username, email, username, password, new HashMap<String, Object>()), 
this.getAdminToken());
-            Application application = new Application("app" + 
UUIDGenerator.newTimeUUID());
-            
this.management().orgs().organization(organization.getName()).app().post(application);
+                .post(new Organization(orgname, username, email, username, 
password, new HashMap<String, Object>()), this.getAdminToken());
+            Token orgToken = this.management().token().post(new 
Token(username, password));
+            
this.management().orgs().organization(organization.getName()).app().post(new 
Application(appname), orgToken);
 
-            List<Message> inbox = 
org.jvnet.mock_javamail.Mailbox.get("[email protected]");
 
-            assertFalse(inbox.isEmpty());
+            List<Message> inbox = org.jvnet.mock_javamail.Mailbox.get(email);
+            Message[] messages = inbox.toArray(new Message[inbox.size()]);
+            assertNotEquals(messages.length, 0);
 
-            Message account_confirmation_message = inbox.get(0);
+            Message account_confirmation_message = messages[0];
             assertEquals("User Account Confirmation: " + email,
                 account_confirmation_message.getSubject());
 
@@ -149,30 +155,69 @@ public class RegistrationIT extends AbstractRestIT {
             
setTestProperty(AccountCreationProps.PROPERTIES_SYSADMIN_LOGIN_ALLOWED, 
"false");
 
             refreshIndex();
-
+            Collection appCollection = clientSetup
+                .getRestClient()
+                .org(orgname)
+                .app(appname)
+                .withToken(orgToken).get();
+            Entity application = appCollection.next();
+            assertNotNull(application);
+            Entity appUser = clientSetup
+                .getRestClient()
+                .org(orgname)
+                .app(appname)
+                .users()
+                .withToken(orgToken)
+                .post(new User("testuser", "Test User", "[email protected]", 
"password"));
             try {
                 
this.management().orgs().organization(organization.getName()).users().user(username)
-                    .getResource(false)
-                    .queryParam("username", username)
-                    .queryParam("password", password)
+                    .getResource(true, getAdminToken())
                     .get(String.class);
-                fail("request for disabled user should fail");
+                fail("request for disabled admin should fail");
             } catch (UniformInterfaceException uie) {
-                assertEquals("user disabled", uie.getMessage());
+                assertEquals(401, uie.getResponse().getStatus());
+            }
+            
setTestProperty(AccountCreationProps.PROPERTIES_SYSADMIN_LOGIN_ALLOWED, "true");
+            Token objToken = management()
+                .token()
+                .post(new Token(username, password));
+            try {
+                clientSetup
+                    .getRestClient()
+                    .org(orgname)
+                    .app(appname)
+                    .users()
+                    .user("testuser")
+                    .revoketokens()
+                    .withToken(objToken)
+                    .put();
+            } catch (UniformInterfaceException uie0) {
+                fail("Failed to revoke user tokens");
             }
-            this.management()
-                .orgs()
-                .organization(organization.getName())
-                .users()
-                .user(username)
-                .put(new Entity().chainPut("activated", 
false).chainPut("deactivated", System.currentTimeMillis()));
             try {
-                management()
+                clientSetup
+                    .getRestClient()
+                    .org(orgname)
+                    .app(appname)
+                    .users()
+                    .user("testuser")
+                    .withToken(objToken)
+                    .put(appUser.chainPut("activated", 
"false").chainPut("deactivated", System.currentTimeMillis()));
+                refreshIndex();
+            } catch (UniformInterfaceException uie0) {
+                fail("Failed to deactivate the user");
+            }
+            try {
+                objToken = clientSetup
+                    .getRestClient()
+                    .org(orgname)
+                    .app(appname)
                     .token()
-                    .get(new QueryParameters().addParam("grant_type", 
"password").addParam("username", username).addParam("password", password));
-                fail("request for deactivated user should fail");
+                    .post(new Token("testuser", "password"));
+                assertNull(objToken.getAccessToken());
+                fail("token request for deactivated user should fail");
             } catch (UniformInterfaceException uie) {
-                assertEquals("user not activated", uie.getMessage());
+                
assertTrue(uie.getResponse().getEntity(String.class).contains("user not 
activated"));
             }
 
         } finally {
@@ -219,8 +264,7 @@ public class RegistrationIT extends AbstractRestIT {
             setTestProperty(PROPERTIES_ADMIN_USERS_REQUIRE_CONFIRMATION, 
"false");
             setTestProperty(PROPERTIES_SYSADMIN_EMAIL, 
"[email protected]");
 
-            String t = this.getAdminToken().getAccessToken();
-            postAddAdminToOrg("test-organization", 
"[email protected]", "password", t);
+            postAddAdminToOrg(clientSetup.getOrganizationName(), 
"[email protected]", "password", getAdminToken());
         } finally {
             setTestProperties(originalProperties);
         }
@@ -241,8 +285,7 @@ public class RegistrationIT extends AbstractRestIT {
 
             // this should send resetpwd  link in email to newly added org 
admin user(that did not exist
             ///in usergrid) and "User Invited To Organization" email
-            String adminToken = getAdminToken().getAccessToken();
-            Entity node = postAddAdminToOrg("test-organization", 
"[email protected]", "", adminToken);
+            Entity node = postAddAdminToOrg("test-organization", 
"[email protected]", "", getAdminToken());
             UUID userId = (UUID) node.getMap("data").get("user").get("uuid");
 
             refreshIndex();
@@ -298,33 +341,31 @@ public class RegistrationIT extends AbstractRestIT {
             setTestProperty(PROPERTIES_SYSADMIN_EMAIL, 
"[email protected]");
 
             // svcSetup an admin user
-            String adminUserName = "AdminUserFromOtherOrg";
-            String adminUserEmail = "[email protected]";
+            String adminUserName = "AdminUserFromOtherOrg" + 
UUIDGenerator.newTimeUUID();
+            String adminUserEmail = adminUserName + "@otherorg.com";
 
-            User adminUser = (User) management().users().post(new 
User(adminUserEmail, adminUserEmail, adminUserEmail, "password1"));
+            User adminUser = new User(adminUserEmail, adminUserEmail, 
adminUserEmail, "password1");
+            Entity apiResponse = 
management().orgs().organization(clientSetup.getOrganizationName()).users().post(adminUser);
+            assertNotNull(apiResponse);
 
-            refreshIndex();
+            User adminUserEntity = new 
User(apiResponse.getMap("data").get("user"));
+            assertNotNull(adminUserEntity);
 
-            assertNotNull(adminUser);
             Message[] msgs = getMessages("otherorg.com", adminUserName, 
"password1");
-            assertEquals(1, msgs.length);
-
-            // add existing admin user to org
+            assertNotEquals(0, msgs.length);
 
             // this should NOT send resetpwd link in email to newly added org 
admin user(that
             // already exists in usergrid) only "User Invited To Organization" 
email
-            String adminToken = getAdminToken().getAccessToken();
-            User node = postAddAdminToOrg("test-organization",
-                adminUserEmail, "password1", adminToken);
-            String uuid = 
node.getMap("data").get("user").get("uuid").toString();
-            UUID userId = UUID.fromString(uuid);
+            User node = postAddAdminToOrg(clientSetup.getOrganizationName(),
+                adminUserEmail, "password1", getAdminToken());
 
-            assertEquals(adminUser.getUuid(), userId);
+            String uuid = node.getUuid().toString();
+            UUID userId = UUID.fromString(uuid);
+            assertEquals(adminUserEntity.getUuid(), userId);
 
             msgs = getMessages("otherorg.com", adminUserName, "password1");
 
-            // only 1 invited msg
-            assertEquals(2, msgs.length);
+            assertNotEquals(0, msgs.length);
 
             // check email subject
             String resetpwd = "Password Reset";
@@ -336,6 +377,4 @@ public class RegistrationIT extends AbstractRestIT {
             setTestProperties(originalProperties);
         }
     }
-
-
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9b1bd03e/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/TestPropertiesResource.java
----------------------------------------------------------------------
diff --git 
a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/TestPropertiesResource.java
 
b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/TestPropertiesResource.java
index 2650c29..0cf327f 100644
--- 
a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/TestPropertiesResource.java
+++ 
b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/TestPropertiesResource.java
@@ -29,7 +29,7 @@ import 
org.apache.usergrid.rest.test.resource2point0.state.ClientContext;
 /**
  *Adds support for changing the management properties in the rest testing 
framework.
  */
-public class TestPropertiesResource extends NamedResource {
+public class TestPropertiesResource extends 
NamedResource<TestPropertiesResource> {
     public TestPropertiesResource( final ClientContext context, final 
UrlResource parent ) {
         super( "testproperties", context, parent );
     }
@@ -44,4 +44,9 @@ public class TestPropertiesResource extends NamedResource {
         return getResource(true).type( MediaType.APPLICATION_JSON_TYPE )
                        .accept( MediaType.APPLICATION_JSON 
).get(ApiResponse.class );
     }
+
+    @Override
+    protected TestPropertiesResource getThis() {
+        return this;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9b1bd03e/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/ApplicationsResource.java
----------------------------------------------------------------------
diff --git 
a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/ApplicationsResource.java
 
b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/ApplicationsResource.java
index 705585c..722a528 100644
--- 
a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/ApplicationsResource.java
+++ 
b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/ApplicationsResource.java
@@ -19,6 +19,7 @@ package 
org.apache.usergrid.rest.test.resource2point0.endpoints;
 
 import org.apache.usergrid.rest.test.resource.app.Collection;
 import 
org.apache.usergrid.rest.test.resource2point0.endpoints.mgmt.CredentialsResource;
+import 
org.apache.usergrid.rest.test.resource2point0.endpoints.mgmt.UsersResource;
 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.Token;
@@ -49,5 +50,9 @@ public class ApplicationsResource extends CollectionEndpoint {
         return new CredentialsResource(  context ,this );
     }
 
+    public UsersResource users(){
+        return new UsersResource(  context ,this );
+    }
+
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9b1bd03e/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/CollectionEndpoint.java
----------------------------------------------------------------------
diff --git 
a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/CollectionEndpoint.java
 
b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/CollectionEndpoint.java
index 5d48524..02d7c5e 100644
--- 
a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/CollectionEndpoint.java
+++ 
b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/CollectionEndpoint.java
@@ -35,11 +35,16 @@ import java.util.*;
 /**
  * //myorg/myapp/mycollection
  */
-public class CollectionEndpoint extends NamedResource {
+public class CollectionEndpoint extends NamedResource<CollectionEndpoint> {
     private static final Logger logger = 
LoggerFactory.getLogger(CollectionEndpoint.class);
 
     protected List<String> acceptHeaders = new ArrayList<String> ();
 
+    @Override
+    protected CollectionEndpoint getThis() {
+        return this;
+    }
+
     public CollectionEndpoint(String name, ClientContext context, UrlResource 
parent) {
         super(name, context, parent);
     }
@@ -219,58 +224,58 @@ public class CollectionEndpoint extends NamedResource {
      * POST /users {"color","red"}
      * </pre>
      */
-    public Entity post(Entity payload){
-
-        String acceptHeader = MediaType.APPLICATION_JSON;
-        if (this.acceptHeaders.size() > 0) {
-            acceptHeader = StringUtils.join(this.acceptHeaders, ',');
-        }
-
-        // use string type so we can log actual response from server
-        String responseString = getResource(true)
-            .type( MediaType.APPLICATION_JSON_TYPE )
-            .accept(acceptHeader)
-            .post(String.class, payload);
-
-        logger.debug("Response from post: " + responseString);
-
-        ObjectMapper mapper = new ObjectMapper();
-        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);
-    }
-
-    public Entity post() {
-
-        String acceptHeader = MediaType.APPLICATION_JSON;
-
-        if (this.acceptHeaders.size() > 0) {
-            acceptHeader = StringUtils.join(this.acceptHeaders, ',');
-        }
-
-        // use string type so we can log actual response from server
-        String responseString = getResource(true)
-            .type( MediaType.APPLICATION_JSON_TYPE )
-            .accept(acceptHeader)
-            .post(String.class);
-
-        logger.debug("Response from post: " + responseString);
-
-        ObjectMapper mapper = new ObjectMapper();
-        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);
-    }
+//    public Entity post(Entity payload){
+//
+//        String acceptHeader = MediaType.APPLICATION_JSON;
+//        if (this.acceptHeaders.size() > 0) {
+//            acceptHeader = StringUtils.join(this.acceptHeaders, ',');
+//        }
+//
+//        // use string type so we can log actual response from server
+//        String responseString = getResource(true)
+//            .type( MediaType.APPLICATION_JSON_TYPE )
+//            .accept(acceptHeader)
+//            .post(String.class, payload);
+//
+//        logger.debug("Response from post: " + responseString);
+//
+//        ObjectMapper mapper = new ObjectMapper();
+//        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);
+//    }
+//
+//    public Entity post() {
+//
+//        String acceptHeader = MediaType.APPLICATION_JSON;
+//
+//        if (this.acceptHeaders.size() > 0) {
+//            acceptHeader = StringUtils.join(this.acceptHeaders, ',');
+//        }
+//
+//        // use string type so we can log actual response from server
+//        String responseString = getResource(true)
+//            .type( MediaType.APPLICATION_JSON_TYPE )
+//            .accept(acceptHeader)
+//            .post(String.class);
+//
+//        logger.debug("Response from post: " + responseString);
+//
+//        ObjectMapper mapper = new ObjectMapper();
+//        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);
+//    }
 
     public ApiResponse post(List<Entity> entityList) {
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9b1bd03e/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/DatabaseResource.java
----------------------------------------------------------------------
diff --git 
a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/DatabaseResource.java
 
b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/DatabaseResource.java
index 7ed31ac..746080b 100644
--- 
a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/DatabaseResource.java
+++ 
b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/DatabaseResource.java
@@ -27,7 +27,7 @@ import 
org.apache.usergrid.rest.test.resource2point0.state.ClientContext;
 /**
  * Contains methods pertaining to system/database/*
  */
-public class DatabaseResource extends NamedResource {
+public class DatabaseResource extends NamedResource<DatabaseResource> {
 
     public DatabaseResource( final ClientContext context, final UrlResource 
parent ) {
         super( "database", context, parent );
@@ -36,4 +36,9 @@ public class DatabaseResource extends NamedResource {
     public SetupResource setup(){
         return new SetupResource (context, this);
     }
+
+    @Override
+    protected DatabaseResource getThis() {
+        return this;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9b1bd03e/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/EntityEndpoint.java
----------------------------------------------------------------------
diff --git 
a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/EntityEndpoint.java
 
b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/EntityEndpoint.java
index 25965ac..b87c091 100644
--- 
a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/EntityEndpoint.java
+++ 
b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/EntityEndpoint.java
@@ -30,7 +30,12 @@ import 
org.apache.usergrid.rest.test.resource2point0.state.ClientContext;
 
 import javax.ws.rs.core.MediaType;
 
-public class EntityEndpoint extends NamedResource {
+public class EntityEndpoint extends NamedResource<EntityEndpoint> {
+
+    @Override
+    protected EntityEndpoint getThis() {
+        return null;
+    }
 
     public EntityEndpoint(String identifier, ClientContext context, 
UrlResource parent) {
         super(identifier, context, parent);

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9b1bd03e/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 bf5dbf0..c3f56dc 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
@@ -17,32 +17,35 @@
 package org.apache.usergrid.rest.test.resource2point0.endpoints;
 
 
+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.WebResource;
 
-import java.util.HashMap;
+import javax.ws.rs.core.MediaType;
 import java.util.Iterator;
+import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.UUID;
 
 
 /**
  * Base class that is extended by named endpoints.
  * The NamedResource stores the parent of the class, the context in which the 
class operates and then Name of this resource
  */
-public abstract class NamedResource implements UrlResource {
+public abstract class NamedResource<T extends NamedResource<T>> implements 
UrlResource {
 
-    protected final String name;
-    protected final ClientContext context;
+    protected String name;
+    protected ClientContext context;
     /* Stores the path of the parent that called it.
     i.e If we had a ApplicationResource ( an instance of a namedResource ) 
this would contain the OrganizationResource.
      */
-    protected final UrlResource parent;
+    protected UrlResource parent;
 
+    protected abstract T getThis();
 
     public NamedResource( final String name, final ClientContext context, 
final UrlResource parent ) {
         this.name = name;
@@ -105,5 +108,40 @@ public abstract class NamedResource implements UrlResource 
{
         return resource;
     }
 
+    public T withToken(Token token){
+        T generic=this.getThis();
+        generic.context.setToken(token);
+        return generic;
+    }
+    public <Type> Type post() {
+        return ((Type) this.post(new Entity(), this.context.getToken()));
+    }
+    public <Type> Type post(Object requestEntity) {
+        return ((Type) this.post(requestEntity,this.context.getToken()));
+    }
+    public <Type> Type post(Object requestEntity, Token token) {
+        WebResource resource = getResource(true, token);
+        return ((Type) resource.type(MediaType.APPLICATION_JSON_TYPE)
+            .accept(MediaType.APPLICATION_JSON).post(Entity.class, 
requestEntity));
+    }
+    public <Type> Type post(List<Type> requestEntity, Token token) {
+        WebResource resource = getResource(true, token);
+        return ((Type) resource.type(MediaType.APPLICATION_JSON_TYPE)
+            .accept(MediaType.APPLICATION_JSON).post(Entity.class, 
requestEntity));
+    }
+    public <Type> Type put() {
+        return ((Type) this.put(new Entity(), this.context.getToken()));
+    }
+    public <Type> Type put(Object requestEntity) {
+        return ((Type) this.put(requestEntity, this.context.getToken()));
+    }
+    public <Type> Type put(Object requestEntity, Token token) {
+        WebResource resource = getResource(true, token);
+        return ((Type) resource.type(MediaType.APPLICATION_JSON_TYPE)
+            .accept(MediaType.APPLICATION_JSON).put(Entity.class, 
requestEntity));
+    }
+    public <Type> Type get() {
+        return ((Type) this.getResource(true, 
this.context.getToken()).get(Entity.class));
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9b1bd03e/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/OrganizationResource.java
----------------------------------------------------------------------
diff --git 
a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/OrganizationResource.java
 
b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/OrganizationResource.java
index 253de6e..14c4cb8 100644
--- 
a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/OrganizationResource.java
+++ 
b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/OrganizationResource.java
@@ -31,9 +31,14 @@ import 
org.apache.usergrid.rest.test.resource2point0.state.ClientContext;
  * Holds the information required for building and chaining organization 
objects to applications.
  * Should also contain the GET,PUT,POST,DELETE methods of functioning in here.
  */
-public class OrganizationResource extends NamedResource {
+public class OrganizationResource extends NamedResource<OrganizationResource> {
 
 
+    @Override
+    protected OrganizationResource getThis() {
+        return this;
+    }
+
     public OrganizationResource( final String name, final ClientContext 
context, final UrlResource parent ) {
         super( name, context, parent );
     }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9b1bd03e/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/SetupResource.java
----------------------------------------------------------------------
diff --git 
a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/SetupResource.java
 
b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/SetupResource.java
index 1639ce5..b7776f6 100644
--- 
a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/SetupResource.java
+++ 
b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/SetupResource.java
@@ -30,7 +30,7 @@ import com.sun.jersey.api.client.WebResource;
 /**
  * Functions as the endpoint for all resources that hit /system/ * /setup
  */
-public class SetupResource extends NamedResource {
+public class SetupResource extends NamedResource<SetupResource> {
 
     public SetupResource( final ClientContext context, final UrlResource 
parent ) {
         super("setup",context,parent);
@@ -43,4 +43,10 @@ public class SetupResource extends NamedResource {
         return resource.type( MediaType.APPLICATION_JSON_TYPE ).accept( 
MediaType.APPLICATION_JSON )
                                 .get( Entity.class );
     }
+
+
+    @Override
+    protected SetupResource getThis() {
+        return this;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9b1bd03e/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/SystemResource.java
----------------------------------------------------------------------
diff --git 
a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/SystemResource.java
 
b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/SystemResource.java
index e2bff1f..827efde 100644
--- 
a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/SystemResource.java
+++ 
b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/SystemResource.java
@@ -24,7 +24,7 @@ import 
org.apache.usergrid.rest.test.resource2point0.state.ClientContext;
 /**
  * Handles making rest calls to system resources.
  */
-public class SystemResource extends NamedResource {
+public class SystemResource extends NamedResource<SystemResource> {
 
     public SystemResource(final ClientContext context, final UrlResource 
parent ) {
         super( "system",context, parent );
@@ -33,4 +33,9 @@ public class SystemResource extends NamedResource {
     public DatabaseResource database() {
         return new DatabaseResource(context, this);
     }
+
+    @Override
+    protected SystemResource getThis() {
+        return this;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9b1bd03e/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/TokenResource.java
----------------------------------------------------------------------
diff --git 
a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/TokenResource.java
 
b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/TokenResource.java
index dd88dbe..202b5a8 100644
--- 
a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/TokenResource.java
+++ 
b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/TokenResource.java
@@ -31,7 +31,7 @@ import javax.ws.rs.core.MediaType;
 /**
  * Classy class class.
  */
-public class TokenResource extends NamedResource {
+public class TokenResource extends NamedResource<TokenResource> {
     public TokenResource(final ClientContext context, final UrlResource 
parent) {
         super("token", context, parent);
     }
@@ -86,4 +86,8 @@ public class TokenResource extends NamedResource {
         return this;
     }
 
+    @Override
+    protected TokenResource getThis() {
+        return this;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9b1bd03e/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/ApplicationResource.java
----------------------------------------------------------------------
diff --git 
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
index 6b7742f..0cde665 100644
--- 
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
@@ -32,11 +32,16 @@ import 
org.apache.usergrid.rest.test.resource2point0.state.ClientContext;
 /**
  * Classy class class.
  */
-public class ApplicationResource extends NamedResource {
+public class ApplicationResource extends NamedResource<ApplicationResource> {
     public ApplicationResource(ClientContext context, UrlResource parent) {
         super("applications", context, parent);
     }
 
+    @Override
+    protected ApplicationResource getThis() {
+        return this;
+    }
+
     public ApplicationResource( final String name, final ClientContext 
context, final UrlResource parent ) {
         super( name, context, parent );
     }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9b1bd03e/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/AuthorizeResource.java
----------------------------------------------------------------------
diff --git 
a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/AuthorizeResource.java
 
b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/AuthorizeResource.java
index 7dd820b..b61e1b1 100644
--- 
a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/AuthorizeResource.java
+++ 
b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/AuthorizeResource.java
@@ -27,7 +27,7 @@ import 
org.apache.usergrid.rest.test.resource2point0.state.ClientContext;
 /**
  * OAuth authorization resource
  */
-public class AuthorizeResource extends NamedResource {
+public class AuthorizeResource extends NamedResource<AuthorizeResource> {
     public AuthorizeResource(final ClientContext context, final UrlResource 
parent) {
         super("authorize", context, parent);
     }
@@ -56,4 +56,8 @@ public class AuthorizeResource extends NamedResource {
 
     }
 
+    @Override
+    protected AuthorizeResource getThis() {
+        return this;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9b1bd03e/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/ConfirmResource.java
----------------------------------------------------------------------
diff --git 
a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/ConfirmResource.java
 
b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/ConfirmResource.java
index 5692dfe..161c799 100644
--- 
a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/ConfirmResource.java
+++ 
b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/ConfirmResource.java
@@ -31,7 +31,7 @@ import com.sun.jersey.api.client.WebResource;
 /**
  * For confirming users
  */
-public class ConfirmResource extends NamedResource {
+public class ConfirmResource extends NamedResource<ConfirmResource> {
     public ConfirmResource( final ClientContext context, final UrlResource 
parent ) {
         super( "confirm", context, parent );
     }
@@ -43,4 +43,9 @@ public class ConfirmResource extends NamedResource {
                                        .accept( MediaType.TEXT_HTML).get( 
String.class );
 
     }
+
+    @Override
+    protected ConfirmResource getThis() {
+        return this;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9b1bd03e/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/CredentialsResource.java
----------------------------------------------------------------------
diff --git 
a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/CredentialsResource.java
 
b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/CredentialsResource.java
index 8e5a334..8192e6c 100644
--- 
a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/CredentialsResource.java
+++ 
b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/CredentialsResource.java
@@ -31,7 +31,7 @@ import javax.ws.rs.core.MediaType;
 
 /**
  */
-public class CredentialsResource extends NamedResource {
+public class CredentialsResource extends NamedResource<CredentialsResource> {
 
     public CredentialsResource(final ClientContext context, final UrlResource 
parent) {
         super("credentials", context, parent);
@@ -52,4 +52,9 @@ public class CredentialsResource extends NamedResource {
     public Credentials get() {
         return get(null, true);
     }
+
+    @Override
+    protected CredentialsResource getThis() {
+        return this;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9b1bd03e/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/DeactivateResource.java
----------------------------------------------------------------------
diff --git 
a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/DeactivateResource.java
 
b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/DeactivateResource.java
new file mode 100644
index 0000000..67edd14
--- /dev/null
+++ 
b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/DeactivateResource.java
@@ -0,0 +1,24 @@
+package org.apache.usergrid.rest.test.resource2point0.endpoints.mgmt;
+
+import com.sun.jersey.api.client.WebResource;
+import org.apache.usergrid.rest.test.resource2point0.endpoints.NamedResource;
+import org.apache.usergrid.rest.test.resource2point0.endpoints.UrlResource;
+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.state.ClientContext;
+
+import javax.ws.rs.core.MediaType;
+
+/**
+ * Created by ApigeeCorporation on 4/7/15.
+ */
+public class DeactivateResource extends NamedResource<DeactivateResource> {
+    public DeactivateResource(final ClientContext context, final UrlResource 
parent) {
+        super("deactivate", context, parent);
+    }
+
+    @Override
+    protected DeactivateResource getThis() {
+        return this;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9b1bd03e/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/FeedResource.java
----------------------------------------------------------------------
diff --git 
a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/FeedResource.java
 
b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/FeedResource.java
index 5b95aa5..c8aec7e 100644
--- 
a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/FeedResource.java
+++ 
b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/FeedResource.java
@@ -34,7 +34,7 @@ import 
org.apache.usergrid.rest.test.resource2point0.state.ClientContext;
  * Contains the REST methods to interacting with the ManagementEndpoints
  * and the user feeds
  */
-public class FeedResource extends NamedResource {
+public class FeedResource extends NamedResource<FeedResource> {
     public FeedResource(final ClientContext context, final UrlResource parent) 
{
         super ( "feed",context, parent);
     }
@@ -45,4 +45,9 @@ public class FeedResource extends NamedResource {
 
 
     }
+
+    @Override
+    protected FeedResource getThis() {
+        return this;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9b1bd03e/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/ManagementResource.java
----------------------------------------------------------------------
diff --git 
a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/ManagementResource.java
 
b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/ManagementResource.java
index 3bad451..cd54561 100644
--- 
a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/ManagementResource.java
+++ 
b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/ManagementResource.java
@@ -24,7 +24,7 @@ import 
org.apache.usergrid.rest.test.resource2point0.state.ClientContext;
 /**
  * Contains the REST methods to interacting with the ManagementEndpoints
  */
-public class ManagementResource extends NamedResource {
+public class ManagementResource extends NamedResource<ManagementResource> {
     public ManagementResource( final ClientContext context, final UrlResource 
parent ) {
         super( "management", context, parent );
     }
@@ -49,4 +49,8 @@ public class ManagementResource extends NamedResource {
         return new EntityEndpoint(identifier, context, this);
     }
 
+    @Override
+    protected ManagementResource getThis() {
+        return this;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9b1bd03e/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/OrgResource.java
----------------------------------------------------------------------
diff --git 
a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/OrgResource.java
 
b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/OrgResource.java
index 2786cb0..3e68b03 100644
--- 
a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/OrgResource.java
+++ 
b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/OrgResource.java
@@ -43,7 +43,7 @@ import java.io.StringReader;
 /**
  * Manages the Management/ORG endpoint.
  */
-public class OrgResource  extends NamedResource {
+public class OrgResource  extends NamedResource<OrgResource> {
     private static final Logger logger = 
LoggerFactory.getLogger(OrgResource.class);
 
     public OrgResource( final ClientContext context, final UrlResource parent 
) {
@@ -169,4 +169,8 @@ public class OrgResource  extends NamedResource {
         return new CredentialsResource(  context ,this );
     }
 
+    @Override
+    protected OrgResource getThis() {
+        return this;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9b1bd03e/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/OrganizationResource.java
----------------------------------------------------------------------
diff --git 
a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/OrganizationResource.java
 
b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/OrganizationResource.java
index 9281ad2..a686141 100644
--- 
a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/OrganizationResource.java
+++ 
b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/OrganizationResource.java
@@ -32,7 +32,12 @@ import java.util.Map;
  * Holds the information required for building and chaining organization 
objects to applications.
  * Should also contain the GET,PUT,POST,DELETE methods of functioning in here.
  */
-public class OrganizationResource extends NamedResource {
+public class OrganizationResource extends NamedResource<OrganizationResource> {
+
+    @Override
+    protected OrganizationResource getThis() {
+        return this;
+    }
 
     public OrganizationResource(final String name, final ClientContext 
context, final UrlResource parent) {
         super(name, context, parent);

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9b1bd03e/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/PasswordResource.java
----------------------------------------------------------------------
diff --git 
a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/PasswordResource.java
 
b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/PasswordResource.java
index c901022..e23f664 100644
--- 
a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/PasswordResource.java
+++ 
b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/PasswordResource.java
@@ -36,7 +36,7 @@ import com.sun.jersey.api.client.WebResource;
  * /management/users/"username"/password
  * Allows admin users to change their passwords
  */
-public class PasswordResource extends NamedResource {
+public class PasswordResource extends NamedResource<PasswordResource> {
 
     public PasswordResource( final ClientContext context, final UrlResource 
parent ) {
         super( "password", context, parent );
@@ -58,4 +58,9 @@ public class PasswordResource extends NamedResource {
     public Entity post(Map<String, Object> payload){
         return post( null, payload );
     }
+
+    @Override
+    protected PasswordResource getThis() {
+        return this;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9b1bd03e/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/ReactivateResource.java
----------------------------------------------------------------------
diff --git 
a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/ReactivateResource.java
 
b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/ReactivateResource.java
index 25dc95e..835b64b 100644
--- 
a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/ReactivateResource.java
+++ 
b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/ReactivateResource.java
@@ -32,7 +32,7 @@ import com.sun.jersey.api.client.WebResource;
 /**
  * handles the * /reactivate endpoints
  */
-public class ReactivateResource extends NamedResource {
+public class ReactivateResource extends NamedResource<ReactivateResource> {
     public ReactivateResource(final ClientContext context, final UrlResource 
parent) {
         super("reactivate",context, parent);
     }
@@ -43,4 +43,9 @@ public class ReactivateResource extends NamedResource {
                                        .accept( MediaType.APPLICATION_JSON 
).get( ApiResponse.class);
         return new Entity(response);
     }
+
+    @Override
+    protected ReactivateResource getThis() {
+        return this;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9b1bd03e/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/ResetResource.java
----------------------------------------------------------------------
diff --git 
a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/ResetResource.java
 
b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/ResetResource.java
index 17a3a39..71096d4 100644
--- 
a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/ResetResource.java
+++ 
b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/ResetResource.java
@@ -29,7 +29,7 @@ import com.sun.jersey.api.representation.Form;
 /**
  * Handles /resetpw endpoints for the user resource.
  */
-public class ResetResource extends NamedResource {
+public class ResetResource extends NamedResource<ResetResource> {
 
     public ResetResource( final ClientContext context, final UrlResource 
parent ) {
         super( "resetpw", context, parent );
@@ -39,4 +39,9 @@ public class ResetResource extends NamedResource {
         return getResource().type( MediaType.APPLICATION_FORM_URLENCODED_TYPE )
             .accept( MediaType.TEXT_HTML ).post( String.class, formPayload);
     }
+
+    @Override
+    protected ResetResource getThis() {
+        return this;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9b1bd03e/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/RevokeTokensResource.java
----------------------------------------------------------------------
diff --git 
a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/RevokeTokensResource.java
 
b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/RevokeTokensResource.java
new file mode 100644
index 0000000..fe21d68
--- /dev/null
+++ 
b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/RevokeTokensResource.java
@@ -0,0 +1,19 @@
+package org.apache.usergrid.rest.test.resource2point0.endpoints.mgmt;
+
+import org.apache.usergrid.rest.test.resource2point0.endpoints.NamedResource;
+import org.apache.usergrid.rest.test.resource2point0.endpoints.UrlResource;
+import org.apache.usergrid.rest.test.resource2point0.state.ClientContext;
+
+/**
+ * Created by ApigeeCorporation on 4/7/15.
+ */
+public class RevokeTokensResource extends NamedResource<RevokeTokensResource> {
+    public RevokeTokensResource(final ClientContext context, final UrlResource 
parent) {
+        super("revoketokens", context, parent);
+    }
+
+    @Override
+    protected RevokeTokensResource getThis() {
+        return this;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9b1bd03e/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/TokenResource.java
----------------------------------------------------------------------
diff --git 
a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/TokenResource.java
 
b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/TokenResource.java
index cb4d286..aee900a 100644
--- 
a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/TokenResource.java
+++ 
b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/TokenResource.java
@@ -30,7 +30,7 @@ import javax.ws.rs.core.MediaType;
 /**
  * Called by the ManagementResource. This contains anything token related that 
comes back to the ManagementResource.
  */
-public class TokenResource extends NamedResource {
+public class TokenResource extends NamedResource<TokenResource> {
     public TokenResource(final ClientContext context, final UrlResource 
parent) {
         super("token", context, parent);
     }
@@ -81,4 +81,9 @@ public class TokenResource extends NamedResource {
         this.context.setToken(token);
         return this;
     }
+
+    @Override
+    protected TokenResource getThis() {
+        return this;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9b1bd03e/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/UserResource.java
----------------------------------------------------------------------
diff --git 
a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/UserResource.java
 
b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/UserResource.java
index 9af23ce..10b744c 100644
--- 
a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/UserResource.java
+++ 
b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/UserResource.java
@@ -32,12 +32,25 @@ import com.sun.jersey.api.client.WebResource;
  * /management/users/"username"
  * Store endpoints relating to specific users
  */
-public class UserResource extends NamedResource {
+public class UserResource extends NamedResource<UserResource> {
+
+    @Override
+    protected UserResource getThis() {
+        return this;
+    }
 
     public UserResource( final String name, final ClientContext context, final 
UrlResource parent ) {
         super( name, context, parent );
     }
 
+    public DeactivateResource deactivate() {
+        return new DeactivateResource( context, this );
+    }
+
+    public RevokeTokensResource revoketokens() {
+        return new RevokeTokensResource( context, this );
+    }
+
     public ReactivateResource reactivate() {
         return new ReactivateResource( context, this );
     }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9b1bd03e/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/UsersResource.java
----------------------------------------------------------------------
diff --git 
a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/UsersResource.java
 
b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/UsersResource.java
index e62d5aa..b09e3c5 100644
--- 
a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/UsersResource.java
+++ 
b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/UsersResource.java
@@ -34,7 +34,7 @@ import com.sun.jersey.api.client.WebResource;
  * Handles calls to the users management endpoint
  * Example: /management/orgs/org_name/users
  */
-public class UsersResource extends NamedResource {
+public class UsersResource extends NamedResource<UsersResource> {
     public UsersResource( final ClientContext context, final UrlResource 
parent ) {
         super( "users", context, parent );
     }
@@ -69,4 +69,9 @@ public class UsersResource extends NamedResource {
                                        .accept( MediaType.APPLICATION_JSON 
).get( ApiResponse.class);
         return new Entity(response);
     }
+
+    @Override
+    protected UsersResource getThis() {
+        return this;
+    }
 }

Reply via email to