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());