Beispiel #1
0
def test_duplicate_model(mock_log, minimal_swagger_dict, pet_model_spec,
                         use_models):
    minimal_swagger_dict['definitions']['Pet'] = pet_model_spec
    swagger_spec = Spec(minimal_swagger_dict,
                        config={'use_models': use_models})

    duplicate_message = 'Duplicate "Pet" model found at path [\'definitions\', \'Pet\']. ' \
                        'Original "Pet" model at path [\'definitions\', \'Pet\']'

    raised_exception = None
    try:
        tag_models(
            minimal_swagger_dict['definitions'],
            'Pet',
            ['definitions', 'Pet'],
            visited_models={'Pet': ['definitions', 'Pet']},
            swagger_spec=swagger_spec,
        )
    except ValueError as e:
        raised_exception = e

    if use_models:
        assert str(raised_exception) == duplicate_message
        assert not mock_log.warning.called
    else:
        assert raised_exception is None
        mock_log.warning.assert_called_once_with(duplicate_message)
Beispiel #2
0
def test_path_too_short(minimal_swagger_dict, pet_model_spec):
    minimal_swagger_dict['definitions']['Pet'] = pet_model_spec
    swagger_spec = Spec(minimal_swagger_dict)
    tag_models(minimal_swagger_dict,
               'definitions', ['definitions'],
               visited_models={},
               swagger_spec=swagger_spec)
    assert MODEL_MARKER not in pet_model_spec
Beispiel #3
0
def test_tags_model(minimal_swagger_dict, pet_model_spec):
    minimal_swagger_dict['definitions']['Pet'] = pet_model_spec
    swagger_spec = Spec(minimal_swagger_dict)
    tag_models(minimal_swagger_dict['definitions'],
               'Pet', ['definitions', 'Pet'],
               visited_models={},
               swagger_spec=swagger_spec)
    assert pet_model_spec[MODEL_MARKER] == 'Pet'
Beispiel #4
0
def test_skip_already_tagged_models(minimal_swagger_dict, pet_model_spec):
    pet_model_spec[MODEL_MARKER] = 'SpecialPet'
    minimal_swagger_dict['definitions']['Pet'] = pet_model_spec
    swagger_spec = Spec(minimal_swagger_dict)
    tag_models(minimal_swagger_dict['definitions'],
               'Pet', ['definitions', 'Pet'],
               visited_models={},
               swagger_spec=swagger_spec)
    assert pet_model_spec[MODEL_MARKER] == 'SpecialPet'
Beispiel #5
0
def test_duplicate_model(minimal_swagger_dict, pet_model_spec):
    minimal_swagger_dict['definitions']['Pet'] = pet_model_spec
    swagger_spec = Spec(minimal_swagger_dict)
    with pytest.raises(ValueError) as excinfo:
        tag_models(minimal_swagger_dict['definitions'],
                   'Pet', ['definitions', 'Pet'],
                   visited_models={'Pet': ['definitions', 'Pet']},
                   swagger_spec=swagger_spec)
    assert 'Duplicate' in str(excinfo.value)
Beispiel #6
0
def test_type_missing(minimal_swagger_dict, pet_model_spec):
    del pet_model_spec['type']
    minimal_swagger_dict['definitions']['Pet'] = pet_model_spec
    swagger_spec = Spec(minimal_swagger_dict)
    tag_models(minimal_swagger_dict['definitions'],
               'Pet', ['definitions', 'Pet'],
               visited_models={},
               swagger_spec=swagger_spec)
    assert MODEL_MARKER not in pet_model_spec
Beispiel #7
0
def jsonref_petstore_dict():
    my_dir = os.path.abspath(os.path.dirname(__file__))
    fpath = os.path.join(my_dir, '../../test-data/2.0/petstore/swagger.json')
    with open(fpath) as f:
        petstore = json.loads(f.read())
        tag_models(petstore)
        fix_malformed_model_refs(petstore)
        unrefed_petstore = jsonref.JsonRef.replace_refs(petstore)
        validator20.validate_spec(unrefed_petstore)
        return unrefed_petstore
