From c216692eab43fa5fb32bc5a9c26b13e554648018 Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Thu, 8 Feb 2018 22:36:54 +0100 Subject: [PATCH] #965 fixed handling of resources with spaces in its id --- .../it/JerseyGroupClientHandlerITCase.java | 25 ++++++- .../sonia/scm/url/RestModelUrlProvider.java | 4 +- .../scm/url/ModelUrlProviderTestBase.java | 4 +- .../scm/url/RestModelUrlProviderTestBase.java | 15 ++++ .../resources/AbstractManagerResource.java | 32 ++++----- .../AbstractManagerResourceTest.java | 71 +++++++++++++++++++ 6 files changed, 129 insertions(+), 22 deletions(-) create mode 100644 scm-webapp/src/test/java/sonia/scm/api/rest/resources/AbstractManagerResourceTest.java diff --git a/scm-clients/scm-client-impl/src/test/java/sonia/scm/client/it/JerseyGroupClientHandlerITCase.java b/scm-clients/scm-client-impl/src/test/java/sonia/scm/client/it/JerseyGroupClientHandlerITCase.java index 0650564741..08899945ad 100644 --- a/scm-clients/scm-client-impl/src/test/java/sonia/scm/client/it/JerseyGroupClientHandlerITCase.java +++ b/scm-clients/scm-client-impl/src/test/java/sonia/scm/client/it/JerseyGroupClientHandlerITCase.java @@ -35,11 +35,14 @@ package sonia.scm.client.it; //~--- non-JDK imports -------------------------------------------------------- +import org.junit.Test; import sonia.scm.client.ClientHandler; +import sonia.scm.client.GroupClientHandler; import sonia.scm.client.JerseyClientSession; -import sonia.scm.client.it.AbstractClientHandlerTestBase.ModifyTest; import sonia.scm.group.Group; +import static sonia.scm.client.it.ClientTestUtil.createAdminSession; + /** * * @author Sebastian Sdorra @@ -99,4 +102,24 @@ public class JerseyGroupClientHandlerITCase { return new Group("xml", "group-" + number); } + + /** + * Tests crud operations with a group which name contains spaces. + * + * @see manager; + + @Test + public void testLocation() throws URISyntaxException { + URI base = new URI("https://scm.scm-manager.org/"); + + TestManagerResource resource = new TestManagerResource(manager); + when(uriInfo.getAbsolutePath()).thenReturn(base); + + URI uri = resource.location(uriInfo, "special-group"); + assertEquals(new URI("https://scm.scm-manager.org/groups/special-group"), uri); + } + + @Test + public void testLocationWithSpaces() throws URISyntaxException { + URI base = new URI("https://scm.scm-manager.org/"); + + TestManagerResource resource = new TestManagerResource(manager); + when(uriInfo.getAbsolutePath()).thenReturn(base); + + URI uri = resource.location(uriInfo, "Scm Special Group"); + assertEquals(new URI("https://scm.scm-manager.org/groups/Scm%20Special%20Group"), uri); + } + + private static class TestManagerResource extends AbstractManagerResource { + + private TestManagerResource(Manager manager) { + super(manager); + } + + @Override + protected GenericEntity> createGenericEntity(Collection items) { + return null; + } + + @Override + protected String getId(Group group) { + return group.getId(); + } + + @Override + protected String getPathPart() { + return "groups"; + } + } +}