diff options
Diffstat (limited to 'app/app/tests')
-rw-r--r-- | app/app/tests/test_api.py | 103 | ||||
-rw-r--r-- | app/app/tests/test_client.py | 38 | ||||
-rw-r--r-- | app/app/tests/test_controller.py | 120 |
3 files changed, 141 insertions, 120 deletions
diff --git a/app/app/tests/test_api.py b/app/app/tests/test_api.py new file mode 100644 index 0000000..118a2a0 --- /dev/null +++ b/app/app/tests/test_api.py @@ -0,0 +1,103 @@ +# ============LICENSE_START======================================================= +# Copyright (c) 2017-2019 AT&T Intellectual Property. All rights reserved. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============LICENSE_END========================================================= +# +# ECOMP is a trademark and service mark of AT&T Intellectual Property. +import json +import pytest +import os +import tempfile +from config_binding_service import app + + +TEST_NAME = "test_service_component_name.unknown.unknown.unknown.dcae.onap.org" + + +# http://flask.pocoo.org/docs/1.0/testing/ +@pytest.fixture +def cbsclient(): + db_fd, app.app.config['DATABASE'] = tempfile.mkstemp() + app.app.config['TESTING'] = True + testclient = app.app.test_client() + + yield testclient + + os.close(db_fd) + os.unlink(app.app.config['DATABASE']) + + +def test_get(monkeypatch, cbsclient, monkeyed_requests_put): + monkeypatch.setattr('requests.put', monkeyed_requests_put) + + res = cbsclient.get('/service_component/scn_exists', + headers={"x-onap-requestid": 123456789}) + assert(json.loads(res.data) == {"foo3": "bar3"}) + assert(res.status_code == 200) + assert(res.headers["x-onap-requestid"] == "123456789") + + res = cbsclient.get('/service_component/scn_NOTexists', + headers={"x-onap-requestid": 123456789}) + assert(res.status_code == 404) + assert(res.headers["x-onap-requestid"] == "123456789") + + res = cbsclient.get('/service_component/asdfasdf', + headers={"x-onap-requestid": 123456789}) + assert(res.status_code == 500) + assert(res.headers["x-onap-requestid"] == "123456789") + + +def test_generic(monkeypatch, cbsclient, monkeyed_requests_get, monkeyed_requests_put): + monkeypatch.setattr('requests.put', monkeyed_requests_put) + monkeypatch.setattr('requests.get', monkeyed_requests_get) + + res = cbsclient.get('/dti/{0}'.format(TEST_NAME)) + assert json.loads(res.data) == {"my": "dti"} + assert res.json == {"my": "dti"} + assert res.status_code == 200 + assert "x-onap-requestid" in res.headers + + res = cbsclient.get('/nokeyforyou/{0}'.format(TEST_NAME)) + assert res.status_code == 404 + assert "x-onap-requestid" in res.headers + + res = cbsclient.get('/policies/{0}'.format(TEST_NAME)) + assert res.status_code == 400 + assert "x-onap-requestid" in res.headers + + +def test_resolve_all(monkeypatch, cbsclient, monkeyed_requests_put, monkeyed_get_connection_info_from_consul, expected_config): + monkeypatch.setattr('requests.put', monkeyed_requests_put) + monkeypatch.setattr('config_binding_service.client._get_connection_info_from_consul', monkeyed_get_connection_info_from_consul) + withstuff = {'config': {'my': 'amazing config'}, + 'dti': {'my': 'dti'}, + 'policies': {'items': [{'policyName': 'DCAE_alex.Config_MS_alex_microservice.132.xml', 'policyConfigMessage': 'Config Retrieved! ', 'responseAttributes': {}, 'policyConfigStatus': 'CONFIG_RETRIEVED', 'matchingConditions': {'ONAPName': 'DCAE', 'Name': 'DCAE', 'ConfigName': 'alex_config_name'}, 'config': {'policyScope': 'alex_policy_scope', 'configName': 'alex_config_name', 'description': 'test DCAE policy-handler', 'service': 'alex_service', 'policyName': 'alex_policy_name', 'riskLevel': '3', 'key1': 'value1', 'policy_hello': 'world!', 'content': {'foo': 'microservice3', 'foo_updated': '2018-01-30T13:25:33.222Z'}, 'riskType': '1712_ETE', 'guard': 'False', 'version': '0.0.1', 'location': 'Central', 'policy_updated_ts': '2018-02-19T15:09:55.217Z', 'updated_policy_id': 'DCAE_alex.Config_MS_alex_microservice', 'policy_updated_to_ver': '132', 'priority': '4', 'policy_updated_from_ver': '131', 'templateVersion': '2', 'uuid': '5e87d7c5-0daf-4b6b-ab92-5365cf5db1ef'}, 'property': None, 'type': 'JSON', 'policyVersion': '132'}, {'policyName': 'DCAE_alex.Config_db_client_policy_id_value.133.xml', 'policyConfigMessage': 'Config Retrieved! ', 'responseAttributes': {}, 'policyConfigStatus': 'CONFIG_RETRIEVED', 'matchingConditions': {'ONAPName': 'DCAE', 'Name': 'DCAE', 'ConfigName': 'alex_config_name'}, 'config': {'db_client_ts': '2017-11-21T12:12:13.696Z', 'db_client': 'ipsum', 'policy_hello': 'world!', 'policy_updated_from_ver': '132', 'updated_policy_id': 'DCAE_alex.Config_db_client_policy_id_value', 'policy_updated_ts': '2018-02-19T15:09:55.812Z', 'policy_updated_to_ver': '133'}, 'property': None, 'type': 'JSON', 'policyVersion': '133'}], 'event': {'action': 'gathered', 'timestamp': '2018-02-19 15:36:44.877380', 'update_id': 'bb73c20a-5ff8-450f-8223-da6720ade267', 'policies_count': 2}}} + + assert cbsclient.get('service_component_all/{0}'.format(TEST_NAME)).json == withstuff + + assert cbsclient.get('service_component_all/test_resolve_scn').json == {"config": expected_config} + + res = cbsclient.get('/service_component_all/{0}'.format(TEST_NAME)) + assert json.loads(res.data) == withstuff + assert res.json == withstuff + assert res.status_code == 200 + assert "x-onap-requestid" in res.headers + + res = cbsclient.get('/service_component_all/test_resolve_scn') + assert res.status_code == 200 + assert res.json == {"config": expected_config} + + res = cbsclient.get('/service_component_all/scn_NOTexists') + assert res.status_code == 404 + assert "x-onap-requestid" in res.headers diff --git a/app/app/tests/test_client.py b/app/app/tests/test_client.py index cd3287c..96c3467 100644 --- a/app/app/tests/test_client.py +++ b/app/app/tests/test_client.py @@ -1,4 +1,22 @@ +# ============LICENSE_START======================================================= +# Copyright (c) 2017-2019 AT&T Intellectual Property. All rights reserved. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============LICENSE_END========================================================= +# + from config_binding_service import client +import pytest # pytest doesnt support objects in conftest @@ -10,6 +28,15 @@ class FakeReq(object): self.remote_addr = "6.6.6.6" +# pytest doesnt support objects in conftest +class FakeConnexion(object): + def __init__(self, headers, path, host, remote_addr): + self.headers = headers + self.path = path + self.host = host + self.remote_addr = remote_addr + + def test_consul_get_all_as_transaction(monkeypatch, monkeyed_requests_put): """tests _consul_get_all_as_transaction""" monkeypatch.setattr('requests.put', monkeyed_requests_put) @@ -166,3 +193,14 @@ def test_both(monkeypatch, monkeyed_get_connection_info_from_consul, expected_co "doubledeep": {"sodeep": {"hello": "<<WHO?>>"}}} test_bind_1 = client.resolve_override(config, test_rels, test_dmaap) assert(test_bind_1 == expected_config) + + +def test_failures(monkeypatch, monkeyed_requests_put, monkeyed_requests_get): + monkeypatch.setattr('requests.put', monkeyed_requests_put) + monkeypatch.setattr('requests.get', monkeyed_requests_get) + monkeypatch.setattr('connexion.request', FakeConnexion({"x-onap-requestid": 123456789}, "/service_component", "mytestingmachine", "myremoteclient")) + assert(client.resolve("scn_exists", FakeReq(), "unit test xer") == {"foo3": "bar3"}) + with pytest.raises(client.CantGetConfig): + client.resolve("scn_NOTexists", FakeReq(), "unit test xer") + with pytest.raises(client.CantGetConfig): + client.get_key("nokeyforyou", "test_service_component_name.unknown.unknown.unknown.dcae.onap.org", FakeReq(), "unit test xer") diff --git a/app/app/tests/test_controller.py b/app/app/tests/test_controller.py deleted file mode 100644 index 0650a38..0000000 --- a/app/app/tests/test_controller.py +++ /dev/null @@ -1,120 +0,0 @@ -# ============LICENSE_START======================================================= -# Copyright (c) 2017-2018 AT&T Intellectual Property. All rights reserved. -# ================================================================================ -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ============LICENSE_END========================================================= -# -# ECOMP is a trademark and service mark of AT&T Intellectual Property. - -import json -import pytest -from config_binding_service import client, controller - - -# pytest doesnt support objects in conftest -class FakeConnexion(object): - def __init__(self, headers, path, host, remote_addr): - self.headers = headers - self.path = path - self.host = host - self.remote_addr = remote_addr - - -# pytest doesnt support objects in conftest -class FakeReq(object): - """used to fake the logging params""" - def __init__(self): - self.path = "/unittest in {0}".format(__name__) - self.host = "localhost" - self.remote_addr = "6.6.6.6" - - -def test_bind_config_for_scn(monkeypatch, monkeyed_requests_put): - monkeypatch.setattr('requests.put', monkeyed_requests_put) - monkeypatch.setattr('connexion.request', FakeConnexion({"x-onap-requestid": 123456789}, "/service_component", "mytestingmachine", "myremoteclient")) - - assert(client.resolve("scn_exists", FakeReq(), "unit test xer") == {"foo3": "bar3"}) - with pytest.raises(client.CantGetConfig): - client.resolve("scn_NOTexists", FakeReq(), "unit test xer") - - R = controller.bind_config_for_scn("scn_exists") - assert(json.loads(R.data) == {"foo3": "bar3"}) - assert(R.status_code == 200) - assert(R.headers["x-onap-requestid"] == "123456789") - - R = controller.bind_config_for_scn("scn_NOTexists") - assert(R.status_code == 404) - assert(R.headers["x-onap-requestid"] == "123456789") - - R = controller.bind_config_for_scn("asdfasdf") - assert(R.status_code == 500) - assert(R.headers["x-onap-requestid"] == "123456789") - - -def test_generic(monkeypatch, monkeyed_requests_get, monkeyed_requests_put): - monkeypatch.setattr('requests.put', monkeyed_requests_put) - monkeypatch.setattr('requests.get', monkeyed_requests_get) - assert client.get_key("dti", "test_service_component_name.unknown.unknown.unknown.dcae.onap.org", FakeReq(), "unit test xer") == json.loads('{"my": "dti"}') - with pytest.raises(client.CantGetConfig): - client.get_key("nokeyforyou", "test_service_component_name.unknown.unknown.unknown.dcae.onap.org", FakeReq(), "unit test xer") - - monkeypatch.setattr('connexion.request', FakeConnexion({}, "/get_key", "mytestingmachine", "myremoteclient")) - - R = controller.get_key( - "dti", "test_service_component_name.unknown.unknown.unknown.dcae.onap.org") - assert(json.loads(R.data) == {"my": "dti"}) - assert(R.status_code == 200) - assert "x-onap-requestid" in R.headers - - R = controller.get_key( - "nokeyforyou", "test_service_component_name.unknown.unknown.unknown.dcae.onap.org") - assert(R.status_code == 404) - assert "x-onap-requestid" in R.headers - - R = controller.get_key( - "policies", "test_service_component_name.unknown.unknown.unknown.dcae.onap.org") - assert(R.status_code == 400) - assert "x-onap-requestid" in R.headers - - -def test_resolve_all(monkeypatch, monkeyed_requests_put, monkeyed_get_connection_info_from_consul, expected_config): - monkeypatch.setattr('requests.put', monkeyed_requests_put) - allk = client.resolve_all("test_service_component_name.unknown.unknown.unknown.dcae.onap.org", FakeReq(), "unit test xer") - withstuff = {'config': {'my': 'amazing config'}, - 'dti': {'my': 'dti'}, - 'policies': {'items': [{'policyName': 'DCAE_alex.Config_MS_alex_microservice.132.xml', 'policyConfigMessage': 'Config Retrieved! ', 'responseAttributes': {}, 'policyConfigStatus': 'CONFIG_RETRIEVED', 'matchingConditions': {'ONAPName': 'DCAE', 'Name': 'DCAE', 'ConfigName': 'alex_config_name'}, 'config': {'policyScope': 'alex_policy_scope', 'configName': 'alex_config_name', 'description': 'test DCAE policy-handler', 'service': 'alex_service', 'policyName': 'alex_policy_name', 'riskLevel': '3', 'key1': 'value1', 'policy_hello': 'world!', 'content': {'foo': 'microservice3', 'foo_updated': '2018-01-30T13:25:33.222Z'}, 'riskType': '1712_ETE', 'guard': 'False', 'version': '0.0.1', 'location': 'Central', 'policy_updated_ts': '2018-02-19T15:09:55.217Z', 'updated_policy_id': 'DCAE_alex.Config_MS_alex_microservice', 'policy_updated_to_ver': '132', 'priority': '4', 'policy_updated_from_ver': '131', 'templateVersion': '2', 'uuid': '5e87d7c5-0daf-4b6b-ab92-5365cf5db1ef'}, 'property': None, 'type': 'JSON', 'policyVersion': '132'}, {'policyName': 'DCAE_alex.Config_db_client_policy_id_value.133.xml', 'policyConfigMessage': 'Config Retrieved! ', 'responseAttributes': {}, 'policyConfigStatus': 'CONFIG_RETRIEVED', 'matchingConditions': {'ONAPName': 'DCAE', 'Name': 'DCAE', 'ConfigName': 'alex_config_name'}, 'config': {'db_client_ts': '2017-11-21T12:12:13.696Z', 'db_client': 'ipsum', 'policy_hello': 'world!', 'policy_updated_from_ver': '132', 'updated_policy_id': 'DCAE_alex.Config_db_client_policy_id_value', 'policy_updated_ts': '2018-02-19T15:09:55.812Z', 'policy_updated_to_ver': '133'}, 'property': None, 'type': 'JSON', 'policyVersion': '133'}], 'event': {'action': 'gathered', 'timestamp': '2018-02-19 15:36:44.877380', 'update_id': 'bb73c20a-5ff8-450f-8223-da6720ade267', 'policies_count': 2}}} - assert allk == withstuff - - monkeypatch.setattr('config_binding_service.client._get_connection_info_from_consul', - monkeyed_get_connection_info_from_consul) - allk = client.resolve_all("test_resolve_scn", FakeReq(), "unit test xer") - assert allk == {"config": expected_config} - - monkeypatch.setattr('connexion.request', FakeConnexion({}, "/service_component_all", "mytestingmachine", "myremoteclient")) - - R = controller.bind_all( - "test_service_component_name.unknown.unknown.unknown.dcae.onap.org") - assert(json.loads(R.data) == withstuff) - assert(R.status_code == 200) - assert "x-onap-requestid" in R.headers - - R = controller.bind_all("test_resolve_scn") - assert(json.loads(R.data) == {"config": expected_config}) - assert(R.status_code == 200) - - R = controller.bind_all("scn_NOTexists") - assert(R.status_code == 404) - assert "x-onap-requestid" in R.headers - - R = controller.bind_all("asdfasdf") - assert(R.status_code == 500) |