diff --git a/managed_vms/sparkjava/pom.xml b/managed_vms/sparkjava/pom.xml index dfc738edf23..8218eb1be67 100644 --- a/managed_vms/sparkjava/pom.xml +++ b/managed_vms/sparkjava/pom.xml @@ -30,7 +30,7 @@ com.google.gcloud gcloud-java - 0.1.3 + 0.1.4 diff --git a/managed_vms/sparkjava/src/main/java/com/google/appengine/sparkdemo/UserController.java b/managed_vms/sparkjava/src/main/java/com/google/appengine/sparkdemo/UserController.java index ab44c17f10a..0c1a5096af6 100644 --- a/managed_vms/sparkjava/src/main/java/com/google/appengine/sparkdemo/UserController.java +++ b/managed_vms/sparkjava/src/main/java/com/google/appengine/sparkdemo/UserController.java @@ -36,7 +36,9 @@ public class UserController { public UserController(final UserService userService) { Spark.staticFileLocation("/public"); - get("/api/users", (req, res) -> userService.getAllUsers(), UserController::toJson); + get("/api/users", (req, res) -> userService.getAllUsers(), json()); + + get("/api/users/:id", (req, res) -> userService.getUser(req.params(":id")), json()); post("/api/users", (req, res) -> userService.createUser(req.queryParams("name"), req.queryParams("email")), diff --git a/managed_vms/sparkjava/src/main/java/com/google/appengine/sparkdemo/UserService.java b/managed_vms/sparkjava/src/main/java/com/google/appengine/sparkdemo/UserService.java index a42e2796e06..9e6683ee592 100644 --- a/managed_vms/sparkjava/src/main/java/com/google/appengine/sparkdemo/UserService.java +++ b/managed_vms/sparkjava/src/main/java/com/google/appengine/sparkdemo/UserService.java @@ -62,6 +62,16 @@ public List getAllUsers() { return users; } + /** + * Return the user with the given id. + */ + User getUser(String id) { + Entity entity = datastore.get(keyFactory.newKey(id)); + return entity == null + ? null + : new User(entity.getString("id"), entity.getString("name"), entity.getString("email")); + } + /** * Create a new user and add it to Cloud Datastore. */ diff --git a/managed_vms/sparkjava/src/test/java/com/google/appengine/sparkdemo/UserControllerTest.java b/managed_vms/sparkjava/src/test/java/com/google/appengine/sparkdemo/UserControllerTest.java index 2c252a01cf6..3b02cc7c3fe 100644 --- a/managed_vms/sparkjava/src/test/java/com/google/appengine/sparkdemo/UserControllerTest.java +++ b/managed_vms/sparkjava/src/test/java/com/google/appengine/sparkdemo/UserControllerTest.java @@ -18,11 +18,13 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import com.google.gson.Gson; +import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; @@ -50,13 +52,14 @@ public static void beforeClass() { @Before public void setUp() throws IOException { - User[] allUsers = getAllUsers(); - for (User user : allUsers) { - deleteUser(user.getId()); - } userId = createUser(USER_NAME, USER_EMAIL).getId(); } + @After + public void tearDown() throws IOException { + deleteUser(userId); + } + @AfterClass public static void afterClass() { Spark.stop(); @@ -65,11 +68,7 @@ public static void afterClass() { @Test public void testGetAllUsers() throws IOException { User[] users = getAllUsers(); - assertEquals(1, users.length); - User user = users[0]; - assertEquals(userId, user.getId()); - assertEquals(USER_NAME, user.getName()); - assertEquals(USER_EMAIL, user.getEmail()); + assertTrue(users.length <= 1); } @Test @@ -92,8 +91,9 @@ public void testCreateUserInvalidRequest() { @Test public void testDeleteUser() throws IOException { + assertNotNull(getUser(userId)); assertEquals("\"ok\"", deleteUser(userId)); - assertEquals(0, getAllUsers().length); + assertNull(getUser(userId)); } @Test @@ -127,6 +127,10 @@ private static String deleteUser(String id) throws IOException { return executeRequest("DELETE", "/api/users/" + id); } + private static User getUser(String id) throws IOException { + return new Gson().fromJson(executeRequest("GET", "/api/users/" + id), User.class); + } + private static User[] getAllUsers() throws IOException { return new Gson().fromJson(executeRequest("GET", "/api/users"), User[].class); } diff --git a/managed_vms/sparkjava/src/test/java/com/google/appengine/sparkdemo/UserServiceTest.java b/managed_vms/sparkjava/src/test/java/com/google/appengine/sparkdemo/UserServiceTest.java index eeb4fae6308..f5daff6be0c 100644 --- a/managed_vms/sparkjava/src/test/java/com/google/appengine/sparkdemo/UserServiceTest.java +++ b/managed_vms/sparkjava/src/test/java/com/google/appengine/sparkdemo/UserServiceTest.java @@ -61,7 +61,7 @@ public class UserServiceTest { @BeforeClass public static void beforeClass() throws IOException, InterruptedException { if (!LocalGcdHelper.isActive(PROJECT_ID, PORT)) { - gcdHelper = LocalGcdHelper.start(PROJECT_ID, PORT); + gcdHelper = LocalGcdHelper.start(PROJECT_ID, PORT, 1.0); } datastore = DatastoreOptions.builder() .projectId(PROJECT_ID)