Ejemplo n.º 1
0
def test_unique_items_validation_with_duplicates(value):
    parameters = parameters_validator([
        {
            'name': 'id',
            'in': PATH,
            'description': 'id',
            'type': ARRAY,
            'required': True,
            'uniqueItems': True,
            'items': {
                'type': [STRING, NUMBER, BOOLEAN]
            },
        },
    ])
    parameter_values = {
        'id': value,
    }

    with pytest.raises(ValidationError) as err:
        validate_parameters(parameter_values, parameters, {})

    assert_message_in_errors(
        MESSAGES['unique_items']['invalid'],
        err.value.detail,
        'id.uniqueItems',
    )
Ejemplo n.º 2
0
def test_parameter_schema_validation_for_invalid_value(value, error_key,
                                                       message_key):
    parameters = parameters_validator([
        {
            'name': 'id',
            'in': BODY,
            'description': 'id',
            'required': True,
            'schema': {
                'type': STRING,
                'format': 'uuid'
            },
        },
    ])
    parameter_values = {
        'id': value,
    }

    with pytest.raises(ValidationError) as err:
        validate_parameters(parameter_values, parameters, context={})

    assert_message_in_errors(
        MESSAGES[error_key][message_key],
        err.value.messages,
        'id.{0}'.format(error_key),
    )
Ejemplo n.º 3
0
def test_nullable_enum_with_null_values_strict(enum, value, monkeypatch):

    parameters = parameters_validator([
        {
            'name': 'id',
            'in': PATH,
            'description': 'id',
            'type': [STRING, NUMBER, BOOLEAN],
            'required': True,
            'enum': enum,
            'x-nullable': True
        },
    ])
    parameter_values = {
        'id': value,
    }

    monkeypatch.setattr(os, 'environ', {FLEX_DISABLE_X_NULLABLE: '1'})
    with pytest.raises(ValidationError) as err:
        validate_parameters(parameter_values, parameters, {})

    assert_message_in_errors(
        MESSAGES['enum']['invalid'],
        err.value.detail,
        'id.enum',
    )
Ejemplo n.º 4
0
def test_parameter_items_validation_on_invalid_array():
    parameters = parameters_validator([
        {
            'name': 'id',
            'in': QUERY,
            'description': 'id',
            'items': {
                'type': INTEGER,
                'minimum': 0,
            },
            'type': ARRAY,
        },
    ])
    value = [1, 2, '3', -1, 4]
    parameter_values = {
        'id': value,
    }

    with pytest.raises(ValidationError) as err:
        validate_parameters(parameter_values, parameters, context={})

    assert_message_in_errors(
        MESSAGES['minimum']['invalid'],
        err.value.detail,
        'id.items.type',
    )
    assert_message_in_errors(
        MESSAGES['minimum']['invalid'],
        err.value.detail,
        'id.items.minimum',
    )
Ejemplo n.º 5
0
def test_enum_validation_with_invalid_values(enum, value):
    from django.core.exceptions import ValidationError
    serializer = ParameterSerializer(many=True, data=(
        {
            'name': 'id',
            'in': PATH,
            'description':'id',
            'type': [STRING, NUMBER, BOOLEAN],
            'required': True,
            'enum': enum,
        },
    ))
    assert serializer.is_valid(), serializer.errors
    parameters = serializer.object
    parameter_values = {
        'id': value,
    }

    with pytest.raises(ValidationError) as err:
        validate_parameters(parameter_values, parameters, {}, inner=True)

    assert 'id' in err.value.messages[0]
    assert 'enum' in err.value.messages[0]['id'][0]
    assert_error_message_equal(
        err.value.messages[0]['id'][0]['enum'][0],
        MESSAGES['enum']['invalid'],
    )
