You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by sf...@apache.org on 2015/02/26 18:27:09 UTC

[07/16] incubator-usergrid git commit: [USERGRID-328] Someone had already updated these test, but mine is a bit more verbose

[USERGRID-328] Someone had already updated these test, but mine is a bit more verbose


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

Branch: refs/heads/USERGRID-273-indexbuffer
Commit: 4cf0bba52b75bfcc95cdcd6ca34edea15c6a13d0
Parents: 6e43fc5
Author: ryan bridges <rb...@apigee.com>
Authored: Fri Jan 23 18:26:17 2015 -0500
Committer: ryan bridges <rb...@apigee.com>
Committed: Fri Jan 23 18:26:17 2015 -0500

----------------------------------------------------------------------
 .../users/ConnectionResourceTest.java           | 272 ++++++++-----------
 1 file changed, 114 insertions(+), 158 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/4cf0bba5/stack/rest/src/test/java/org/apache/usergrid/rest/applications/collection/users/ConnectionResourceTest.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/applications/collection/users/ConnectionResourceTest.java b/stack/rest/src/test/java/org/apache/usergrid/rest/applications/collection/users/ConnectionResourceTest.java
index 716b15f..de1aee7 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/applications/collection/users/ConnectionResourceTest.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/applications/collection/users/ConnectionResourceTest.java
@@ -17,235 +17,191 @@
 package org.apache.usergrid.rest.applications.collection.users;
 
 
-import java.io.IOException;
-import java.util.Map;
-import java.util.UUID;
-
-import org.junit.Before;
-import org.junit.Test;
-
+import com.sun.jersey.api.client.UniformInterfaceException;
 import org.apache.usergrid.rest.test.resource2point0.AbstractRestIT;
 import org.apache.usergrid.rest.test.resource2point0.endpoints.CollectionEndpoint;
 import org.apache.usergrid.rest.test.resource2point0.model.Collection;
 import org.apache.usergrid.rest.test.resource2point0.model.Entity;
