Beispiel #1
0
 def test_simple_obj1(self):
     s1 = {
         "type": "object",
         "properties": {
             "name": {
                 "type": "string"
             },
             "age": {
                 "type": "integer"
             },
             "gender": {
                 "type": "string",
                 "maxLength": 1,
                 "enum": ["F", "M"]
             },
             "email": {
                 "type": "string",
                 "format": "email"
             },
         }
     }
     s2 = copy.deepcopy(s1)
     del s2["properties"]["email"]
     with self.subTest():
         self.assertTrue(isSubschema(s1, s2))
     with self.subTest():
         self.assertFalse(isSubschema(s2, s1))
Beispiel #2
0
 def test_required1(self):
     s1 = {"type": "object", "minProperties": 1}
     s2 = {"type": "object", "required": ["p1"]}
     with self.subTest():
         self.assertFalse(isSubschema(s1, s2))
     with self.subTest():
         self.assertTrue(isSubschema(s2, s1))
Beispiel #3
0
 def test_require6(self):
     s1 = {"type": "object", "required": ["p1", "p2"]}
     s2 = {"type": "object", "required": ["p2"]}
     with self.subTest():
         self.assertTrue(isSubschema(s1, s2))
     with self.subTest():
         self.assertFalse(isSubschema(s2, s1))
 def test_str_not_str(self):
     s1 = {"type": "string"}
     s2 = {"not": s1}
     with self.subTest():
         self.assertFalse(isSubschema(s1, s2))
     with self.subTest():
         self.assertFalse(isSubschema(s2, s1))
Beispiel #5
0
 def test_all_all_1(self):
     s1 = {
         "$schema": "http://json-schema.org/draft-04/schema",
         "type": "integer",
         "allOf": [{
             "multipleOf": 3
         }, {
             "minimum": 5
         }]
     }  # 6, 9, 12, 15, 18, ...
     s2 = {
         "$schema": "http://json-schema.org/draft-04/schema",
         "type": "number",
         "multipleOf": 3,
         "allOf": [{
             "type": "integer"
         }, {
             "type": "number",
             "multipleOf": 5
         }]
     }  # ..., -30, -15, 15, 30, 45, ..
     with self.subTest():
         self.assertFalse(isSubschema(s1, s2))
     with self.subTest():
         self.assertFalse(isSubschema(s2, s1))
 def test_enum1(self):
     s1 = {"enum": [1, 2, "test", False]}
     s2 = {"type": ["integer", "string"], "minimum": 10, "enum": [1, 2]}
     with self.subTest():
         self.assertFalse(isSubschema(s1, s2))
     with self.subTest():
         self.assertTrue(isSubschema(s2, s1))
 def test_enum4(self):
     s1 = {"enum": [3, 4, 5]}
     s2 = {"enum": [4, 5, 3]}
     with self.subTest():
         self.assertTrue(isSubschema(s1, s2))
     with self.subTest():
         self.assertTrue(isSubschema(s2, s1))
 def test_enum3(self):
     s1 = {"enum": [3, 4, 5]}
     s2 = {"enum": [1, 2, 3]}
     with self.subTest():
         self.assertFalse(isSubschema(s1, s2))
     with self.subTest():
         self.assertFalse(isSubschema(s2, s1))
 def test_enum5(self):
     s1 = {"enum": [3, 4, 5], "allOf": [{"enum": [1, 2]}]}
     s2 = {"enum": [4, 5, 3]}
     with self.subTest():
         self.assertTrue(isSubschema(s1, s2))
     with self.subTest():
         self.assertFalse(isSubschema(s2, s1))
 def test_top_nottop(self):
     s1 = {}
     s2 = {"type": "string"}
     with self.subTest():
         self.assertFalse(isSubschema(s1, s2))
     with self.subTest():
         self.assertTrue(isSubschema(s2, s1))
 def test_top_bot(self):
     s1 = {}
     s2 = {"type": "string", "enum": [1, 2, 3]}
     with self.subTest():
         self.assertFalse(isSubschema(s1, s2))
     with self.subTest():
         self.assertTrue(isSubschema(s2, s1))
Beispiel #12
0
 def test_min_property(self):
     s1 = {"type": "object", "minProperties": 1}
     s2 = {"type": "object"}
     with self.subTest():
         self.assertTrue(isSubschema(s1, s2))
     with self.subTest():
         self.assertFalse(isSubschema(s2, s1))
 def test_str_int(self):
     s1 = {
         "$schema":
         "http://json-schema.org/draft-04/schema",
         "type":
         "string",
         "pattern":
         "a+",
         "allOf": [{
             "type": "string",
             "pattern": "b+"
         }, {
             "allOf": [{
                 "type": "string",
                 "maxLength": 10
             }]
         }]
     }
     s2 = {
         "$schema": "http://json-schema.org/draft-04/schema",
         "type": "integer",
         "maxLength": 1
     }
     with self.subTest():
         self.assertFalse(isSubschema(s1, s2))
     with self.subTest():
         self.assertFalse(isSubschema(s2, s1))