Ejemplo n.º 6
0
def test_parameter_format_validation_on_invalid_values(format_, value, error_key):
    from django.core.exceptions import ValidationError
    serializer = ParameterSerializer(many=True, data=(
        {
            'name': 'id',
            'in': PATH,
            'description': 'id',
            'type': STRING,
            'required': True,
            'format': format_,
        },
    ))
    assert serializer.is_valid(), serializer.errors
    parameters = serializer.object
    parameter_values = {
        'id': value,
    }

    with pytest.raises(ValidationError) as err:
        validate_parameters(parameter_values, parameters, {}, inner=True)

    assert 'id' in err.value.messages[0]
    assert 'format' in err.value.messages[0]['id'][0]
    assert_error_message_equal(
        err.value.messages[0]['id'][0]['format'][0],
        MESSAGES['format'][error_key],
    )
Ejemplo n.º 7
0
def test_multiple_of_validation_for_invalid_values(divisor, value):
    from django.core.exceptions import ValidationError
    serializer = ParameterSerializer(many=True, data=(
        {
            'name': 'id',
            'in': PATH,
            'description':'id',
            'type': NUMBER,
            'required': True,
            'multipleOf': divisor,
        },
    ))
    assert serializer.is_valid(), serializer.errors
    parameters = serializer.object
    parameter_values = {
        'id': value,
    }

    with pytest.raises(ValidationError) as err:
        validate_parameters(parameter_values, parameters, {}, inner=True)

    assert 'id' in err.value.messages[0]
    assert 'multipleOf' in err.value.messages[0]['id'][0]
    assert_error_message_equal(
        err.value.messages[0]['id'][0]['multipleOf'][0],
        MESSAGES['multiple_of']['invalid'],
    )
Ejemplo n.º 8
0
def test_parameter_items_validation_on_invalid_array():
    parameters = parameters_validator([
        {
            'name': 'id',
            'in': QUERY,
            'description': 'id',
            'items': {
                'type': INTEGER,
                'minimum': 0,
            },
            'type': ARRAY,
        },
    ])
    value = [1, 2, '3', -1, 4]
    parameter_values = {
        'id': value,
    }

    with pytest.raises(ValidationError) as err:
        validate_parameters(parameter_values, parameters, context={})

    assert_message_in_errors(
        MESSAGES['minimum']['invalid'],
        err.value.detail,
        'id.items.type',
    )
    assert_message_in_errors(
        MESSAGES['minimum']['invalid'],
        err.value.detail,
        'id.items.minimum',
    )
Ejemplo n.º 9
0
def test_parameter_schema_validation_for_invalid_value(value, error_key, message_key):
    from django.core.exceptions import ValidationError
    serializer = ParameterSerializer(many=True, data=(
        {
            'name': 'id',
            'in': BODY,
            'description': 'id',
            'required': True,
            'schema': {'type': STRING, 'format': 'uuid'},
        },
    ))
    assert serializer.is_valid(), serializer.errors
    parameters = serializer.object
    parameter_values = {
        'id': value,
    }

    with pytest.raises(ValidationError) as err:
        validate_parameters(parameter_values, parameters, context={}, inner=True)

    assert 'id' in err.value.messages[0]
    assert error_key in err.value.messages[0]['id'][0]
    assert_error_message_equal(
        err.value.messages[0]['id'][0][error_key][0],
        MESSAGES[error_key][message_key],
    )
Ejemplo n.º 10
0
def test_parameter_schema_validation_on_valid_values(value):
    parameters = parameters_validator(
        [{"name": "id", "in": BODY, "description": "id", "required": True, "schema": {"type": STRING, "format": "uri"}}]
    )
    parameter_values = {"id": value}

    validate_parameters(parameter_values, parameters, context={})
Ejemplo n.º 11
0
def test_max_items_on_values_with_too_many_items(max_items, value):
    from django.core.exceptions import ValidationError
    serializer = ParameterSerializer(many=True, data=(
        {
            'name': 'id',
            'in': PATH,
            'description':'id',
            'type': ARRAY,
            'required': True,
            'maxItems': max_items,
            'items': {'type': STRING},
        },
    ))
    assert serializer.is_valid(), serializer.errors
    parameters = serializer.object
    parameter_values = {
        'id': value,
    }

    with pytest.raises(ValidationError) as err:
        validate_parameters(parameter_values, parameters, {}, inner=True)

    assert 'id' in err.value.messages[0]
    assert 'maxItems' in err.value.messages[0]['id'][0]
    assert_error_message_equal(
        err.value.messages[0]['id'][0]['maxItems'][0],
        MESSAGES['max_items']['invalid'],
    )
