diff --git a/scm-core/src/main/java/sonia/scm/repository/InitialRepositoryLocationResolver.java b/scm-core/src/main/java/sonia/scm/repository/InitialRepositoryLocationResolver.java index 09fc66b87e..078ff42045 100644 --- a/scm-core/src/main/java/sonia/scm/repository/InitialRepositoryLocationResolver.java +++ b/scm-core/src/main/java/sonia/scm/repository/InitialRepositoryLocationResolver.java @@ -23,7 +23,7 @@ public class InitialRepositoryLocationResolver { private static final String DEFAULT_REPOSITORY_PATH = "repositories"; - private static final CharMatcher ID_MATCHER = CharMatcher.anyOf("/\\"); + private static final CharMatcher ID_MATCHER = CharMatcher.anyOf("/\\."); /** * Returns the initial path to repository. diff --git a/scm-core/src/test/java/sonia/scm/repository/InitialRepositoryLocationResolverTest.java b/scm-core/src/test/java/sonia/scm/repository/InitialRepositoryLocationResolverTest.java index 9411f92ff6..e4cd22b060 100644 --- a/scm-core/src/test/java/sonia/scm/repository/InitialRepositoryLocationResolverTest.java +++ b/scm-core/src/test/java/sonia/scm/repository/InitialRepositoryLocationResolverTest.java @@ -13,9 +13,10 @@ import static org.assertj.core.api.Assertions.assertThat; @ExtendWith({MockitoExtension.class}) class InitialRepositoryLocationResolverTest { + private InitialRepositoryLocationResolver resolver = new InitialRepositoryLocationResolver(); + @Test void shouldComputeInitialPath() { - InitialRepositoryLocationResolver resolver = new InitialRepositoryLocationResolver(); Path path = resolver.getPath("42"); assertThat(path).isRelative(); @@ -24,17 +25,21 @@ class InitialRepositoryLocationResolverTest { @Test void shouldThrowIllegalArgumentExceptionIfIdHasASlash() { - InitialRepositoryLocationResolver resolver = new InitialRepositoryLocationResolver(); - Assertions.assertThrows(IllegalArgumentException.class, () -> { - resolver.getPath("../../../passwd"); - }); + Assertions.assertThrows(IllegalArgumentException.class, () -> resolver.getPath("../../../passwd")); } @Test void shouldThrowIllegalArgumentExceptionIfIdHasABackSlash() { - InitialRepositoryLocationResolver resolver = new InitialRepositoryLocationResolver(); - Assertions.assertThrows(IllegalArgumentException.class, () -> { - resolver.getPath("..\\..\\..\\users.ntlm"); - }); + Assertions.assertThrows(IllegalArgumentException.class, () -> resolver.getPath("..\\..\\..\\users.ntlm")); + } + + @Test + void shouldThrowIllegalArgumentExceptionIfIdIsDotDot() { + Assertions.assertThrows(IllegalArgumentException.class, () -> resolver.getPath("..")); + } + + @Test + void shouldThrowIllegalArgumentExceptionIfIdIsDot() { + Assertions.assertThrows(IllegalArgumentException.class, () -> resolver.getPath(".")); } }