Beispiel #14
0
 def test_tricky6(self):
     s1 = {
         "type": "object",
         "properties": {
             "name": {
                 "type": "string"
             },
             "age": {
                 "type": "integer"
             },
             "gender": {
                 "type": "string",
                 "maxLength": 1,
                 "enum": ["F", "M"]
             },
             "email": {
                 "type": "string",
                 "format": "email"
             },
             "emaik": {
                 "type": "string",
                 "format": "email"
             }
         },
         "additionalProperties": {
             "type": "boolean"
         }
     }
     s2 = {
         "type": "object",
         "properties": {
             "name": {
                 "type": "string"
             },
             "age": {
                 "type": "integer"
             },
             "gender": {
                 "type": "string",
                 "maxLength": 1,
                 "enum": ["F", "M"]
             }
         },
         "patternProperties": {
             "emai": {
                 "type": "string",
                 "minLength": 10
             }
         },
         "additionalProperties": {
             "type": "boolean"
         }
     }
     with self.subTest():
         self.assertFalse(isSubschema(s1, s2))
     with self.subTest():
         self.assertFalse(isSubschema(s2, s1))
Beispiel #15
0
 def test_simple_obj5(self):
     s1 = {
         "type": "object",
         "properties": {
             "name": {
                 "type": "string"
             },
             "age": {
                 "type": "integer"
             },
             "gender": {
                 "type": "string",
                 "maxLength": 1,
                 "enum": ["F", "M"]
             },
             "email": {
                 "type": "string",
                 "format": "email"
             },
         },
         "patternProperties": {
             "b.*b": {
                 "type": "integer"
             }
         }
     }
     s2 = {
         "type": "object",
         "properties": {
             "name": {
                 "type": "string"
             },
             "age": {
                 "type": "integer"
             },
             "gender": {
                 "type": "string",
                 "maxLength": 1,
                 "enum": ["F", "M"]
             },
             "email": {
                 "type": "string",
                 "format": "email"
             },
         },
         "patternProperties": {
             "^b(\w)+b$": {
                 "type": "integer",
                 "minimum": 10
             }
         }
     }
     with self.subTest():
         self.assertFalse(isSubschema(s1, s2))
     with self.subTest():
         self.assertFalse(isSubschema(s2, s1))
 def test_t_t_5(self):
     s1 = {
         "$schema": "http://json-schema.org/draft-04/schema",
         "type": ["string", "array"]
     }
     s2 = {
         "$schema": "http://json-schema.org/draft-04/schema",
         "type": ["number", "string"]
     }
     with self.subTest():
         self.assertFalse(isSubschema(s1, s2))
     with self.subTest():
         self.assertFalse(isSubschema(s2, s1))
 def test_t_t_3(self):
     s1 = {
         "$schema": "http://json-schema.org/draft-04/schema",
         "type": "integer"
     }
     s2 = {
         "$schema": "http://json-schema.org/draft-04/schema",
         "type": ["number"]
     }
     with self.subTest():
         self.assertTrue(isSubschema(s1, s2))
     with self.subTest():
         self.assertFalse(isSubschema(s2, s1))
Beispiel #18
0
 def test_require7(self):
     s1 = {"type": "object", "required": ["p1", "p2"]}
     s2 = {
         "type": "object",
         "required": ["p2"],
         "additionalProperties": {
             "type": "boolean"
         }
     }
     with self.subTest():
         self.assertFalse(isSubschema(s1, s2))
     with self.subTest():
         self.assertFalse(isSubschema(s2, s1))
Beispiel #19
0
 def test_tricky1(self):
     s1 = {
         "type": "object",
         "properties": {
             "name": {
                 "type": "string"
             },
             "age": {
                 "type": "integer"
             },
             "gender": {
                 "type": "string",
                 "maxLength": 1,
                 "enum": ["F", "M"]
             },
             "email": {
                 "type": "string",
                 "format": "email"
             },
             "emaik": {
                 "type": "string",
                 "format": "email"
             }
         }
     }
     s2 = {
         "type": "object",
         "properties": {
             "name": {
                 "type": "string"
             },
             "age": {
                 "type": "integer"
             },
             "gender": {
                 "type": "string",
                 "maxLength": 1,
                 "enum": ["F", "M"]
             }
         },
         "patternProperties": {
             "^emai(l|k)$": {
                 "type": "string"
             }
         },
         "required": ["name"]
     }
     with self.subTest():
         self.assertFalse(isSubschema(s1, s2))
     with self.subTest():
         self.assertTrue(isSubschema(s2, s1))