Ejemplo n.º 12
0
def test_max_items_on_values_with_too_many_items(max_items, value):
    parameters = parameters_validator([
        {
            'name': 'id',
            'in': PATH,
            'description': 'id',
            'type': ARRAY,
            'required': True,
            'maxItems': max_items,
            'items': {
                'type': STRING
            },
        },
    ])
    parameter_values = {
        'id': value,
    }

    with pytest.raises(ValidationError) as err:
        validate_parameters(parameter_values, parameters, {})

    assert_message_in_errors(
        MESSAGES['max_items']['invalid'],
        err.value.detail,
        'id.maxItems',
    )
Ejemplo n.º 13
0
def test_nullable_enum_with_null_values_strict(enum, value, monkeypatch):

    parameters = parameters_validator([
        {
            'name': 'id',
            'in': PATH,
            'description': 'id',
            'type': [STRING, NUMBER, BOOLEAN],
            'required': True,
            'enum': enum,
            'x-nullable': True
        },
    ])
    parameter_values = {
        'id': value,
    }

    monkeypatch.setattr(os, 'environ', {FLEX_DISABLE_X_NULLABLE: '1'})
    with pytest.raises(ValidationError) as err:
        validate_parameters(parameter_values, parameters, {})

    assert_message_in_errors(
        MESSAGES['enum']['invalid'],
        err.value.detail,
        'id.enum',
    )
Ejemplo n.º 14
0
def test_nullable_enum_with_invalid_values(enum, value):

    parameters = parameters_validator([
        {
            'name': 'id',
            'in': PATH,
            'description': 'id',
            'type': [STRING, NUMBER, BOOLEAN],
            'required': True,
            'enum': enum,
            'x-nullable': True
        },
    ])
    parameter_values = {
        'id': value,
    }

    with pytest.raises(ValidationError) as err:
        validate_parameters(parameter_values, parameters, {})

    assert_message_in_errors(
        MESSAGES['enum']['invalid'],
        err.value.detail,
        'id.enum',
    )
Ejemplo n.º 15
0
def test_nullable_enum_with_invalid_values(enum, value):

    parameters = parameters_validator([
        {
            'name': 'id',
            'in': PATH,
            'description': 'id',
            'type': [STRING, NUMBER, BOOLEAN],
            'required': True,
            'enum': enum,
            'x-nullable': True
        },
    ])
    parameter_values = {
        'id': value,
    }

    with pytest.raises(ValidationError) as err:
        validate_parameters(parameter_values, parameters, {})

    assert_message_in_errors(
        MESSAGES['enum']['invalid'],
        err.value.detail,
        'id.enum',
    )
Ejemplo n.º 16
0
def test_parameter_validation_with_correct_type(type_, value):
    parameters = parameters_validator([
        {'name': 'id', 'in': PATH, 'description': 'id', 'type': type_, 'required': True},
    ])
    parameter_values = {
        'id': value,
    }

    validate_parameters(parameter_values, parameters, {})
Ejemplo n.º 17
0
def test_parameter_validation_with_correct_type(type_, value):
    serializer = ParameterSerializer(many=True, data=(
        {'name': 'id', 'in': PATH, 'description': 'id', 'type': type_, 'required': True},
    ))
    assert serializer.is_valid(), serializer.errors
    parameters = serializer.object
    parameter_values = {
        'id': value,
    }

    validate_parameters(parameter_values, parameters, {}, inner=True)
Ejemplo n.º 18
0
def test_parameter_schema_as_reference_validation_for_invalid_value(value, error_key, message_key):
    context = {"definitions": {"UUID": {"type": STRING, "format": "uuid"}}}
    parameters = parameters_validator(
        [{"name": "id", "in": BODY, "description": "id", "required": True, "schema": {"$ref": "#/definitions/UUID"}}],
        context=context,
    )
    parameter_values = {"id": value}

    with pytest.raises(ValidationError) as err:
        validate_parameters(parameter_values, parameters, context=context)

    assert_message_in_errors(MESSAGES[error_key][message_key], err.value.messages, "id.{0}".format(error_key))
