aboutsummaryrefslogtreecommitdiffstats
path: root/vespajlib/src/test
diff options
context:
space:
mode:
authorMorten Tokle <mortent@yahooinc.com>2022-08-11 09:10:01 +0200
committerMorten Tokle <mortent@yahooinc.com>2022-08-11 09:10:01 +0200
commit5d6df77291f0845e801b174f9f4d85c704b016c2 (patch)
tree69a95a30e1983b5094695a4c501b600106e6f8e7 /vespajlib/src/test
parentf243470365bf989efdc900d9def3c9f63b3593dc (diff)
Path validation
Diffstat (limited to 'vespajlib/src/test')
-rw-r--r--vespajlib/src/test/java/ai/vespa/validation/PathValidatorTest.java35
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());
+ }
+}