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/01/22 16:48:25 UTC
[07/19] incubator-usergrid git commit: [USERGRID-326] Updating
PartialUpdateTest to work with the new REST test framework
[USERGRID-326] Updating PartialUpdateTest to work with the new REST test framework
Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/8daa6e5b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/8daa6e5b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/8daa6e5b
Branch: refs/heads/USERGRID-323-Win-phone
Commit: 8daa6e5b8619387b627044225c7befbe00b307ab
Parents: 231a449
Author: ryan bridges <rb...@apigee.com>
Authored: Mon Jan 12 14:23:35 2015 -0500
Committer: ryan bridges <rb...@apigee.com>
Committed: Mon Jan 12 14:23:35 2015 -0500
----------------------------------------------------------------------
.../apache/usergrid/rest/PartialUpdateTest.java | 157 ++++++++-----------
1 file changed, 69 insertions(+), 88 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/8daa6e5b/stack/rest/src/test/java/org/apache/usergrid/rest/PartialUpdateTest.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/PartialUpdateTest.java b/stack/rest/src/test/java/org/apache/usergrid/rest/PartialUpdateTest.java
index a9e1548..bdc4e66 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/PartialUpdateTest.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/PartialUpdateTest.java
@@ -17,137 +17,118 @@
package org.apache.usergrid.rest;
-import com.fasterxml.jackson.databind.JsonNode;
import com.sun.jersey.api.client.UniformInterfaceException;
-import java.io.IOException;
-import java.util.LinkedHashMap;
-import java.util.Map;
-import javax.ws.rs.core.MediaType;
-
-import org.junit.Rule;
+import org.apache.usergrid.rest.test.resource2point0.AbstractRestIT;
+import org.apache.usergrid.rest.test.resource2point0.model.Entity;
+import org.apache.usergrid.utils.MapUtils;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNotSame;
-import static org.junit.Assert.fail;
+import java.io.IOException;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+import static org.junit.Assert.*;
/**
- * Partial update test.
+ * Partial update test.
*/
public class PartialUpdateTest extends AbstractRestIT {
- private static final Logger log= LoggerFactory.getLogger(PartialUpdateTest.class );
-
- @Rule
- public TestContextSetup context = new TestContextSetup( this );
+ private static final Logger log = LoggerFactory.getLogger(PartialUpdateTest.class);
- double latitude=37.772837;
- double longitude=-122.409895;
+ double latitude = 37.772837;
+ double longitude = -122.409895;
- Map<String, Object> geolocation = new LinkedHashMap<String, Object>() {{
- put("latitude", latitude);
- put("longitude", longitude);
- }};
+ Map<String, Double> geolocation = new MapUtils.HashMapBuilder<String, Double>()
+ .map("latitude", latitude)
+ .map("longitude", longitude);
- @Test
+ @Test
public void testPartialUpdate() throws IOException {
// create user bart
- Map<String, Object> userProperties = new LinkedHashMap<String, Object>() {{
- put( "username", "bart" );
- put( "employer", "Brawndo" );
- put( "email", "bart@personal-email.example.com" );
- put( "location", geolocation);
- }};
-
- JsonNode userNode = mapper.readTree(
- resource().path( "/test-organization/test-app/users" )
- .queryParam( "access_token", adminAccessToken )
- .accept( MediaType.APPLICATION_JSON )
- .type( MediaType.APPLICATION_JSON )
- .post( String.class, userProperties ));
-
- assertNotNull( userNode );
- String uuid = userNode.withArray("entities").get(0).get("uuid").asText();
- assertNotNull( uuid );
- refreshIndex( "test-organization", "test-app" );
+ Entity props = new Entity();
+ props.put("username", "bart");
+ props.put("employer", "Brawndo");
+ props.put("email", "bart@personal-email.example.com");
+ props.put("location", geolocation);
+ // POST the entity
+ Entity userNode = this.app().collection("users").post(props);
+ // make sure it was saved properly
+ assertNotNull(userNode);
+ String uuid = userNode.get("uuid").toString();
+ assertNotNull(uuid);
+
+ refreshIndex();
Map<String, Object> updateProperties = new LinkedHashMap<String, Object>();
// update user bart passing only an update to a property
- for(int i=1; i<10; i++) {
+ for (int i = 1; i < 10; i++) {
+ // "Move" the user by incrementing their location
+ Entity updateProps = new Entity();
geolocation.put("latitude", latitude += 0.00001);
geolocation.put("longitude", longitude += 0.00001);
- updateProperties.put("employer", "Initech");
- updateProperties.put("location", geolocation);
+ //update the User's employer property
+ updateProps.put("employer", "Initech");
+ updateProps.put("location", geolocation);
try {
- JsonNode updatedNode = mapper.readTree(
- resource().path("/test-organization/test-app/user/" + uuid)
- .queryParam("access_token", adminAccessToken)
- .accept(MediaType.APPLICATION_JSON)
- .type(MediaType.APPLICATION_JSON)
- .put(String.class, updateProperties));
- assertNotNull(updatedNode);
+ // PUT the updates to the user and ensure they were saved
+ userNode = this.app().collection("users").entity(userNode).put(updateProps);
+ assertNotNull(userNode);
} catch (UniformInterfaceException uie) {
fail("Update failed due to: " + uie.getResponse().getEntity(String.class));
}
- refreshIndex("test-organization", "test-app");
-
- userNode = mapper.readTree(
- resource().path("/test-organization/test-app/users/" + uuid)
- .queryParam("access_token", adminAccessToken)
- .accept(MediaType.APPLICATION_JSON)
- .get(String.class));
+ refreshIndex();
+ // retrieve the user from the backend
+ userNode = this.app().collection("users").entity(userNode).get();
log.info(userNode.toString());
+ // verify that the user was returned
assertNotNull(userNode);
-
- assertEquals("Initech", userNode.withArray("entities").get(0).get("employer").asText());
-
- assertNotNull(userNode.withArray("entities").get(0).get("location"));
- assertNotNull(userNode.withArray("entities").get(0).get("location").get("latitude"));
- assertNotNull(userNode.withArray("entities").get(0).get("location").get("longitude"));
-
- assertNotSame( latitude,
- userNode.withArray("entities").get(0).get("location").get("latitude").asDouble());
- assertNotSame( longitude,
- userNode.withArray("entities").get(0).get("location").get("longitude").asDouble());
+ // Verify that the user's employer was updated
+ assertEquals("Initech", userNode.get("employer").toString());
+ // verify that the geo data is present
+ assertNotNull(userNode.get("location"));
+ assertNotNull(((Map<String, Object>) userNode.get("location")).get("latitude"));
+ assertNotNull(((Map<String, Object>) userNode.get("location")).get("longitude"));
+
+ // Verify that the location was updated correctly AND that
+ // it is not the same object reference from the original POST
+ log.info(geolocation.get("latitude") + " != " + Double.parseDouble(((Map<String, Object>) userNode.get("location")).get("latitude").toString()));
+ log.info(geolocation.get("longitude") + " != " + Double.parseDouble(((Map<String, Object>) userNode.get("location")).get("longitude").toString()));
+ assertNotSame(geolocation.get("latitude"),
+ Double.parseDouble(((Map<String, Object>) userNode.get("location")).get("latitude").toString()));
+ assertEquals(geolocation.get("latitude").doubleValue(),
+ Double.parseDouble(((Map<String, Object>) userNode.get("location")).get("latitude").toString()), 0);
+ assertNotSame(geolocation.get("longitude"),
+ Double.parseDouble(((Map<String, Object>) userNode.get("location")).get("longitude").toString()));
+ assertEquals(geolocation.get("longitude").doubleValue(),
+ Double.parseDouble(((Map<String, Object>) userNode.get("location")).get("longitude").toString()), 0);
}
- // Update bart's employer without specifying any required fields
+ // Update bart's employer without specifying any required fields
// (this time with username specified in URL)
+ Entity updateProps = new Entity();
+ updateProps.put("employer", "ACME Corporation");
- updateProperties = new LinkedHashMap<String, Object>() {{
- put( "employer", "ACME Corporation" );
- }};
-
- for(int i=1; i<10; i++) {
+ for (int i = 1; i < 10; i++) {
try {
- mapper.readTree(
- resource().path("/test-organization/test-app/users/bart")
- .queryParam("access_token", adminAccessToken)
- .accept(MediaType.APPLICATION_JSON)
- .type(MediaType.APPLICATION_JSON)
- .put(String.class, updateProperties));
+ userNode = this.app().collection("users").entity((String) props.get("username")).put(updateProps);
} catch (UniformInterfaceException uie) {
fail("Update failed due to: " + uie.getResponse().getEntity(String.class));
}
- refreshIndex("test-organization", "test-app");
+ refreshIndex();
- userNode = mapper.readTree(
- resource().path("/test-organization/test-app/users/bart")
- .queryParam("access_token", adminAccessToken)
- .accept(MediaType.APPLICATION_JSON)
- .get(String.class));
+ userNode = this.app().collection("users").entity(userNode).get();
assertNotNull(userNode);
- assertEquals("ACME Corporation", userNode.withArray("entities").get(0).get("employer").asText());
+ assertEquals("ACME Corporation", userNode.get("employer").toString());
}
}
}