Ejemplo n.º 19
0
def test_required_parameters_invalid_when_not_present():
    parameters = parameters_validator([
        {'name': 'id', 'in': PATH, 'description': 'id', 'type': STRING, 'required': True},
    ])
    parameter_values = {}

    with pytest.raises(ValidationError) as err:
        validate_parameters(parameter_values, parameters, {})

    assert_message_in_errors(
        MESSAGES['required']['required'],
        err.value.detail,
        'id.required',
    )
Ejemplo n.º 20
0
def test_parameter_validation_with_correct_type(type_, value):
    parameters = parameters_validator([
        {
            'name': 'id',
            'in': PATH,
            'description': 'id',
            'type': type_,
            'required': True
        },
    ])
    parameter_values = {
        'id': value,
    }

    validate_parameters(parameter_values, parameters, {})
Ejemplo n.º 21
0
def test_multiple_of_validation_for_valid_multiples(divisor, value):
    parameters = parameters_validator([
        {
            'name': 'id',
            'in': PATH,
            'description':'id',
            'type': NUMBER,
            'required': True,
            'multipleOf': divisor,
        },
    ])
    parameter_values = {
        'id': value,
    }

    validate_parameters(parameter_values, parameters, {})
Ejemplo n.º 22
0
def test_parameter_validation_enforces_type(type_, value):
    parameters = parameters_validator([
        {'name': 'id', 'in': PATH, 'description': 'id', 'type': type_, 'required': True},
    ])
    parameter_values = {
        'id': value,
    }

    with pytest.raises(ValidationError) as err:
        validate_parameters(parameter_values, parameters, {})

    assert_message_in_errors(
        MESSAGES['type']['invalid'],
        err.value.detail,
        'id.type',
    )
Ejemplo n.º 23
0
def test_enum_validation_with_allowed_values(enum, value):
    parameters = parameters_validator([
        {
            'name': 'id',
            'in': PATH,
            'description': 'id',
            'type': [STRING, NUMBER, BOOLEAN],
            'required': True,
            'enum': enum,
        },
    ])
    parameter_values = {
        'id': value,
    }

    validate_parameters(parameter_values, parameters, {})
Ejemplo n.º 24
0
def test_parameter_format_validation_succeeds_on_valid_values(format_, value):
    parameters = parameters_validator([
        {
            'name': 'id',
            'in': PATH,
            'description': 'id',
            'type': STRING,
            'required': True,
            'format': format_,
        },
    ])
    parameter_values = {
        'id': value,
    }

    validate_parameters(parameter_values, parameters, {})
Ejemplo n.º 25
0
def test_enum_validation_with_allowed_values(enum, value):
    parameters = parameters_validator([
        {
            'name': 'id',
            'in': PATH,
            'description': 'id',
            'type': [STRING, NUMBER, BOOLEAN],
            'required': True,
            'enum': enum,
        },
    ])
    parameter_values = {
        'id': value,
    }

    validate_parameters(parameter_values, parameters, {})
Ejemplo n.º 26
0
def test_parameter_format_validation_succeeds_on_valid_values(format_, value):
    parameters = parameters_validator([
        {
            'name': 'id',
            'in': PATH,
            'description': 'id',
            'type': STRING,
            'required': True,
            'format': format_,
        },
    ])
    parameter_values = {
        'id': value,
    }

    validate_parameters(parameter_values, parameters, {})
Ejemplo n.º 27
0
def test_maximum_validation_for_valid_values(maximum, value):
    parameters = parameters_validator([
        {
            'name': 'id',
            'in': PATH,
            'description':'id',
            'type': NUMBER,
            'required': True,
            'maximum': maximum,
        },
    ])
    parameter_values = {
        'id': value,
    }

    validate_parameters(parameter_values, parameters, {})
