|
|
@@ -0,0 +1,107 @@
|
|
|
+package org.leumasjaffe.json.schema.tester;
|
|
|
+
|
|
|
+import static org.junit.Assert.*;
|
|
|
+
|
|
|
+import org.junit.Test;
|
|
|
+import org.leumasjaffe.json.schema.Tester;
|
|
|
+
|
|
|
+import com.fasterxml.jackson.databind.node.NullNode;
|
|
|
+import com.fasterxml.jackson.databind.node.TextNode;
|
|
|
+
|
|
|
+public class FormatTesterTest {
|
|
|
+
|
|
|
+ @Test(expected=IllegalArgumentException.class)
|
|
|
+ public void testThrowsForUnknownFormat() {
|
|
|
+ FormatTester.forCode("unknown");
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testUUIDMatcher() {
|
|
|
+ Tester test = FormatTester.forCode("uuid");
|
|
|
+ assertFalse(test.accepts(NullNode.getInstance()));
|
|
|
+ assertTrue(test.accepts(new TextNode("00000000-0000-0000-0000-000000000000")));
|
|
|
+ assertFalse(test.accepts(new TextNode("0000000-0000-0000-0000-000000000000")));
|
|
|
+ assertFalse(test.accepts(new TextNode("X0000000-0000-0000-0000-000000000000")));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testDateTimeMatcher() {
|
|
|
+ Tester test = FormatTester.forCode("date-time");
|
|
|
+ assertFalse(test.accepts(NullNode.getInstance()));
|
|
|
+ assertTrue(test.accepts(new TextNode("2000-01-01T21:10:10Z")));
|
|
|
+ assertTrue(test.accepts(new TextNode("2000-01-01T21:10:10+01:00")));
|
|
|
+ assertTrue(test.accepts(new TextNode("2000-01-01T21:10:10-01:00")));
|
|
|
+ assertFalse(test.accepts(new TextNode("2000-01-01")));
|
|
|
+ assertFalse(test.accepts(new TextNode("21:10:10Z")));
|
|
|
+ assertFalse(test.accepts(new TextNode("21:10:10+01:00")));
|
|
|
+ assertFalse(test.accepts(new TextNode("21:10:10001:00")));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testEmailMatcher() {
|
|
|
+ Tester test = FormatTester.forCode("email");
|
|
|
+ assertFalse(test.accepts(NullNode.getInstance()));
|
|
|
+ assertTrue(test.accepts(new TextNode("user@mail.com")));
|
|
|
+ assertFalse(test.accepts(new TextNode("user@mail")));
|
|
|
+ assertFalse(test.accepts(new TextNode("@mail.com")));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testHostnameMatcher() {
|
|
|
+ Tester test = FormatTester.forCode("hostname");
|
|
|
+ assertFalse(test.accepts(NullNode.getInstance()));
|
|
|
+ assertTrue(test.accepts(new TextNode("google.com")));
|
|
|
+ assertFalse(test.accepts(new TextNode("192.168.0.1")));
|
|
|
+ assertFalse(test.accepts(new TextNode("user@google.com")));
|
|
|
+ assertFalse(test.accepts(new TextNode("http://google.com")));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testipv4Matcher() {
|
|
|
+ Tester test = FormatTester.forCode("ipv4");
|
|
|
+ assertFalse(test.accepts(NullNode.getInstance()));
|
|
|
+ assertTrue(test.accepts(new TextNode("192.168.0.1")));
|
|
|
+ assertFalse(test.accepts(new TextNode("192.168.0.1/24")));
|
|
|
+ assertFalse(test.accepts(new TextNode("192.168.0.1:80")));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testipv6Matcher() {
|
|
|
+ Tester test = FormatTester.forCode("ipv6");
|
|
|
+ assertFalse(test.accepts(NullNode.getInstance()));
|
|
|
+ assertTrue(test.accepts(new TextNode("::1")));
|
|
|
+ assertFalse(test.accepts(new TextNode("[::1]:80")));
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testURIMatcher() {
|
|
|
+ Tester test = FormatTester.forCode("uri");
|
|
|
+ assertFalse(test.accepts(NullNode.getInstance()));
|
|
|
+ assertTrue(test.accepts(new TextNode("file:///var/log/syslog")));
|
|
|
+ assertFalse(test.accepts(new TextNode("#/definitions/schemaArray")));
|
|
|
+ assertTrue(test.accepts(new TextNode("http://google.com")));
|
|
|
+ assertFalse(test.accepts(new TextNode("100:file")));
|
|
|
+ assertFalse(test.accepts(new TextNode("http://google.com/{domain}")));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testURIReferenceMatcher() {
|
|
|
+ Tester test = FormatTester.forCode("uri-reference");
|
|
|
+ assertFalse(test.accepts(NullNode.getInstance()));
|
|
|
+ assertTrue(test.accepts(new TextNode("file:///var/log/syslog")));
|
|
|
+ assertTrue(test.accepts(new TextNode("#/definitions/schemaArray")));
|
|
|
+ assertTrue(test.accepts(new TextNode("http://google.com")));
|
|
|
+ assertFalse(test.accepts(new TextNode("100:file")));
|
|
|
+ assertFalse(test.accepts(new TextNode("http://google.com/{domain}")));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testJsonPointerMatcher() {
|
|
|
+ Tester test = FormatTester.forCode("json-pointer");
|
|
|
+ assertFalse(test.accepts(NullNode.getInstance()));
|
|
|
+ assertTrue(test.accepts(new TextNode("/definitions/schemaArray")));
|
|
|
+ assertFalse(test.accepts(new TextNode("#/definitions/schemaArray")));
|
|
|
+ assertTrue(test.accepts(new TextNode("/definitions/schemas/5/")));
|
|
|
+ }
|
|
|
+}
|