Esempio n. 1
0
def test_abstract_loader_url_fallbacks(get_record, super_get_r_j, g_p_t_f_e):
    with_super = {'SUPER': 'SUPER'}
    with_actual = {'ACTUAL': 'ACTUAL'}
    g_p_t_f_e = 'pt'
    super_get_r_j.return_value = with_super
    get_record.return_value = with_actual

    # Check against prod SERVER_NAME
    config = {'SERVER_NAME': 'http://inspirehep.net'}

    with patch.dict(current_app.config, config):
        expect_actual = JsonRef({'$ref': 'http://inspirehep.net/api/e/1'},
                                loader=AbstractRecordLoader())
        assert expect_actual == with_actual

        expect_actual = JsonRef({'$ref': '/api/e/1'},
                                loader=AbstractRecordLoader())
        assert expect_actual == with_actual

        expect_super = JsonRef({'$ref': 'http://otherhost.net/api/e/1'},
                               loader=AbstractRecordLoader())
        assert expect_super == with_super

    # Check against dev SERVER_NAME
    config = {'SERVER_NAME': 'localhost:5000'}

    with patch.dict(current_app.config, config):
        expect_actual = JsonRef({'$ref': 'http://localhost:5000/api/e/1'},
                                loader=AbstractRecordLoader())
        assert expect_actual == with_actual

        expect_actual = JsonRef({'$ref': '/api/e/1'},
                                loader=AbstractRecordLoader())
        assert expect_actual == with_actual

        expect_super = JsonRef({'$ref': 'http://inspirehep.net/api/e/1'},
                               loader=AbstractRecordLoader())
        assert expect_super == with_super

    # Check against prod https SERVER_NAME
    config = {'SERVER_NAME': 'https://inspirehep.net'}

    with patch.dict(current_app.config, config):
        expect_actual = JsonRef({'$ref': 'https://inspirehep.net/api/e/1'},
                                loader=AbstractRecordLoader())
        assert expect_actual == with_actual

        expect_actual = JsonRef({'$ref': '/api/e/1'},
                                loader=AbstractRecordLoader())
        assert expect_actual == with_actual

        # https should be backwards compatible with resources indexed with http://.
        expect_actual = JsonRef({'$ref': 'http://inspirehep.net/api/e/1'},
                                loader=AbstractRecordLoader())
        assert expect_actual == with_actual

        expect_super = JsonRef({'$ref': 'http://otherhost.net/api/e/1'},
                               loader=AbstractRecordLoader())
        assert expect_super == with_super
Esempio n. 2
0
def test_specific_loaders_return_none(get_db_rec, get_es_rec, current_app):
    current_app.config = {'SERVER_NAME': 'http://inspirehep.net'}
    get_es_rec.side_effect = RecordGetterError('err', None)
    get_db_rec.side_effect = RecordGetterError('err', None)

    expect_none = JsonRef({'$ref': 'http://inspirehep.net/api/rt/1'},
                          loader=DatabaseJsonLoader())
    assert expect_none == None
    expect_none = JsonRef({'$ref': 'http://inspirehep.net/api/rt/2'},
                          loader=ESJsonLoader())
    assert expect_none == None
    assert get_db_rec.call_count == 1
    assert get_es_rec.call_count == 1
Esempio n. 3
0
def test_abstract_loader_return_none(get_record, current_app):
    current_app.config = {'SERVER_NAME': 'http://inspirehep.net'}

    expect_none = JsonRef({'$ref': 'http://inspirehep.net'},
                          loader=AbstractRecordLoader())
    assert expect_none == None
    expect_none = JsonRef({'$ref': 'http://inspirehep.net/'},
                          loader=AbstractRecordLoader())
    assert expect_none == None
    expect_none = JsonRef({'$ref': 'http://inspirehep.net/bad'},
                          loader=AbstractRecordLoader())
    assert expect_none == None
    assert get_record.call_count == 0
def test_abstract_loader_return_none(get_record):
    config = {'SERVER_NAME': 'http://inspirehep.net'}

    with patch.dict(current_app.config, config):
        expect_none = JsonRef({'$ref': 'http://inspirehep.net'},
                              loader=AbstractRecordLoader())
        assert expect_none == None  # noqa: E711
        expect_none = JsonRef({'$ref': 'http://inspirehep.net/'},
                              loader=AbstractRecordLoader())
        assert expect_none == None  # noqa: E711
        expect_none = JsonRef({'$ref': 'http://inspirehep.net/bad'},
                              loader=AbstractRecordLoader())
        assert expect_none == None  # noqa: E711
        assert get_record.call_count == 0
