You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by ro...@apache.org on 2014/12/17 00:02:46 UTC

incubator-usergrid git commit: added roles/groups resources

Repository: incubator-usergrid
Updated Branches:
  refs/heads/UG-rest-test-framework-overhaul 086091052 -> e276e4faa


added roles/groups resources


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

Branch: refs/heads/UG-rest-test-framework-overhaul
Commit: e276e4faa81798471538bed3eda64a6733033df8
Parents: 0860910
Author: Rod Simpson <ro...@apigee.com>
Authored: Tue Dec 16 16:02:38 2014 -0700
Committer: Rod Simpson <ro...@apigee.com>
Committed: Tue Dec 16 16:02:38 2014 -0700

----------------------------------------------------------------------
 .../collection/groups/GroupResourceIT.java      | 81 +++++++-------------
 .../test/resource2point0/AbstractRestIT.java    |  3 +
 .../endpoints/AbstractCollectionResource.java   |  4 +-
 .../endpoints/ApplicationsResource.java         | 11 ++-
 .../endpoints/EntityResource.java               |  5 +-
 .../endpoints/GroupResource.java                | 19 +++++
 .../endpoints/GroupsResource.java               | 29 +++++++
 .../resource2point0/endpoints/RoleResource.java | 19 +++++
 .../endpoints/RolesResource.java                | 53 +++++++++++++
 .../resource2point0/endpoints/UserResource.java |  1 -
 .../endpoints/UsersResource.java                |  1 -
 .../rest/test/resource2point0/model/Group.java  | 37 +++++++++
 .../rest/test/resource2point0/model/Role.java   | 28 +++++++
 13 files changed, 227 insertions(+), 64 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/e276e4fa/stack/rest/src/test/java/org/apache/usergrid/rest/applications/collection/groups/GroupResourceIT.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/applications/collection/groups/GroupResourceIT.java b/stack/rest/src/test/java/org/apache/usergrid/rest/applications/collection/groups/GroupResourceIT.java
index 704ca17..1a78865 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/applications/collection/groups/GroupResourceIT.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/applications/collection/groups/GroupResourceIT.java
@@ -17,31 +17,15 @@
 package org.apache.usergrid.rest.applications.collection.groups;
 
 
-import java.util.Map;
-import java.util.UUID;
-
-import javax.rmi.CORBA.Util;
-import javax.ws.rs.core.MediaType;
-
 import com.fasterxml.jackson.databind.JsonNode;
 import java.io.IOException;
-
-import com.google.gson.JsonObject;
 import com.sun.jersey.api.client.UniformInterfaceException;
-import org.apache.usergrid.persistence.model.util.UUIDGenerator;
-import org.apache.usergrid.utils.JsonUtils;
-import org.junit.Before;
-import org.junit.Rule;
+import org.apache.usergrid.rest.test.resource2point0.AbstractRestIT;
+import org.apache.usergrid.rest.test.resource2point0.model.Group;
 import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.apache.usergrid.cassandra.Concurrent;
-import org.apache.usergrid.java.client.Client.Query;
-import org.apache.usergrid.java.client.response.ApiResponse;
-import org.apache.usergrid.rest.AbstractRestIT;
-import org.apache.usergrid.rest.TestContextSetup;
-import org.apache.usergrid.rest.test.resource.app.GroupsCollection;
-import org.apache.usergrid.utils.UUIDUtils;
 
 import static org.junit.Assert.*;
 
