From 6778c62c6f9bfb7f6dc0123f268eb3f4e960b847 Mon Sep 17 00:00:00 2001 From: Tommy Carpenter Date: Wed, 19 Jun 2019 14:54:53 +0000 Subject: Move to k8s service names, exceptions Issue-ID: DCAEGEN2-1537 Change-Id: Ibb7bd0233b5de9eb853f3516ba0907e148eae21d Signed-off-by: Tommy Carpenter --- onap-dcae-cbs-docker-client/tests/conftest.py | 83 ++++++++++++++++++++++++ onap-dcae-cbs-docker-client/tests/test_client.py | 71 ++++++++++---------- 2 files changed, 119 insertions(+), 35 deletions(-) create mode 100644 onap-dcae-cbs-docker-client/tests/conftest.py (limited to 'onap-dcae-cbs-docker-client/tests') diff --git a/onap-dcae-cbs-docker-client/tests/conftest.py b/onap-dcae-cbs-docker-client/tests/conftest.py new file mode 100644 index 0000000..05d2eb5 --- /dev/null +++ b/onap-dcae-cbs-docker-client/tests/conftest.py @@ -0,0 +1,83 @@ +# ================================================================================ +# Copyright (c) 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 pytest +from requests.exceptions import HTTPError, ConnectionError + + +class FakeResponse: + def __init__(self, status_code, thejson): + self.status_code = status_code + self.thejson = thejson + self.text = "" + + def raise_for_status(self): + if self.status_code > 299: + raise HTTPError + + def json(self): + return self.thejson + + +@pytest.fixture +def monkeyed_requests_get(): + """ + mock for the CBS get + """ + + def _monkeyed_requests_get(url): + if url == "http://config_binding_service:10000/service_component_all/mybestfrienddotcom": + return FakeResponse( + status_code=200, + thejson={ + "config": {"key_to_your_heart": 666}, + "dti": {"some amazing": "dti stuff"}, + "policies": {"event": {"foo": "bar"}, "items": [{"foo2": "bar2"}]}, + "otherkey": {"foo3": "bar3"}, + }, + ) + + elif url == "http://config_binding_service:10000/service_component/mybestfrienddotcom": + return FakeResponse(status_code=200, thejson={"key_to_your_heart": 666}) + else: + raise Exception("Unexpected URL {0}!".format(url)) + + return _monkeyed_requests_get + + +@pytest.fixture +def monkeyed_requests_get_404(): + def _monkeyed_requests_get_404(url): + """ + get that pretends that key doesnt exist + """ + if url in [ + "http://config_binding_service:10000/service_component_all/mybestfrienddotcom", + "http://config_binding_service:10000/service_component/mybestfrienddotcom", + ]: + return FakeResponse(status_code=404, thejson={}) + raise Exception("Unexpected URL {0}!".format(url)) + + return _monkeyed_requests_get_404 + + +@pytest.fixture +def monkeyed_requests_get_unreachable(): + def _monkeyed_requests_get_unreachable(_url): + raise ConnectionError() + + return _monkeyed_requests_get_unreachable diff --git a/onap-dcae-cbs-docker-client/tests/test_client.py b/onap-dcae-cbs-docker-client/tests/test_client.py index c87f573..b1589c2 100644 --- a/onap-dcae-cbs-docker-client/tests/test_client.py +++ b/onap-dcae-cbs-docker-client/tests/test_client.py @@ -13,50 +13,51 @@ # See the License for the specific language governing permissions and # limitations under the License. # ============LICENSE_END========================================================= - +import pytest from onap_dcae_cbs_docker_client.client import get_config, get_all +from onap_dcae_cbs_docker_client.exceptions import CantGetConfig, CBSUnreachable, ENVsMissing -class FakeResponse: - def __init__(self, status_code, thejson): - self.status_code = status_code - self.thejson = thejson +def test_config(monkeypatch, monkeyed_requests_get): + monkeypatch.setattr("requests.get", monkeyed_requests_get) + assert get_config() == {"key_to_your_heart": 666} - def raise_for_status(self): - pass - def json(self): - return self.thejson +def test_all(monkeypatch, monkeyed_requests_get): + monkeypatch.setattr("requests.get", monkeyed_requests_get) + assert get_all() == { + "config": {"key_to_your_heart": 666}, + "dti": {"some amazing": "dti stuff"}, + "policies": {"event": {"foo": "bar"}, "items": [{"foo2": "bar2"}]}, + "otherkey": {"foo3": "bar3"}, + } -def monkeyed_requests_get(url): - # mock all the get calls for existent and non-existent - if url == "http://consuldotcom:8500/v1/catalog/service/config_binding_service": - return FakeResponse(status_code=200, - thejson=[{"ServiceAddress": "666.666.666.666", - "ServicePort": 8888}]) - elif url == "http://666.666.666.666:8888/service_component_all/mybestfrienddotcom": - return FakeResponse(status_code=200, - thejson={"config": {"key_to_your_heart": 666}, - "dti": {"some amazing": "dti stuff"}, - "policies": {"event": {"foo": "bar"}, - "items": [{"foo2": "bar2"}]}, - "otherkey": {"foo3": "bar3"}}) +def test_bad_hostname(monkeypatch, monkeyed_requests_get_404): + monkeypatch.setattr("requests.get", monkeyed_requests_get_404) + with pytest.raises(CantGetConfig): + get_config() + with pytest.raises(CantGetConfig): + get_all() - elif url == "http://666.666.666.666:8888/service_component/mybestfrienddotcom": - return FakeResponse(status_code=200, - thejson={"key_to_your_heart": 666}) + try: + get_config() + except CantGetConfig as e: + assert e.code == 404 + assert e.text == "" -def test_config(monkeypatch): - monkeypatch.setattr('requests.get', monkeyed_requests_get) - assert(get_config() == {"key_to_your_heart": 666}) +def test_unreachable(monkeypatch, monkeyed_requests_get_unreachable): + monkeypatch.setattr("requests.get", monkeyed_requests_get_unreachable) + with pytest.raises(CBSUnreachable): + get_config() + with pytest.raises(CBSUnreachable): + get_all() -def test_all(monkeypatch): - monkeypatch.setattr('requests.get', monkeyed_requests_get) - assert(get_all() == {"config": {"key_to_your_heart": 666}, - "dti": {"some amazing": "dti stuff"}, - "policies": {"event": {"foo": "bar"}, - "items": [{"foo2": "bar2"}]}, - "otherkey": {"foo3": "bar3"}}) +def test_badenv(monkeypatch): + monkeypatch.delenv("CONFIG_BINDING_SERVICE") + with pytest.raises(ENVsMissing): + get_config() + with pytest.raises(ENVsMissing): + get_all() -- cgit 1.2.3-korg