Skip to content
Snippets Groups Projects
Commit e6510600 authored by OZGCloud's avatar OZGCloud
Browse files

Merge pull request 'OZG-3034 OZG-6854 Vorgang-URI should only require valid...

Merge pull request 'OZG-3034 OZG-6854 Vorgang-URI should only require valid path' (#780) from OZG-3034-Erweiterung-des-Mailtexts-fuer-Benachrichtigungen into master

Reviewed-on: https://git.ozg-sh.de/ozgcloud-app/alfa/pulls/780


Reviewed-by: default avatarOZGCloud <ozgcloud@mgm-tp.com>
parents e3af0f82 7f6b1554
No related branches found
No related tags found
No related merge requests found
......@@ -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/([^/]+)");
@Override
public Optional<Link> resolve(String uri) {
......
......@@ -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());
}
......
......@@ -2,15 +2,14 @@ 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;
import de.ozgcloud.alfa.common.AlfaTestUtils;
class VorgangURIResolverTest {
private VorgangURIResolver resolver = new VorgangURIResolver();
......@@ -18,24 +17,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 = VorgangHeaderTestFactory.ID;
@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 +38,35 @@ 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/" + VORGANG_ID + "/" + VORGANG_ID);
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment