diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangURIResolver.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangURIResolver.java index c3b6a185dce5c3e3189fabe78e6301c23ccce5a0..3a7549d4eac9459c604e2bbdc454e69616b173d1 100644 --- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangURIResolver.java +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangURIResolver.java @@ -15,7 +15,7 @@ class VorgangURIResolver implements OzgcloudResourceURIResolver { static final String REL_NAME = "vorgang"; - private final Pattern pattern = Pattern.compile("ozgcloud://[^/]+/vorgangs/([0-9a-fA-F]+)"); + private final Pattern pattern = Pattern.compile(".+/vorgangs/([0-9a-fA-F]+)"); @Override public Optional<Link> resolve(String uri) { diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/resource/OzgcloudResourceControllerITCase.java b/alfa-service/src/test/java/de/ozgcloud/alfa/resource/OzgcloudResourceControllerITCase.java index a545d2ee05325037544e883b529b7c39d4d9c991..3efe0e5735528b084a6137ecea2a6dbb584182d0 100644 --- a/alfa-service/src/test/java/de/ozgcloud/alfa/resource/OzgcloudResourceControllerITCase.java +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/resource/OzgcloudResourceControllerITCase.java @@ -31,34 +31,35 @@ class OzgcloudResourceControllerITCase { class TestGetOzgcloudResource { private static final String VORGANG_ID = AlfaTestUtils.createMongoDbObjectId(); + private static final String VALID_URI = "dns:///dummy.service:123/vorgangs/" + VORGANG_ID; + private static final String INVALID_URI = "dns:///dummy.service:123/" + VORGANG_ID; @Test void shouldReturnStatusOk() throws Exception { - var response = doRequest("ozgcloud://test.de/vorgangs/" + VORGANG_ID); + var response = doRequest("dns:///test.de/vorgangs/" + VORGANG_ID); response.andExpect(status().isOk()); } @Test void shouldHaveVorgangLink() throws Exception { - var response = doRequest("ozgcloud://test.de/vorgangs/" + VORGANG_ID); + var response = doRequest(VALID_URI); response.andExpect(jsonPath("$._links.vorgang.href").value(StringEndsWith.endsWith("/api/vorgangs/" + VORGANG_ID))); } @Test void shouldHaveSelfLink() throws Exception { - var uri = "ozgcloud://test.de/vorgangs/" + VORGANG_ID; - var encodedUri = URLEncoder.encode(uri, StandardCharsets.UTF_8); + var encodedUri = URLEncoder.encode(VALID_URI, StandardCharsets.UTF_8); - var response = doRequest(uri); + var response = doRequest(VALID_URI); response.andExpect(jsonPath("$._links.self.href").value(StringEndsWith.endsWith(OzgcloudResourceController.PATH + "?uri=" + encodedUri))); } @Test void shouldReturnStatusNotFound() throws Exception { - var response = doRequest("dummy://test.de"); + var response = doRequest(INVALID_URI); response.andExpect(status().isNotFound()); } diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangURIResolverTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangURIResolverTest.java index 1d691c621cc7e42d207861ccb6503bd04026a74c..d6751ed39774791873a025506c2eb7c46ed06747 100644 --- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangURIResolverTest.java +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangURIResolverTest.java @@ -2,10 +2,11 @@ package de.ozgcloud.alfa.vorgang; import static org.assertj.core.api.Assertions.*; +import java.util.stream.Stream; + import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.ValueSource; +import org.junit.jupiter.params.provider.MethodSource; import org.springframework.hateoas.Link; import org.springframework.hateoas.LinkRelation; @@ -18,24 +19,20 @@ class VorgangURIResolverTest { @Nested class TestResolve { - private final String VORGANG_ID = AlfaTestUtils.createMongoDbObjectId(); - private final String VORGANG_URI = "ozgcloud://dummy.de/vorgangs/" + VORGANG_ID; + private static final String VORGANG_ID = AlfaTestUtils.createMongoDbObjectId(); @ParameterizedTest - @ValueSource(strings = { - "http://dummy.de/vorgangs/123", - "ozgcloud://dummy.de/res-a/123", - "ozgcloud://dummy.de/xyz/vorgangs/123", - "ozgcloud://dummy.de/vorgangs/xyz/123" }) + @MethodSource("invalidVorgangUris") void shouldReturnEmptyIfUriIsNotRecognized(String uri) { var result = resolver.resolve(uri); assertThat(result).isEmpty(); } - @Test - void shouldReturnLink() { - var result = resolver.resolve(VORGANG_URI); + @ParameterizedTest + @MethodSource("validVorgangUris") + void shouldReturnLink(String uri) { + var result = resolver.resolve(uri); assertThat(result).isPresent(); } @@ -43,19 +40,36 @@ class VorgangURIResolverTest { @Nested class TestVorgangLink { - @Test - void shouldHaveCorrectRelValue() { - var result = resolver.resolve(VORGANG_URI); + @ParameterizedTest + @MethodSource("de.ozgcloud.alfa.vorgang.VorgangURIResolverTest$TestResolve#validVorgangUris") + void shouldHaveCorrectRelValue(String uri) { + var result = resolver.resolve(uri); assertThat(result).get().extracting(Link::getRel).extracting(LinkRelation::value).isEqualTo(VorgangURIResolver.REL_NAME); } - @Test - void shouldHaveHrefOfVorgang() { - var result = resolver.resolve(VORGANG_URI); + @ParameterizedTest + @MethodSource("de.ozgcloud.alfa.vorgang.VorgangURIResolverTest$TestResolve#validVorgangUris") + void shouldHaveHrefOfVorgang(String uri) { + var result = resolver.resolve(uri); assertThat(result).get().extracting(Link::getHref).isEqualTo("/api/vorgangs/" + VORGANG_ID); } } + + private static Stream<String> validVorgangUris() { + return Stream.of( + "dns:///dummy.service/vorgangs/" + VORGANG_ID, + "dns:///dummy.service:123/vorgangs/" + VORGANG_ID, + "http://dummy.web.url/vorgangs/" + VORGANG_ID); + } + + private static Stream<String> invalidVorgangUris() { + return Stream.of("dns:///dummy.service/res-a/" + VORGANG_ID, + "dns:///dummy.service/" + VORGANG_ID, + "dns:///dummy.service/vorgangs/xyz/" + VORGANG_ID, + "dns:///dummy.service/vorgangs/not-a-vorgang-id", + "dns:///dummy.service/vorgangs/" + VORGANG_ID + "/not-a-vorgang-id"); + } } }