diff options
author | Morten Tokle <mortent@yahooinc.com> | 2022-08-11 09:10:01 +0200 |
---|---|---|
committer | Morten Tokle <mortent@yahooinc.com> | 2022-08-11 09:10:01 +0200 |
commit | 5d6df77291f0845e801b174f9f4d85c704b016c2 (patch) | |
tree | 69a95a30e1983b5094695a4c501b600106e6f8e7 /vespajlib/src/test | |
parent | f243470365bf989efdc900d9def3c9f63b3593dc (diff) |
Path validation
Diffstat (limited to 'vespajlib/src/test')
-rw-r--r-- | vespajlib/src/test/java/ai/vespa/validation/PathValidatorTest.java | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/vespajlib/src/test/java/ai/vespa/validation/PathValidatorTest.java b/vespajlib/src/test/java/ai/vespa/validation/PathValidatorTest.java new file mode 100644 index 00000000000..a2c1bd6bd0c --- /dev/null +++ b/vespajlib/src/test/java/ai/vespa/validation/PathValidatorTest.java @@ -0,0 +1,35 @@ +package ai.vespa.validation; + +import org.junit.Test; + +import java.nio.file.Path; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; + +public class PathValidatorTest { + + @Test + public void testPathValidation() { + Path root = Path.of("/foo/"); + + assertOk(Path.of("/foo/bar"), root); + assertOk(Path.of("/foo/foo2/bar"), root); + assertOk(Path.of("/foo/foo2/../bar"), root); + assertOk(Path.of("/foo/../foo/bar"), root); + assertOk(Path.of("/bar/../foo/../foo/bar"), root); + + assertInvalid(Path.of("/foo/../bar"), root); + assertInvalid(Path.of("/foo/bar/../../bar"), root); + } + + private void assertOk(Path path, Path root) { + PathValidator.validateChildOf(root, path); + } + + private void assertInvalid(Path path, Path root) { + IllegalArgumentException illegalArgumentException = assertThrows(IllegalArgumentException.class, + () -> PathValidator.validateChildOf(root, path)); + assertEquals("Invalid path %s".formatted(path), illegalArgumentException.getMessage()); + } +} |