Ejemplo n.º 28
0
def test_parameters_allowed_missing_when_not_required():
    parameters = parameters_validator([
        {
            'name': 'id',
            'in': BODY,
            'description': 'id',
            'type': STRING,
            'required': False,
            'schema': {
                'type': STRING,
            },
        },
    ])
    parameter_values = {}

    validate_parameters(parameter_values, parameters, {})
Ejemplo n.º 29
0
def test_pattern_validation_with_matching_values(pattern, value):
    parameters = parameters_validator([
        {
            'name': 'id',
            'in': PATH,
            'description':'id',
            'type': STRING,
            'required': True,
            'pattern': pattern,
        },
    ])
    parameter_values = {
        'id': value,
    }

    validate_parameters(parameter_values, parameters, {})
Ejemplo n.º 30
0
def test_parameters_allowed_missing_when_not_required():
    parameters = parameters_validator([
        {
            'name': 'id',
            'in': BODY,
            'description': 'id',
            'type': STRING,
            'required': False,
            'schema': {
                'type': STRING,
            },
        },
    ])
    parameter_values = {}

    validate_parameters(parameter_values, parameters, {})
Ejemplo n.º 31
0
def test_minimum_length_validation_with_valid_lengths(min_length, value):
    parameters = parameters_validator([
        {
            'name': 'id',
            'in': PATH,
            'description':'id',
            'type': STRING,
            'required': True,
            'minLength': min_length,
        },
    ])
    parameter_values = {
        'id': value,
    }

    validate_parameters(parameter_values, parameters, {})
Ejemplo n.º 32
0
def test_local_parameter_values_override_schema(value):
    parameters = parameters_validator(
        [
            {
                "name": "id",
                "in": BODY,
                "description": "id",
                "required": True,
                "type": INTEGER,
                "format": INT32,
                "schema": {"type": STRING, "format": "uuid"},
            }
        ]
    )
    parameter_values = {"id": value}

    validate_parameters(parameter_values, parameters, context={})
Ejemplo n.º 33
0
def test_min_items_on_values_with_valid_array_length(min_items, value):
    parameters = parameters_validator([
        {
            'name': 'id',
            'in': PATH,
            'description':'id',
            'type': ARRAY,
            'required': True,
            'minItems': min_items,
            'items': {'type': STRING},
        },
    ])
    parameter_values = {
        'id': value,
    }

    validate_parameters(parameter_values, parameters, {})
Ejemplo n.º 34
0
def test_unique_items_validation_with_no_duplicates(value):
    parameters = parameters_validator([
        {
            'name': 'id',
            'in': PATH,
            'description':'id',
            'type': ARRAY,
            'required': True,
            'uniqueItems': True,
            'items': {'type': [STRING, NUMBER, BOOLEAN]},
        },
    ])
    parameter_values = {
        'id': value,
    }

    validate_parameters(parameter_values, parameters, {})
Ejemplo n.º 35
0
def test_parameter_format_validation_succeeds_on_valid_values(format_, value):
    serializer = ParameterSerializer(many=True, data=(
        {
            'name': 'id',
            'in': PATH,
            'description': 'id',
            'type': STRING,
            'required': True,
            'format': format_,
        },
    ))
    assert serializer.is_valid(), serializer.errors
    parameters = serializer.object
    parameter_values = {
        'id': value,
    }

    validate_parameters(parameter_values, parameters, {})
Ejemplo n.º 36
0
def test_minimum_length_validation_with_valid_lengths(min_length, value):
    serializer = ParameterSerializer(many=True, data=(
        {
            'name': 'id',
            'in': PATH,
            'description':'id',
            'type': STRING,
            'required': True,
            'minLength': min_length,
        },
    ))
    assert serializer.is_valid(), serializer.errors
    parameters = serializer.object
    parameter_values = {
        'id': value,
    }

    validate_parameters(parameter_values, parameters, {}, inner=True)
Ejemplo n.º 37
0
def test_parameter_schema_validation_on_valid_values(value):
    parameters = parameters_validator([
        {
            'name': 'id',
            'in': BODY,
            'description': 'id',
            'required': True,
            'schema': {
                'type': STRING,
                'format': 'uri',
            },
        },
    ])
    parameter_values = {
        'id': value,
    }

    validate_parameters(parameter_values, parameters, context={})
