diff --git a/pom.xml b/pom.xml index bb628dd..5c955cc 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ org.openconext voot-service - 6.1.0-SNAPSHOT + 6.1.0 jar voot-service diff --git a/src/main/java/voot/provider/InviteProvider.java b/src/main/java/voot/provider/InviteProvider.java index d8ad00a..fa5a11f 100644 --- a/src/main/java/voot/provider/InviteProvider.java +++ b/src/main/java/voot/provider/InviteProvider.java @@ -21,7 +21,7 @@ public class InviteProvider extends AbstractProvider { public InviteProvider(Configuration configuration) { super(configuration); - groupMembershipsUrlTemplate = "%s/api/voot/%s"; + groupMembershipsUrlTemplate = String.format("%s", configuration.url.endsWith("/") ? configuration.url : (configuration.url + "/")); } @Override @@ -39,7 +39,7 @@ public boolean isExternalGroupProvider() { public Set getGroupMemberships(String uid) { LOG.debug("Calling getGroupMemberships for " + uid); - String uri = String.format(groupMembershipsUrlTemplate, configuration.url, uid); + String uri = groupMembershipsUrlTemplate + uid; RequestEntity>> requestEntity = new RequestEntity<>(HttpMethod.GET, URI.create(uri)); return restTemplate.exchange(requestEntity, new ParameterizedTypeReference>>() { }).getBody().stream() diff --git a/src/test/java/voot/provider/InviteProviderTest.java b/src/test/java/voot/provider/InviteProviderTest.java index b70f9a4..2d356e7 100644 --- a/src/test/java/voot/provider/InviteProviderTest.java +++ b/src/test/java/voot/provider/InviteProviderTest.java @@ -17,7 +17,7 @@ class InviteProviderTest extends AbstractTest { private final InviteProvider subject = new InviteProvider( - new Provider.Configuration(GroupProviderType.INVITE, "http://localhost:8889", + new Provider.Configuration(GroupProviderType.INVITE, "http://localhost:8889/api/external/v1/voot", new Provider.Configuration.Credentials("user", "password"), 2000, "N/A", "invite")); @@ -25,7 +25,7 @@ class InviteProviderTest extends AbstractTest { void getGroupMemberships() throws IOException { String json = IOUtils.readInputStreamToString(new ClassPathResource("json/invite/group_memberships.json").getInputStream()); String urn = "urn:collab:person:example.com:admin"; - stubFor(get(urlPathEqualTo("/api/voot/" + urn)) + stubFor(get(urlPathEqualTo("/api/external/v1/voot/" + urn)) .willReturn(aResponse() .withStatus(200) .withHeader("Content-type", "application/json"). @@ -34,6 +34,23 @@ void getGroupMemberships() throws IOException { assertEquals(2, groupMemberships.size()); } + @Test + void getGroupMembershipsMissingSlash() throws IOException { + InviteProvider inviteProvider = new InviteProvider( + new Provider.Configuration(GroupProviderType.INVITE, "http://localhost:8889/api/voot/", + new Provider.Configuration.Credentials("user", "password"), + 2000, "N/A", "invite")); + String json = IOUtils.readInputStreamToString(new ClassPathResource("json/invite/group_memberships.json").getInputStream()); + String urn = "urn:collab:person:example.com:admin"; + stubFor(get(urlPathEqualTo("/api/voot/" + urn)) + .willReturn(aResponse() + .withStatus(200) + .withHeader("Content-type", "application/json"). + withBody(json))); + Set groupMemberships = inviteProvider.getGroupMemberships(urn); + assertEquals(2, groupMemberships.size()); + } + @Test void getAllGroups() { assertEquals(0, subject.getAllGroups().size());