@@ -50,14 +34,6 @@ import static org.junit.Assert.*;
 public class GroupResourceIT extends AbstractRestIT {
     private static Logger log = LoggerFactory.getLogger( GroupResourceIT.class );
 
-    /*
-    private static final String GROUP = "testGroup" + UUIDUtils.newTimeUUID();
-    private static final String USER = "edanuff" + UUIDUtils.newTimeUUID();
-*/
-
-    @Rule
-    public TestContextSetup context = new TestContextSetup( this );
-
     public GroupResourceIT() throws Exception { }
 
     /***
@@ -67,81 +43,76 @@ public class GroupResourceIT extends AbstractRestIT {
     @Test()
     public void createGroupValidation() throws IOException {
 
-        GroupsCollection groups = context.groups();
-
-        //create a group with a normal name
         String groupName = "testgroup";
         String groupPath = "testgroup";
-        JsonNode testGroup = groups.create(groupName, groupPath);
-        //verify the group was created
+        Group group = new Group(groupName, groupPath);
+        Group testGroup = this.getAppResource().groups().post(group);
         assertNull(testGroup.get("errors"));
-        assertEquals(testGroup.get("path").asText(), groupPath);
+        assertEquals(testGroup.get("path"), groupPath);
+
     }
 
     /***
      *
      * Verify that we can create a group with a slash in the name and path
      */
+
     @Test()
     public void createGroupSlashInNameAndPathValidation() throws IOException {
 
-        GroupsCollection groups = context.groups();
-
-        //create a group with a slash in the name
         String groupNameSlash = "test/group";
         String groupPathSlash = "test/group";
-        JsonNode testGroup = groups.create( groupNameSlash, groupPathSlash );
-        //verify the group was created
-        assertNull( testGroup.get( "errors" ) );
-        assertEquals( testGroup.get("path").asText(),groupPathSlash );
+        Group group = new Group(groupNameSlash, groupPathSlash);
+        Group testGroup = this.getAppResource().groups().post(group);
+        assertNull(testGroup.get("errors"));
+        assertEquals(testGroup.get("path"), groupPathSlash);
+
     }
 
     /***
      *
      * Verify that we can create a group with a space in the name
      */
+
     @Test()
     public void createGroupSpaceInNameValidation() throws IOException {
 
-        GroupsCollection groups = context.groups();
-
-        //create a group with a space in the name
-        String groupName = "test group";
+        String groupSpaceName = "test group";
         String groupPath = "testgroup";
-        try {
-            JsonNode testGroup = groups.create(groupName, groupPath);
-        } catch (UniformInterfaceException e) {
-            //verify the correct error was returned
-            JsonNode node = mapper.readTree( e.getResponse().getEntity( String.class ));
-            assertEquals( "illegal_argument", node.get( "error" ).textValue() );
-        }
+        Group group = new Group(groupSpaceName, groupPath);
+        Group testGroup = this.getAppResource().groups().post(group);
+        assertNull(testGroup.get("errors"));
+        assertEquals(testGroup.get("path"), groupPath);
+
     }
 
     /***
      *
      * Verify that we cannot create a group with a space in the path
      */
+
     @Test()
     public void createGroupSpaceInPathValidation() throws IOException {
 
-        GroupsCollection groups = context.groups();
-
-        //create a group with a space in the path
         String groupName = "testgroup";
-        String groupPath = "test group";
+        String groupSpacePath = "test group";
+        Group group = new Group(groupName, groupSpacePath);
+
         try {
-            JsonNode testGroup = groups.create(groupName, groupPath);
+            Group testGroup = this.getAppResource().groups().post(group);
         } catch (UniformInterfaceException e) {
             //verify the correct error was returned
             JsonNode node = mapper.readTree( e.getResponse().getEntity( String.class ));
             assertEquals( "illegal_argument", node.get( "error" ).textValue() );
         }
+
     }
 
     /***
      *
      * Verify that we cannot create a group with a space in the path
      */
+    /*
     @Test
     public void postGroupActivity() throws IOException {
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/e276e4fa/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/AbstractRestIT.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/AbstractRestIT.java b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/AbstractRestIT.java
index 4918dce..be99a13 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/AbstractRestIT.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/AbstractRestIT.java
@@ -21,6 +21,7 @@ import java.net.URI;
 import java.net.URLClassLoader;
 import java.util.Arrays;
 
+import com.fasterxml.jackson.databind.ObjectMapper;
 import org.apache.usergrid.rest.test.resource2point0.endpoints.ApplicationsResource;
 import org.apache.usergrid.rest.test.resource2point0.endpoints.OrganizationResource;
 import org.junit.ClassRule;
@@ -62,6 +63,8 @@ public class AbstractRestIT extends JerseyTest {
     }
 
 
+    protected ObjectMapper mapper = new ObjectMapper();
+
     static {
         clientConfig.getFeatures().put( JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE );
         descriptor = new WebAppDescriptor.Builder( "org.apache.usergrid.rest" )

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/e276e4fa/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/AbstractCollectionResource.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/AbstractCollectionResource.java b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/AbstractCollectionResource.java
index b0eae47..5953cb5 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/AbstractCollectionResource.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/AbstractCollectionResource.java
@@ -64,7 +64,7 @@ public abstract class AbstractCollectionResource<T,K> extends NamedResource {
      * @return
      */
     public T post(final T entity){
-        return instantiateT(getResource(true).post(ApiResponse.class, entity));
+        return instantiateT(getResource(true).type(MediaType.APPLICATION_JSON_TYPE).accept(MediaType.APPLICATION_JSON).post(ApiResponse.class, entity));
     }
 
     /**
@@ -73,7 +73,7 @@ public abstract class AbstractCollectionResource<T,K> extends NamedResource {
      * @return
      */
     public T put(final T entity){
-        return instantiateT(getResource(true).put(ApiResponse.class, entity));
+        return instantiateT(getResource(true).type( MediaType.APPLICATION_JSON_TYPE ).accept( MediaType.APPLICATION_JSON ).put(ApiResponse.class, entity));
     }
 
     protected abstract T instantiateT(ApiResponse response);

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/e276e4fa/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 6fa722e..e0670e1 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
@@ -57,15 +57,24 @@ public class ApplicationsResource extends AbstractCollectionResource<Application
         return new UsersResource( context , this);
     }
 