Ejemplo n.º 38
0
def test_parameter_schema_validation_for_invalid_value(value, error_key, message_key):
    parameters = parameters_validator(
        [
            {
                "name": "id",
                "in": BODY,
                "description": "id",
                "required": True,
                "schema": {"type": STRING, "format": "uuid"},
            }
        ]
    )
    parameter_values = {"id": value}

    with pytest.raises(ValidationError) as err:
        validate_parameters(parameter_values, parameters, context={})

    assert_message_in_errors(MESSAGES[error_key][message_key], err.value.messages, "id.{0}".format(error_key))
Ejemplo n.º 39
0
def test_multiple_of_validation_for_valid_multiples(divisor, value):
    serializer = ParameterSerializer(many=True, data=(
        {
            'name': 'id',
            'in': PATH,
            'description':'id',
            'type': NUMBER,
            'required': True,
            'multipleOf': divisor,
        },
    ))
    assert serializer.is_valid(), serializer.errors
    parameters = serializer.object
    parameter_values = {
        'id': value,
    }

    validate_parameters(parameter_values, parameters, {}, inner=True)
Ejemplo n.º 40
0
def test_pattern_validation_with_matching_values(pattern, value):
    serializer = ParameterSerializer(many=True, data=(
        {
            'name': 'id',
            'in': PATH,
            'description':'id',
            'type': STRING,
            'required': True,
            'pattern': pattern,
        },
    ))
    assert serializer.is_valid(), serializer.errors
    parameters = serializer.object
    parameter_values = {
        'id': value,
    }

    validate_parameters(parameter_values, parameters, {}, inner=True)
Ejemplo n.º 41
0
def test_enum_validation_with_allowed_values(enum, value):
    serializer = ParameterSerializer(many=True, data=(
        {
            'name': 'id',
            'in': PATH,
            'description':'id',
            'type': [STRING, NUMBER, BOOLEAN],
            'required': True,
            'enum': enum,
        },
    ))
    assert serializer.is_valid(), serializer.errors
    parameters = serializer.object
    parameter_values = {
        'id': value,
    }

    validate_parameters(parameter_values, parameters, {}, inner=True)
Ejemplo n.º 42
0
def test_parameter_items_validation_on_valid_value():
    parameters = parameters_validator([
        {
            'name': 'id',
            'in': QUERY,
            'description': 'id',
            'items': {
                'type': INTEGER,
                'minimum': 0,
            },
            'type': ARRAY,
        },
    ])
    value = [1, 2, 3, 4, 5]
    parameter_values = {
        'id': value,
    }

    validate_parameters(parameter_values, parameters, context={})
Ejemplo n.º 43
0
def test_min_items_on_values_with_valid_array_length(min_items, value):
    parameters = parameters_validator([
        {
            'name': 'id',
            'in': PATH,
            'description': 'id',
            'type': ARRAY,
            'required': True,
            'minItems': min_items,
            'items': {
                'type': STRING
            },
        },
    ])
    parameter_values = {
        'id': value,
    }

    validate_parameters(parameter_values, parameters, {})
Ejemplo n.º 44
0
def test_unique_items_validation_with_no_duplicates(value):
    parameters = parameters_validator([
        {
            'name': 'id',
            'in': PATH,
            'description': 'id',
            'type': ARRAY,
            'required': True,
            'uniqueItems': True,
            'items': {
                'type': [STRING, NUMBER, BOOLEAN]
            },
        },
    ])
    parameter_values = {
        'id': value,
    }

    validate_parameters(parameter_values, parameters, {})
Ejemplo n.º 45
0
def test_local_parameter_values_override_schema(value):
    parameters = parameters_validator([
        {
            'name': 'id',
            'in': BODY,
            'description': 'id',
            'required': True,
            'type': INTEGER,
            'format': INT32,
            'schema': {
                'type': STRING,
                'format': 'uuid'
            },
        },
    ])
    parameter_values = {
        'id': value,
    }

    validate_parameters(parameter_values, parameters, context={})
