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
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
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'
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
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
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')
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')
def test_non_ref_object_throws_error(self): with pytest.raises(ValueError): JsonRef({"ref": "aoeu"})
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