def test_unsupported_content_type(schema_builder):
    """ParamBuilder should raise UnsupportedContentTypeError if content type is unknown."""
    builder = ExtractorBuilder(schema_builder)
    spec = {'content': {'application/unknown': {'schema': {'type': 'number'}}}}
    with pytest.raises(UnsupportedContentTypeError,
                       match='application/unknown'):
        builder.build_body_extractor(spec)
    spec['in'] = 'path'
    spec['name'] = 'id'
    with pytest.raises(UnsupportedContentTypeError,
                       match='application/unknown'):
        builder.build_param_extractor(spec)
def test_uses_json_decoder(schema_builder, json_spec):
    """ParameterBuilder should uses JSONDecoder for parameters with media application/json."""
    builder = ExtractorBuilder(schema_builder)
    extractor = builder.build_param_extractor(json_spec)
    assert isinstance(extractor.decoder, JSONDecoder)
    extractor = builder.build_body_extractor({'content': json_spec['content']})
    assert isinstance(extractor.decoder, JSONDecoder)
def test_body_extractor_reader(schema_builder, json_spec):
    """Extractorbuilder should build extractors equiped with correct reader."""
    builder = ExtractorBuilder(schema_builder)
    extractor = builder.build_body_extractor({'content': json_spec['content']})
    assert extractor.read_data == read_body