def test_null(self, schema_type):
        schema = {"type": schema_type}
        validator = OAS31Validator(schema)
        value = None

        with pytest.raises(ValidationError):
            validator.validate(value)
    def test_schema_ref(self):
        schema = {
            "$ref": "#/$defs/Pet",
            "$defs": {
                "Pet": {
                    "required": ["id", "name"],
                    "properties": {
                        "id": {
                            "type": "integer",
                            "format": "int64"
                        },
                        "name": {
                            "type": "string"
                        },
                        "tag": {
                            "type": "string"
                        }
                    }
                }
            }
        }
        validator = OAS31Validator(
            schema,
            format_checker=oas31_format_checker,
        )

        result = validator.validate({"id": 1, "name": "John"}, schema)
        assert result is None

        with pytest.raises(ValidationError) as excinfo:
            validator.validate({"name": "John"}, schema)

        error = "'id' is a required property"
        assert error in str(excinfo.value)
    def test_nullable(self, schema_type):
        schema = {"type": [schema_type, 'null']}
        validator = OAS31Validator(schema)
        value = None

        result = validator.validate(value)

        assert result is None
Esempio n. 4
0
 def iter_errors(self, schema, value):
     validator = OAS31Validator(
         schema,
         resolver=self.dereferencer.resolver_manager.resolver,
         format_checker=oas31_format_checker,
     )
     for err in validator.iter_errors(value):
         yield err
    def test_string_uuid(self, value):
        schema = {"type": 'string', "format": 'uuid'}
        validator = OAS31Validator(
            schema,
            format_checker=oas31_format_checker,
        )

        result = validator.validate(value)

        assert result is None
    def test_string_format_datetime_strict_rfc3339(self, value):
        schema = {"type": 'string', "format": 'date-time'}
        validator = OAS31Validator(
            schema,
            format_checker=oas31_format_checker,
        )

        result = validator.validate(value)

        assert result is None
    def test_schema_validation(self):
        schema = {
            "type": "object",
            "required": ["name"],
            "properties": {
                "name": {
                    "type": "string"
                },
                "age": {
                    "type": "integer",
                    "format": "int32",
                    "minimum": 0,
                    "nullable": True,
                },
                "birth-date": {
                    "type": "string",
                    "format": "date",
                }
            },
            "additionalProperties": False,
        }
        validator = OAS31Validator(
            schema,
            format_checker=oas31_format_checker,
        )

        result = validator.validate({"name": "John", "age": 23}, schema)
        assert result is None

        with pytest.raises(ValidationError) as excinfo:
            validator.validate({"name": "John", "city": "London"}, schema)

        error = "Additional properties are not allowed ('city' was unexpected)"
        assert error in str(excinfo.value)

        with pytest.raises(ValidationError) as excinfo:
            validator.validate({"name": "John", "birth-date": "-12"})

        error = "'-12' is not a 'date'"
        assert error in str(excinfo.value)