def test_inserts_missing_type(response_spec, pet_model_spec):
    ref_obj = {'$ref': '#/definitions/Pet'}
    pet_proxy = JsonRef(ref_obj)
    pet_proxy.__subject__ = pet_model_spec
    response_spec['schema'] = pet_proxy
    fix_models_with_no_type_callback(response_spec, key='schema')
    assert pet_model_spec['type'] == 'object'
Esempio n. 6
0
def test_specific_loaders_return_none(get_db_rec, get_es_rec, g_p_t_f_e):
    g_p_t_f_e.return_value = 'pt'
    get_es_rec.side_effect = RecordGetterError('err', None)
    get_db_rec.side_effect = RecordGetterError('err', None)

    config = {'SERVER_NAME': 'http://inspirehep.net'}

    with patch.dict(current_app.config, config):
        expect_none = JsonRef({'$ref': 'http://inspirehep.net/api/e/1'},
                              loader=DatabaseJsonLoader())
        assert expect_none == None
        expect_none = JsonRef({'$ref': 'http://inspirehep.net/api/e/2'},
                              loader=ESJsonLoader())
        assert expect_none == None
        assert get_db_rec.call_count == 1
        assert get_es_rec.call_count == 1
Esempio n. 7
0
def load_spec(spec_uri, base_uri=None, password=None):
    if base_uri:
        spec_uri = urljoin(base_uri, spec_uri)
    loader = YamlLoader(password=password)
    spec = JsonRef({'$ref': spec_uri}, loader=loader)
    exp = TemplateExpander(spec_uri)
    spec = exp(spec)
    spec = JsonRef.replace_refs(spec, base_uri=spec_uri, loader=loader)
    return spec
Esempio n. 8
0
def test_abstract_loader_recid_parsing(get_record, current_app):
    current_app.config = {'SERVER_NAME': 'http://inspirehep.net'}
    with_actual = {'ACTUAL': 'ACTUAL'}
    get_record.return_value = with_actual

    expect_actual = JsonRef({'$ref': 'http://inspirehep.net/api/rt1/1'},
                            loader=AbstractRecordLoader())
    # Force evaluation of get_record by this assertion.
    assert expect_actual == with_actual
    get_record.assert_called_with('rt1', '1')

    expect_actual = JsonRef({'$ref': '/api/rt2/2'},
                            loader=AbstractRecordLoader())
    assert expect_actual == with_actual
    get_record.assert_called_with('rt2', '2')

    expect_actual = JsonRef({'$ref': '/rt3/3/'},
                            loader=AbstractRecordLoader())
    assert expect_actual == with_actual
    get_record.assert_called_with('rt3', '3')
Esempio n. 9
0
def test_abstract_loader_recid_parsing(get_record, g_p_t_f_e):
    with_actual = {'ACTUAL': 'ACTUAL'}
    g_p_t_f_e.side_effect = ['pt1', 'pt2', 'pt3']
    get_record.return_value = with_actual

    config = {'SERVER_NAME': 'http://inspirehep.net'}

    with patch.dict(current_app.config, config):
        expect_actual = JsonRef({'$ref': 'http://inspirehep.net/api/e1/1'},
                                loader=AbstractRecordLoader())
        # Force evaluation of get_record by this assertion.
        assert expect_actual == with_actual
        get_record.assert_called_with('pt1', '1')

        expect_actual = JsonRef({'$ref': '/api/e2/2'},
                                loader=AbstractRecordLoader())
        assert expect_actual == with_actual
        get_record.assert_called_with('pt2', '2')

        expect_actual = JsonRef({'$ref': '/e3/3/'},
                                loader=AbstractRecordLoader())
        assert expect_actual == with_actual
        get_record.assert_called_with('pt3', '3')
Esempio n. 10
0
 def test_non_ref_object_throws_error(self):
     with pytest.raises(ValueError):
         JsonRef({"ref": "aoeu"})
Esempio n. 11
0
def build_pet_proxy(pet_model_spec):
    ref_obj = {'$ref': '#/definitions/Pet'}
    pet_proxy = JsonRef(ref_obj)
    pet_proxy.__subject__ = pet_model_spec
    return pet_proxy
def build_pet_proxy(ref, pet_model_spec):
    ref_obj = {'$ref': ref}
    pet_proxy = JsonRef(ref_obj)
    pet_proxy.__subject__ = pet_model_spec
    return pet_proxy