Beispiel #20
0
 def test_mulOf_num_int2(self):
     s1 = {
         "$schema": "http://json-schema.org/draft-04/schema",
         "type": "number",
         "multipleOf": 1
     }
     s2 = {
         "$schema": "http://json-schema.org/draft-04/schema",
         "type": "integer"
     }
     with self.subTest():
         self.assertTrue(isSubschema(s1, s2))
     with self.subTest():
         self.assertTrue(isSubschema(s2, s1))
 def test_enum2(self):
     s1 = {
         "allOf": [{
             "enum": [1, 2, 3]
         }, {
             "type": "integer"
         }],
         "enum": [3, 4, 5]
     }
     s2 = {"type": "integer", "enum": [1, 2, 3]}
     with self.subTest():
         self.assertTrue(isSubschema(s1, s2))
     with self.subTest():
         self.assertFalse(isSubschema(s2, s1))
 def test_empty_items1(self):
     s1 = {
         "$schema": "http://json-schema.org/draft-04/schema",
         "type": "array"
     }
     s2 = {
         "$schema": "http://json-schema.org/draft-04/schema",
         "type": "array",
         "items": {}
     }
     with self.subTest():
         self.assertTrue(isSubschema(s1, s2))
     with self.subTest():
         self.assertTrue(isSubschema(s2, s1))
 def test_unique(self):
     s1 = {
         "$schema": "http://json-schema.org/draft-04/schema",
         "type": "array",
         "uniqueItems": True
     }
     s2 = {
         "$schema": "http://json-schema.org/draft-04/schema",
         "type": "array",
         "uniqueItems": False
     }
     with self.subTest():
         self.assertTrue(isSubschema(s1, s2))
     with self.subTest():
         self.assertFalse(isSubschema(s2, s1))
Beispiel #24
0
 def test_min_min(self):
     s1 = {
         "$schema": "http://json-schema.org/draft-04/schema",
         "type": "number",
         "minimum": 5
     }
     s2 = {
         "$schema": "http://json-schema.org/draft-04/schema",
         "type": "number",
         "minimum": 1
     }
     with self.subTest():
         self.assertTrue(isSubschema(s1, s2))
     with self.subTest():
         self.assertFalse(isSubschema(s2, s1))
Beispiel #25
0
 def test_min_max(self):
     s1 = {
         "$schema": "http://json-schema.org/draft-04/schema",
         "type": "integer",
         "minimum": 10
     }
     s2 = {
         "$schema": "http://json-schema.org/draft-04/schema",
         "type": "integer",
         "maximum": 20
     }
     with self.subTest():
         self.assertFalse(isSubschema(s1, s2))
     with self.subTest():
         self.assertFalse(isSubschema(s2, s1))
Beispiel #26
0
 def test_mulOf_num_min_int(self):
     s1 = {
         "$schema": "http://json-schema.org/draft-04/schema",
         "type": "number",
         "multipleOf": 10
     }
     s2 = {
         "$schema": "http://json-schema.org/draft-04/schema",
         "type": "integer",
         "minimum": 5
     }
     with self.subTest():
         self.assertFalse(isSubschema(s1, s2))
     with self.subTest():
         self.assertFalse(isSubschema(s2, s1))
 def test_min_min(self):
     s1 = {
         "$schema": "http://json-schema.org/draft-04/schema",
         "type": "string",
         "minLength": 5
     }
     s2 = {
         "$schema": "http://json-schema.org/draft-04/schema",
         "type": "integer",
         "maxLength": 1
     }
     with self.subTest():
         self.assertFalse(isSubschema(s1, s2))
     with self.subTest():
         self.assertFalse(isSubschema(s2, s1))
Beispiel #28
0
 def test_identity(self):
     s1 = {
         "$schema": "http://json-schema.org/draft-04/schema",
         "type": "number"
     }
     s2 = s1
     self.assertTrue(isSubschema(s1, s2))
Beispiel #29
0
 def test_identity(self):
     s1 = {
         "type": "object",
         "properties": {
             "name": {
                 "type": "string"
             },
             "age": {
                 "type": "integer"
             },
             "gender": {
                 "type": "string",
                 "maxLength": 1,
                 "enum": ["F", "M"]
             },
             "email": {
                 "type": "string",
                 "format": "email"
             }
         }
     }
     s2 = copy.deepcopy(s1)
     s2["properties"]["gender"] = {
         "type": "string",
         "maxLength": 1,
         "enum": ["M", "F"]
     }
     self.assertTrue(isSubschema(s1, s2))
 def test_str_not_str_with_range4(self):
     s1 = {"type": "string", "minLength": 1, "maxLength": 5}
     s2 = {
         "allOf": [{
             "type": "string"
         }, {
             "not": {
                 "type": "string",
                 "minLength": 2
             }
         }]
     }
     with self.subTest():
         self.assertFalse(isSubschema(s1, s2))
     with self.subTest():
         self.assertFalse(isSubschema(s2, s1))