+    public GroupsResource groups(){
+        return new GroupsResource( context , this);
+    }
+
+    public RolesResource roles(){
+        return new RolesResource( context , this);
+    }
+
     /**
      * Currently hardcoded to users, this is because we expect to create and chain different cases of collections.
      * The pattern should look like: orgs.apps.users , orgs.apps.groups and so on...
      * @return
      */
+    /*
     public CollectionResource roles(){
         return new CollectionResource("roles", context , this);
     }
-
+*/
     /**
      * Currently hardcoded to users, this is because we expect to create and chain different cases of collections.
      * The pattern should look like: orgs.apps.users , orgs.apps.groups and so on...

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/e276e4fa/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/EntityResource.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/EntityResource.java b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/EntityResource.java
index f432d9b..9e73d52 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/EntityResource.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/EntityResource.java
@@ -20,14 +20,11 @@
 
 package org.apache.usergrid.rest.test.resource2point0.endpoints;
 
-import com.sun.jersey.api.client.WebResource;
 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.Group;
 import org.apache.usergrid.rest.test.resource2point0.state.ClientContext;
 
-import javax.ws.rs.core.MediaType;
-
 /**
  * Classy class class.
  */

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/e276e4fa/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/GroupResource.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/GroupResource.java b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/GroupResource.java
new file mode 100644
index 0000000..95d1d33
--- /dev/null
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/GroupResource.java
@@ -0,0 +1,19 @@
+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.Group;
+import org.apache.usergrid.rest.test.resource2point0.state.ClientContext;
+
+/**
+ * Created by rockerston on 12/16/14.
+ */
+public class GroupResource extends AbstractEntityResource<Group>  {
+    public GroupResource(String name, ClientContext context, UrlResource parent) {
+        super(name, context, parent);
+    }
+
+    @Override
+    protected Group instantiateT(ApiResponse response) {
+        return new Group(response);
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/e276e4fa/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/GroupsResource.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/GroupsResource.java b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/GroupsResource.java
new file mode 100644
index 0000000..5be68e1
--- /dev/null
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/GroupsResource.java
@@ -0,0 +1,29 @@
+package org.apache.usergrid.rest.test.resource2point0.endpoints;
+
+import org.apache.usergrid.rest.test.resource2point0.model.*;
+import org.apache.usergrid.rest.test.resource2point0.state.ClientContext;
+import org.apache.usergrid.rest.test.resource2point0.model.Group;
+
+import javax.ws.rs.core.MediaType;
+
+/**
+ * Created by rockerston on 12/16/14.
+ */
+public class GroupsResource extends AbstractCollectionResource<Group,GroupResource> {
+
+    public GroupsResource( ClientContext context, UrlResource parent) {
+        super("groups", context, parent);
+    }
+
+    @Override
+    protected Group instantiateT(ApiResponse response) {
+        return new Group(response);
+    }
+
+    @Override
+    protected GroupResource instantiateK(String name, ClientContext context, UrlResource parent) {
+        return new GroupResource(name,context,parent);
+    }
+
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/e276e4fa/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/RoleResource.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/RoleResource.java b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/RoleResource.java
new file mode 100644
index 0000000..b488da8
--- /dev/null
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/RoleResource.java
@@ -0,0 +1,19 @@
+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.Role;
+import org.apache.usergrid.rest.test.resource2point0.state.ClientContext;
+
+/**
+ * Created by rockerston on 12/16/14.
+ */
+public class RoleResource  extends AbstractEntityResource<Role>  {
+    public RoleResource(String name, ClientContext context, UrlResource parent) {
+        super(name, context, parent);
+    }
+
+    @Override
+    protected Role instantiateT(ApiResponse response) {
+        return new Role(response);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/e276e4fa/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/RolesResource.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/RolesResource.java b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/RolesResource.java
new file mode 100644
index 0000000..963f936
--- /dev/null
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/RolesResource.java
@@ -0,0 +1,53 @@
+package org.apache.usergrid.rest.test.resource2point0.endpoints;
+
+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.Application;
+import org.apache.usergrid.rest.test.resource2point0.model.Group;
+import org.apache.usergrid.rest.test.resource2point0.model.Role;
+import org.apache.usergrid.rest.test.resource2point0.state.ClientContext;
+
+import javax.ws.rs.core.MediaType;
+
+/**
+ * Created by rockerston on 12/16/14.
+ */
+public class RolesResource extends NamedResource{
+
+    public RolesResource(ClientContext context, UrlResource parent) {
+        super("roles", context, parent);
+    }
+
+
+    public Role post(Role role){
+        ApiResponse response =getResource(true).type( MediaType.APPLICATION_JSON_TYPE ).accept( MediaType.APPLICATION_JSON )
+                .post( ApiResponse.class, role );
+
+        return new Role(response);
+
+    }
+
+    public Application put(Application application){
+        ApiResponse response =getResource(true).type( MediaType.APPLICATION_JSON_TYPE ).accept( MediaType.APPLICATION_JSON )
+                .put(ApiResponse.class, application );
+
+        return new Application(response);
+
+    }
+
+
+    public ApiResponse get(){
+        ApiResponse response =getResource(true).type( MediaType.APPLICATION_JSON_TYPE ).accept( MediaType.APPLICATION_JSON )
+                .get(ApiResponse.class);
+
+        return response;
+
+    }
+
+    public void delete(Application application){
+        ApiResponse response =getResource(true).type( MediaType.APPLICATION_JSON_TYPE ).accept( MediaType.APPLICATION_JSON )
+                .delete(ApiResponse.class );
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/e276e4fa/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/UserResource.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/UserResource.java b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/UserResource.java
index 22b47ce..5220f13 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/UserResource.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/UserResource.java
@@ -21,7 +21,6 @@
 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.User;
 import org.apache.usergrid.rest.test.resource2point0.state.ClientContext;
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/e276e4fa/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/UsersResource.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/UsersResource.java b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/UsersResource.java
index 4eb39b9..408c623 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/UsersResource.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/UsersResource.java
@@ -21,7 +21,6 @@
 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.Organization;
 import org.apache.usergrid.rest.test.resource2point0.model.User;
 import org.apache.usergrid.rest.test.resource2point0.state.ClientContext;
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/e276e4fa/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/model/Group.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/model/Group.java b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/model/Group.java
new file mode 100644
index 0000000..bea3c12
--- /dev/null
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/model/Group.java
@@ -0,0 +1,37 @@
+package org.apache.usergrid.rest.test.resource2point0.model;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created by rockerston on 12/16/14.
+ */
+public class Group extends Entity{
+
+    public Group(){}
+
+    public Group(String name, String path) {
+
+        this.put("name", name);
+        this.put("path", path);
+    }
+
+    public Group (ApiResponse<Entity> response){
+        if(response.getEntities() !=null &&  response.getEntities().size()>=1){
+            List<Entity> entities =  response.getEntities();
+            Map<String,Object> entity = entities.get(0);
+            this.putAll(entity);
+        }
+    }
+
+    public String getName(){
+        return (String) this.get("name");
+    }
+
+    public String getPath(){
+        return (String) this.get("path");
+    }
+
+
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/e276e4fa/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/model/Role.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/model/Role.java b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/model/Role.java
new file mode 100644
index 0000000..d318d72
--- /dev/null
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/model/Role.java
@@ -0,0 +1,28 @@
+package org.apache.usergrid.rest.test.resource2point0.model;
+
+/**
+ * Created by rockerston on 12/16/14.
+ */
+public class Role extends Entity{
+
+    public Role(){}
+
+    public Role(String name, String path) {
+
+        this.put("name", name);
+        this.put("path", path);
+    }
+
+    public Role (ApiResponse response){
+        setResponse( response,"owner" );
+    }
+
+    public String getName(){
+        return (String) this.get("name");
+    }
+
+    public String getPath(){
+        return (String) this.get("path");
+    }
+
+}