Beispiel #8
0
def test_path_too_short(minimal_swagger_dict, pet_model_spec):
    minimal_swagger_dict['definitions']['Pet'] = pet_model_spec
    swagger_spec = Spec(minimal_swagger_dict)
    tag_models(
        minimal_swagger_dict,
        'definitions',
        ['definitions'],
        visited_models={},
        swagger_spec=swagger_spec)
    assert MODEL_MARKER not in pet_model_spec
Beispiel #9
0
def test_tags_model(minimal_swagger_dict, pet_model_spec):
    minimal_swagger_dict['definitions']['Pet'] = pet_model_spec
    swagger_spec = Spec(minimal_swagger_dict)
    tag_models(
        minimal_swagger_dict['definitions'],
        'Pet',
        ['definitions', 'Pet'],
        visited_models={},
        swagger_spec=swagger_spec)
    assert pet_model_spec[MODEL_MARKER] == 'Pet'
Beispiel #10
0
def test_skip_already_tagged_models(minimal_swagger_dict, pet_model_spec):
    pet_model_spec[MODEL_MARKER] = 'SpecialPet'
    minimal_swagger_dict['definitions']['Pet'] = pet_model_spec
    swagger_spec = Spec(minimal_swagger_dict)
    tag_models(
        minimal_swagger_dict['definitions'],
        'Pet',
        ['definitions', 'Pet'],
        visited_models={},
        swagger_spec=swagger_spec)
    assert pet_model_spec[MODEL_MARKER] == 'SpecialPet'
Beispiel #11
0
def test_duplicate_model(minimal_swagger_dict, pet_model_spec):
    minimal_swagger_dict['definitions']['Pet'] = pet_model_spec
    swagger_spec = Spec(minimal_swagger_dict)
    with pytest.raises(ValueError) as excinfo:
        tag_models(
            minimal_swagger_dict['definitions'],
            'Pet',
            ['definitions', 'Pet'],
            visited_models={'Pet': ['definitions', 'Pet']},
            swagger_spec=swagger_spec)
    assert 'Duplicate' in str(excinfo.value)
Beispiel #12
0
def test_type_missing(minimal_swagger_dict, pet_model_spec):
    del pet_model_spec['type']
    minimal_swagger_dict['definitions']['Pet'] = pet_model_spec
    swagger_spec = Spec(minimal_swagger_dict)
    tag_models(
        minimal_swagger_dict['definitions'],
        'Pet',
        ['definitions', 'Pet'],
        visited_models={},
        swagger_spec=swagger_spec)
    assert MODEL_MARKER not in pet_model_spec
Beispiel #13
0
def test_model_not_object(minimal_swagger_dict):
    minimal_swagger_dict['definitions']['Pet'] = {
        'type': 'array',
        'items': {
            'type': 'string'
        },
    }
    swagger_spec = Spec(minimal_swagger_dict)
    tag_models(minimal_swagger_dict['definitions'],
               'Pet', ['definitions', 'Pet'],
               visited_models={},
               swagger_spec=swagger_spec)
    assert MODEL_MARKER not in minimal_swagger_dict['definitions']['Pet']
Beispiel #14
0
def test_model_not_object(minimal_swagger_dict):
    minimal_swagger_dict['definitions']['Pet'] = {
        'type': 'array',
        'items': {
            'type': 'string'
        },
    }
    swagger_spec = Spec(minimal_swagger_dict)
    tag_models(
        minimal_swagger_dict['definitions'],
        'Pet',
        ['definitions', 'Pet'],
        visited_models={},
        swagger_spec=swagger_spec)
    assert MODEL_MARKER not in minimal_swagger_dict['definitions']['Pet']
Beispiel #15
0
    def from_dict(cls, spec_dict, origin_url=None, http_client=None,
                  config=None):
        """
        Build a :class:`Spec` from Swagger API Specificiation

        :param spec_dict: swagger spec in json-like dict form.
        :param origin_url: the url used to retrieve the spec, if any
        :type  origin_url: str
        :param config: Configuration dict. See CONFIG_DEFAULTS.
        """
        tag_models(spec_dict)
        fix_malformed_model_refs(spec_dict)
        spec_dict = jsonref.JsonRef.replace_refs(spec_dict)
        replace_jsonref_proxies(spec_dict)
        spec = cls(spec_dict, origin_url, http_client, config)
        spec.build()
        return spec