Ejemplo n.º 46
0
def test_required_parameters_invalid_when_not_present():
    parameters = parameters_validator([
        {
            'name': 'id',
            'in': PATH,
            'description': 'id',
            'type': STRING,
            'required': True
        },
    ])
    parameter_values = {}

    with pytest.raises(ValidationError) as err:
        validate_parameters(parameter_values, parameters, {})

    assert_message_in_errors(
        MESSAGES['required']['required'],
        err.value.detail,
        'id.required',
    )
Ejemplo n.º 47
0
def test_parameter_validation_enforces_type(type_, value):
    parameters = parameters_validator([
        {
            'name': 'id',
            'in': PATH,
            'description': 'id',
            'type': type_,
            'required': True
        },
    ])
    parameter_values = {
        'id': value,
    }

    with pytest.raises(ValidationError) as err:
        validate_parameters(parameter_values, parameters, {})

    assert_message_in_errors(
        MESSAGES['type']['invalid'],
        err.value.detail,
        'id.type',
    )
Ejemplo n.º 48
0
def test_maximum_length_validation_with_too_long_values(max_length, value):
    parameters = parameters_validator([
        {
            'name': 'id',
            'in': PATH,
            'description':'id',
            'type': STRING,
            'required': True,
            'maxLength': max_length,
        },
    ])
    parameter_values = {
        'id': value,
    }

    with pytest.raises(ValidationError) as err:
        validate_parameters(parameter_values, parameters, {})

    assert_path_in_errors(
        'id.maxLength',
        err.value.detail,
    )
Ejemplo n.º 49
0
def test_parameter_schema_as_external_reference_validation_for_invalid_value(
        value, error_key, message_key):
    context = {
        'definitions': {
            'UUID': {
                'type': STRING,
                'format': 'uuid'
            }
        },
    }
    parameters = parameters_validator([
        {
            'name': 'id',
            'in': BODY,
            'description': 'id',
            'required': True,
            'schema': {
                '$ref': 'jsonschemas/uuid.json#/definitions/UUID'
            },
        },
    ],
                                      context=context,
                                      base_path=DIR)
    parameter_values = {
        'id': value,
    }

    with pytest.raises(ValidationError) as err:
        validate_parameters(parameter_values,
                            parameters,
                            context=context,
                            base_path=DIR)

    assert_message_in_errors(
        MESSAGES[error_key][message_key],
        err.value.messages,
        'id.{0}'.format(error_key),
    )
Ejemplo n.º 50
0
def test_parameter_format_validation_on_invalid_values(format_, value, error_key):
    parameters = parameters_validator([
        {
            'name': 'id',
            'in': PATH,
            'description': 'id',
            'type': STRING,
            'required': True,
            'format': format_,
        },
    ])
    parameter_values = {
        'id': value,
    }

    with pytest.raises(ValidationError) as err:
        validate_parameters(parameter_values, parameters, {})

    assert_message_in_errors(
        MESSAGES['format'][error_key],
        err.value.detail,
        'id.format',
    )
Ejemplo n.º 51
0
def test_minimum_validation_for_invalid_values(minimum, value):
    parameters = parameters_validator([
        {
            'name': 'id',
            'in': PATH,
            'description':'id',
            'type': NUMBER,
            'required': True,
            'minimum': minimum,
        },
    ])
    parameter_values = {
        'id': value,
    }

    with pytest.raises(ValidationError) as err:
        validate_parameters(parameter_values, parameters, {})

    assert_message_in_errors(
        MESSAGES['minimum']['invalid'],
        err.value.detail,
        'id.minimum',
    )
Ejemplo n.º 52
0
def test_pattern_validation_with_invalid_values(pattern, value):
    parameters = parameters_validator([
        {
            'name': 'id',
            'in': PATH,
            'description':'id',
            'type': STRING,
            'required': True,
            'pattern': pattern,
        },
    ])
    parameter_values = {
        'id': value,
    }

    with pytest.raises(ValidationError) as err:
        validate_parameters(parameter_values, parameters, {})

    assert_message_in_errors(
        MESSAGES['pattern']['invalid'],
        err.value.detail,
        'id.pattern',
    )