From ad4ea743a0fe360ab4d47b022793ade2d52b7d2b Mon Sep 17 00:00:00 2001 From: Philipp Czora Date: Thu, 28 Jun 2018 11:06:16 +0200 Subject: [PATCH] Added unit tests for PUT/DELETE on groups --- .../v2/resources/GroupRootResourceTest.java | 69 +++++++++++++++++++ .../sonia/scm/api/v2/group-test-update.json | 11 +++ 2 files changed, 80 insertions(+) create mode 100644 scm-webapp/src/test/resources/sonia/scm/api/v2/group-test-update.json diff --git a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/GroupRootResourceTest.java b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/GroupRootResourceTest.java index 2b4cedb4fc..74b9dbd2d5 100644 --- a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/GroupRootResourceTest.java +++ b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/GroupRootResourceTest.java @@ -65,6 +65,7 @@ public class GroupRootResourceTest { public void prepareEnvironment() throws IOException, GroupException { initMocks(this); doNothing().when(groupManager).create(groupCaptor.capture()); + doNothing().when(groupManager).modify(groupCaptor.capture()); Group group = createDummyGroup(); when(groupManager.getPage(any(), eq(0), eq(10))).thenReturn(new PageResult<>(singletonList(group), 1)); @@ -108,6 +109,74 @@ public class GroupRootResourceTest { assertTrue(response.getContentAsString().contains("\"name\":\"user\"")); } + @Test + public void shouldUpdateGroup() throws URISyntaxException, IOException { + URL url = Resources.getResource("sonia/scm/api/v2/group-test-update.json"); + byte[] groupJson = Resources.toByteArray(url); + + Group group = createDummyGroup(); + when(groupManager.get("admin")).thenReturn(group); + Group updatedGroup = createDummyGroup(); + updatedGroup.setDescription("Updated description"); + + MockHttpRequest request = MockHttpRequest + .put("/" + GroupRootResource.GROUPS_PATH_V2 + "admin") + .contentType(VndMediaType.GROUP) + .content(groupJson); + + MockHttpResponse response = new MockHttpResponse(); + + dispatcher.invoke(request, response); + Group capturedGroup = groupCaptor.getValue(); + + assertEquals(HttpServletResponse.SC_NO_CONTENT, response.getStatus()); + + assertEquals("Updated description", capturedGroup.getDescription()); + } + + @Test + public void updateShouldFailOnNonexistentGroup() throws URISyntaxException, IOException { + URL url = Resources.getResource("sonia/scm/api/v2/group-test-update.json"); + byte[] groupJson = Resources.toByteArray(url); + + Group updatedGroup = createDummyGroup(); + updatedGroup.setDescription("Updated description"); + + MockHttpRequest request = MockHttpRequest + .put("/" + GroupRootResource.GROUPS_PATH_V2 + "idontexist") + .contentType(VndMediaType.GROUP) + .content(groupJson); + + MockHttpResponse response = new MockHttpResponse(); + + dispatcher.invoke(request, response); + + assertEquals(HttpServletResponse.SC_NOT_FOUND, response.getStatus()); + } + + @Test + public void shouldDeleteGroup() throws URISyntaxException { + Group group = createDummyGroup(); + when(groupManager.get("admin")).thenReturn(group); + + MockHttpRequest request = MockHttpRequest.delete("/" + GroupRootResource.GROUPS_PATH_V2 + "admin"); + MockHttpResponse response = new MockHttpResponse(); + + dispatcher.invoke(request, response); + + assertEquals(HttpServletResponse.SC_NO_CONTENT, response.getStatus()); + } + + @Test + public void shouldNotFailOnDeletingNonexistentGroup() throws URISyntaxException { + MockHttpRequest request = MockHttpRequest.delete("/" + GroupRootResource.GROUPS_PATH_V2 + "idontexist"); + MockHttpResponse response = new MockHttpResponse(); + + dispatcher.invoke(request, response); + + assertEquals(HttpServletResponse.SC_NO_CONTENT, response.getStatus()); + } + @Test public void shouldCreateNewGroupWithMembers() throws URISyntaxException, IOException { URL url = Resources.getResource("sonia/scm/api/v2/group-test-create.json"); diff --git a/scm-webapp/src/test/resources/sonia/scm/api/v2/group-test-update.json b/scm-webapp/src/test/resources/sonia/scm/api/v2/group-test-update.json new file mode 100644 index 0000000000..fd41ff5837 --- /dev/null +++ b/scm-webapp/src/test/resources/sonia/scm/api/v2/group-test-update.json @@ -0,0 +1,11 @@ +{ + "description": "Updated description", + "name": "admin", + "_embedded": { + "members": [ + { + "name": "user" + } + ] + } +}