# ============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