-import org.apache.usergrid.rest.test.resource2point0.model.User;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
-import com.sun.jersey.api.client.UniformInterfaceException;
+import java.io.IOException;
+import java.util.Map;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.Assert.*;
 
 
 /**
- * Contains tests that center around using connections with entities and users.
+ * // TODO: Document this
+ *
+ * @author ApigeeCorporation
+ * @since 4.0
  */
 public class ConnectionResourceTest extends AbstractRestIT {
+    private static Logger log = LoggerFactory.getLogger(ConnectionResourceTest.class);
 
-    private CollectionEndpoint thingsResource;
-    private UUID thing1Id;
-    private UUID thing2Id;
-
-
-    /**
-     * Setup two thing objects for use in the following tests
-     */
-    @Before
-    public void setup(){
-        this.thingsResource =  this.app().collection("things");
-
-        thing1Id =  thingsResource.post( new Entity().chainPut("name", "thing1") ).getUuid();
-
-        thing2Id = thingsResource.post( new Entity().chainPut("name", "thing2") ).getUuid();
-
-        refreshIndex();
-    }
-    /**
-     * Checks to see that a connection associated with one user cannot be retrieved by a different user.
-     * @throws IOException
-     */
     @Test
-    public void connectionMisMatchTest() throws IOException {
-
-        //Creates collection and posts a chicken entity to it.
-        CollectionEndpoint activities = this.app().collection("peeps");
-
-        Entity stuff = new Entity().chainPut("name", "chicken").chainPut("type","chicken");
+    public void connectionsQueryTest() throws IOException {
 
-        activities.post(stuff);
+        //create a peep
+        Entity peep = new Entity();
+        peep.put("type", "chicken");
 
-        //Create two users
-        User payload = new User("todd", "todd", "todd@apigee.com", "password");
-        this.app().collection("users").post(payload);
-        payload = new User("scott", "scott", "scott@apigee.com", "password");
-        this.app().collection("users").post(payload);
+        peep = this.app().collection("peeps").post(peep);
 
-        refreshIndex();
 
-        //Set user Todd  to connect to the chicken entity.
-        Entity entity = this.app().collection("users").entity("todd").connection("likes").collection("peeps").entity("chicken").post();
+        Entity todd = new Entity();
+        todd.put("username", "todd");
+        todd = this.app().collection("users").post(todd);
 
-        assertNotNull(entity);
+        Entity scott = new Entity();
+        scott.put("username", "scott");
+        scott = this.app().collection("users").post(scott);
 
+        Entity objectOfDesire = new Entity();
+        objectOfDesire.put("codingmunchies", "doritoes");
+        objectOfDesire = this.app().collection("snacks").post(objectOfDesire);
         refreshIndex();
 
-        //Get the collection and get the chicken entity.
-        Collection collection = this.app().collection("peeps").get();
-
-        String uuid = collection.next().get("uuid").toString();
+        Entity toddWant = this.app().collection("users").entity(todd).collection("likes").collection("snacks").entity(objectOfDesire).post();
+        assertNotNull(toddWant);
 
-        //Set user Scott to get back a nonexistant connection.
         try {
-            this.app().collection("users").entity("scott").connection("likes").entity(uuid).get();
-            fail("We shouldn't be able to see user1 connection through user2");
-        }
-        catch ( UniformInterfaceException uie ) {
-            assertEquals( 404, uie.getResponse().getStatus() );
-        }
-    }
-
-
-    /**
-     * Checks that we can setup a connection loop and that we can retrieve both entities from the loop.
-     * @throws IOException
-     */
-    @Test
-    public void connectionsLoopbackTest() throws IOException {
-
-        //create a connection loop by having thing1 connect to thing2 and vise versa.
-        thingsResource.entity( thing1Id ).connection( "likes" ).entity( thing2Id ).post();
-        thingsResource.entity( thing2Id ).connection( "likes" ).entity( thing1Id ).post();
-
-        refreshIndex();
-
-        //Do a get on thing1 to make sure we have the connection present
-        Collection collection =this.app().collection("things").entity(thing1Id).connection( "likes" ).get();
-
-        assertTrue("Connection url returned in entity", collection.hasNext());
 
-        //Verify that thing1 is connected to thing2
-        UUID returnedUUID  = collection.next().getUuid();
-
-        assertEquals( thing2Id, returnedUUID );
-
-        //now follow the loopback from thing2, which should be pointers to thing1
-
-        collection  = this.app().collection("things").entity(thing2Id).connection("likes").get();
-
-        UUID returned = collection.next().getUuid();
-
-        assertEquals( "Should point to thing1 as an incoming entity connection", thing1Id, returned );
-
-        //Follow the connection through the loop to make sure it works. 
-        Entity thing1Return = this.app().collection("things").entity(thing1Id).connection( "likes" )
-            .collection( "things" ).entity( thing2Id ).connection( "likes" )
-            .collection( "things" ).entity( thing1Id ).get();
+            this.app().collection("users").entity(scott).collection("likes").collection("peeps").entity(peep).get();
+            fail("This should throw an exception");
+        } catch (UniformInterfaceException uie) {
+            // Should return a 404 Not Found
+            assertEquals(404, uie.getResponse().getStatus());
+        }
 
-        assertEquals(thing1Id,thing1Return.getUuid());
 
     }
 
 
-    /**
-     * Checks that we can get a valid uuid from a connection url and follow it to the correct entity.
-     * @throws IOException
-     */
     @Test
-    public void connectionsUrlTest() throws IOException {
+    public void connectionsLoopbackTest() throws IOException {
 
-        //Create a connection between thing1 and thing2
-        thingsResource.entity( thing1Id ).connection( "likes" ).entity( thing2Id ).post();
+        // create entities thing1 and thing2
+        Entity thing1 = new Entity();
+        thing1.put("name", "thing1");
+        thing1 = this.app().collection("things").post(thing1);
 
+        Entity thing2 = new Entity();
+        thing2.put("name", "thing2");
+        thing2 = this.app().collection("things").post(thing2);
 
         refreshIndex();
+        //create the connection: thing1 likes thing2
+        this.app().collection("things").entity(thing1).connection("likes").collection("things").entity(thing2).post();
+        refreshIndex();
 
-        //Do a get on thing1 to make sure we have the connection present
-        Entity response = thingsResource.entity( "thing1" ).get();
-
-        String url =((Map) ((Map)response.get( "metadata" )).get( "connections" )).get("likes").toString();
-
-
-        assertNotNull( "Connection url returned in entity", url );
-
-        //trim off the starting / from the url.
-        url = url.substring( 1 );
-
+        //test we have the "likes" in our connection meta data response
+        thing1 = this.app().collection("things").entity(thing1).get();
+        //TODO this is ugly. revisit.
+        String url = (String) ((Map<String, Object>) ((Map<String, Object>) thing1.get("metadata")).get("connections")).get("likes");
+        assertNotNull("Connection url returned with entity", url);
 
-        //now that we know the URl is correct, follow it to get the entity in the connection
+        //now that we know the URl is correct, follow it
+        CollectionEndpoint likesEndpoint = new CollectionEndpoint(url, this.context(), this.app());
+        Collection likes = likesEndpoint.get();
+        assertNotNull(likes);
+        Entity likedEntity = likes.next();
+        assertNotNull(likedEntity);
 
-        Collection collection = this.app().collection(url).get();
+        //make sure the returned entity is thing2
+        assertEquals(thing2.getUuid(), likedEntity.getUuid());
 
-        UUID returnedUUID =collection.next().getUuid();
 
-        assertEquals( thing2Id, returnedUUID );
+        //now follow the loopback, which should be pointers to the other entity
+        thing2 = this.app().collection("things").entity(thing2).get();
+        //TODO this is ugly. revisit.
+        url = (String) ((Map<String, Object>) ((Map<String, Object>) thing2.get("metadata")).get("connecting")).get("likes");
+        assertNotNull("Connecting url returned with entity", url);
 
-        //get on the collection works, now get it directly by uuid. We should also get thing1 from the loopback url.
-        response = thingsResource.entity( thing1Id ).connection( "likes" ).entity( thing2Id ).get();
+        CollectionEndpoint likedByEndpoint = new CollectionEndpoint(url, this.context(), this.app());
+        Collection likedBy = likedByEndpoint.get();
+        assertNotNull(likedBy);
+        Entity likedByEntity = likedBy.next();
+        assertNotNull(likedByEntity);
 
-        UUID returned = response.getUuid();
+        //make sure the returned entity is thing1
+        assertEquals(thing1.getUuid(), likedByEntity.getUuid());
 
-        assertEquals( "Should point to thing2 as an entity connection", thing2Id, returned );
     }
 
 
     /**
-     * Deletes the connected to entity and make sure the delete persists.
+     * Ensure that the connected entity can be deleted
+     * properly after it has been connected to another entity
+     *
      * @throws IOException
      */
     @Test //USERGRID-3011
-    public void deleteConnectedEntity() throws IOException {
+    public void connectionsDeleteSecondEntityInConnectionTest() throws IOException {
 
-        //create the connection
-        thingsResource.entity( thing1Id ).connection( "likes" ).entity( thing2Id ).post();
+        //Create 2 entities, thing1 and thing2
+        Entity thing1 = new Entity();
+        thing1.put("name", "thing1");
+        thing1 = this.app().collection("things").post(thing1);
 
-        refreshIndex();
+        Entity thing2 = new Entity();
+        thing2.put("name", "thing2");
+        thing2 = this.app().collection("things").post(thing2);
 
-        //Delete the connected entity.
-        thingsResource.entity( "thing2" ).delete();
+        refreshIndex();
+        //create the connection: thing1 likes thing2
+        this.app().collection("things").entity(thing1).connection("likes").collection("things").entity(thing2).post();
+        //delete thing2
+        this.app().collection("things").entity(thing2).delete();
 
         refreshIndex();
 
-        //Make sure that we can no longer retrieve the entity.
-        int status = 0;
         try {
-            thingsResource.entity("thing2").get();
-            fail( "Entity should have been deleted." );
-        }catch (UniformInterfaceException e){
-            status = e.getResponse().getStatus();
+            //attempt to retrieve thing1
+            thing2 = this.app().collection("things").entity(thing2).get();
+            fail("This should throw an exception");
+        } catch (UniformInterfaceException uie) {
+            // Should return a 404 Not Found
+            assertEquals(404, uie.getResponse().getStatus());
         }
-        assertEquals(404,status);
-
-
     }
 
-
     /**
-     * Delete the connecting entity and make sure the delete persists.
+     * Ensure that the connecting entity can be deleted
+     * properly after a connection has been added
+     *
      * @throws IOException
      */
     @Test //USERGRID-3011
-    public void deleteConnectingEntity() throws IOException {
+    public void connectionsDeleteFirstEntityInConnectionTest() throws IOException {
 
-        //create the connection
-        thingsResource.entity( thing1Id ).connection( "likes" ).entity( thing2Id ).post();
+        //Create 2 entities, thing1 and thing2
+        Entity thing1 = new Entity();
+        thing1.put("name", "thing1");
+        thing1 = this.app().collection("things").post(thing1);
 
-        refreshIndex();
+        Entity thing2 = new Entity();
+        thing2.put("name", "thing2");
+        thing2 = this.app().collection("things").post(thing2);
 
-        //Delete the connecting entity
-        thingsResource.entity( "thing1" ).delete();
+        refreshIndex();
+        //create the connection: thing1 likes thing2
+        this.app().collection("things").entity(thing1).connection("likes").collection("things").entity(thing2).post();
+        //delete thing1
+        this.app().collection("things").entity(thing1).delete();
 
         refreshIndex();
 
-        //Make sure that we can no longer retrieve the entity.
-        int status = 0;
         try {
-            thingsResource.entity("thing1").get();
-            fail( "Entity should have been deleted." );
-        }catch (UniformInterfaceException e){
-            status = e.getResponse().getStatus();
+            //attempt to retrieve thing1
+            thing1 = this.app().collection("things").entity(thing1).get();
+            fail("This should throw an exception");
+        } catch (UniformInterfaceException uie) {
+            // Should return a 404 Not Found
+            assertEquals(404, uie.getResponse().getStatus());
         }
-        assertEquals(404,status);
 
     }