Beispiel #1
0
    def test_subrecord_schema(self):
        expected = {
            'additionalProperties': False,
            'id': 'SubRecordRecord',
            'properties': {
                'zeta': {
                    '$ref': '#/definitions/SimpleRecord'
                },
            },
            'required': ['zeta'],
            'type': 'object',
            'definitions': {
                'SimpleRecord': {
                    'additionalProperties': False,
                    'id': 'SimpleRecord',
                    'properties': {
                        'alpha': {
                            'type': 'string'
                        },
                        'beta': {
                            'type': 'integer'
                        }
                    },
                    'required': ['alpha', 'beta'],
                    'type': 'object'
                }
            },
        }

        self.assertEqual(expected,
                         jsonschema.get_root_schema_dict(SubRecordRecord))
        schema = jsonschema.get_root_schema_dict(SubRecordRecord)
        validate({'zeta': {'alpha': 'foo', 'beta': 14}}, schema)
Beispiel #2
0
 def test_enum_schema(self):
     expected = {
         'id': 'EnumRecord',
         'type': 'object',
         'properties': {
             'gamma': {
                 'type': 'string',
                 'enum': ['bar', 'baz', 'foo']
             },
         },
         'required': ['gamma'],
         'additionalProperties': False,
     }
     self.assertEqual(expected, jsonschema.get_root_schema_dict(EnumRecord))
     schema = jsonschema.get_root_schema_dict(EnumRecord)
     validate({'gamma': 'bar'}, schema)
Beispiel #3
0
 def test_enum_schema(self):
     expected = {
         'id': 'EnumRecord',
         'type': 'object',
         'properties': {
             'gamma': {
                 'type': 'string',
                 'enum': ['bar', 'baz', 'foo']
             },
         },
         'required': ['gamma'],
         'additionalProperties': False,
     }
     self.assertEqual(expected, jsonschema.get_root_schema_dict(EnumRecord))
     schema = jsonschema.get_root_schema_dict(EnumRecord)
     validate({'gamma': 'bar'}, schema)
Beispiel #4
0
 def test_map_value_type_restricted(self):
     """Ensure that maps are restricted based on the value type"""
     schema = jsonschema.get_root_schema_dict(MapRecord)
     self.assertRaises(ValidationError, validate,
                       {'epsilon': {
                           'foo': 'bar'
                       }}, schema)
Beispiel #5
0
 def test_list_schema(self):
     expected = {
         'id': 'ListRecord',
         'type': 'object',
         'properties': {
             'delta': {
                 'type': 'array',
                 'items': {
                     'type': 'string',
                 },
             },
         },
         'required': ['delta'],
         'additionalProperties': False,
     }
     self.assertEqual(expected, jsonschema.get_root_schema_dict(ListRecord))
     schema = jsonschema.get_root_schema_dict(ListRecord)
     validate({'delta': ['foo', 'bar', 'baz']}, schema)
Beispiel #6
0
 def test_list_schema(self):
     expected = {
         'id': 'ListRecord',
         'type': 'object',
         'properties': {
             'delta': {
                 'type': 'array',
                 'items': {
                     'type': 'string',
                 },
             },
         },
         'required': ['delta'],
         'additionalProperties': False,
     }
     self.assertEqual(expected, jsonschema.get_root_schema_dict(ListRecord))
     schema = jsonschema.get_root_schema_dict(ListRecord)
     validate({'delta': ['foo', 'bar', 'baz']}, schema)
Beispiel #7
0
    def serialize_validate(self, valid_record):
        """Serialize and validate a record

        The record is dumped to JSON and then loaded into a Python dictionary,
        which is checked against the known schema
        """
        schema = jsonschema.get_root_schema_dict(valid_record)
        record_json = jsonschema.dumps(valid_record)
        record_dict = json.loads(record_json)
        validate(record_dict, schema)
Beispiel #8
0
    def serialize_validate(self, valid_record):
        """Serialize and validate a record

        The record is dumped to JSON and then loaded into a Python dictionary,
        which is checked against the known schema
        """
        schema = jsonschema.get_root_schema_dict(valid_record)
        record_json = jsonschema.dumps(valid_record)
        record_dict = json.loads(record_json)
        validate(record_dict, schema)
Beispiel #9
0
 def test_simple_schema(self):
     expected = {
         'id': 'SimpleRecord',
         'type': 'object',
         'properties': {
             'alpha': {'type': 'string'},
             'beta': {'type': 'integer'}
         },
         'required': ['alpha', 'beta'],
         'additionalProperties': False,
     }
     self.assertEqual(expected, jsonschema.get_root_schema_dict(SimpleRecord))
Beispiel #10
0
 def test_map_schema(self):
     expected = {
         'id': 'MapRecord',
         'type': 'object',
         'properties': {
             'epsilon': {
                 'type': 'object',
                 'additionalProperties': True,
                 'patternProperties': {
                     '^.*$': {
                         'type': 'integer',
                     }
                 }
             },
         },
         'required': ['epsilon'],
         'additionalProperties': False,
     }
     self.assertEqual(expected, jsonschema.get_root_schema_dict(MapRecord))
     schema = jsonschema.get_root_schema_dict(MapRecord)
     validate({'epsilon': {'foo': 14}}, schema)
Beispiel #11
0
 def test_map_schema(self):
     expected = {
         'id': 'MapRecord',
         'type': 'object',
         'properties': {
             'epsilon': {
                 'type': 'object',
                 'additionalProperties': True,
                 'patternProperties': {
                     '^.*$': {
                         'type': 'integer',
                     }
                 }
             },
         },
         'required': ['epsilon'],
         'additionalProperties': False,
     }
     self.assertEqual(expected, jsonschema.get_root_schema_dict(MapRecord))
     schema = jsonschema.get_root_schema_dict(MapRecord)
     validate({'epsilon': {'foo': 14}}, schema)
Beispiel #12
0
    def test_subrecord_schema(self):
        expected = {
            'additionalProperties': False,
            'id': 'SubRecordRecord',
            'properties': {
                'zeta': {'$ref': '#/definitions/SimpleRecord'},
                },
            'required': ['zeta'],
            'type': 'object',
            'definitions': {
                'SimpleRecord': {
                    'additionalProperties': False,
                    'id': 'SimpleRecord',
                    'properties': {'alpha': {'type': 'string'},
                                   'beta': {'type': 'integer'}
                    },
                    'required': ['alpha', 'beta'],
                    'type': 'object'}
            },
        }

        self.assertEqual(expected, jsonschema.get_root_schema_dict(SubRecordRecord))
        schema = jsonschema.get_root_schema_dict(SubRecordRecord)
        validate({'zeta': {'alpha': 'foo', 'beta': 14}}, schema)
Beispiel #13
0
 def test_simple_schema(self):
     expected = {
         'id': 'SimpleRecord',
         'type': 'object',
         'properties': {
             'alpha': {
                 'type': 'string'
             },
             'beta': {
                 'type': 'integer'
             }
         },
         'required': ['alpha', 'beta'],
         'additionalProperties': False,
     }
     self.assertEqual(expected,
                      jsonschema.get_root_schema_dict(SimpleRecord))
Beispiel #14
0
 def test_map_value_type_restricted(self):
     """Ensure that maps are restricted based on the value type"""
     schema = jsonschema.get_root_schema_dict(MapRecord)
     self.assertRaises(ValidationError, validate, {'epsilon': {'foo': 'bar'}}, schema)