From 2587e25637ba8cf7045cec95b8e969ef19c46841 Mon Sep 17 00:00:00 2001 From: Sergi Delgado Segura Date: Sat, 21 Mar 2020 22:01:49 +0100 Subject: [PATCH] Adds cli unit tests --- test/cli/unit/conftest.py | 11 +++++++++++ test/cli/unit/test_teos_cli.py | 30 ++++++++++++++++-------------- 2 files changed, 27 insertions(+), 14 deletions(-) diff --git a/test/cli/unit/conftest.py b/test/cli/unit/conftest.py index 3752ac0..2f3d81a 100644 --- a/test/cli/unit/conftest.py +++ b/test/cli/unit/conftest.py @@ -1,6 +1,10 @@ import pytest import random +from cli import DEFAULT_CONF + +from common.config_loader import ConfigLoader + @pytest.fixture(scope="session", autouse=True) def prng_seed(): @@ -11,3 +15,10 @@ def get_random_value_hex(nbytes): pseudo_random_value = random.getrandbits(8 * nbytes) prv_hex = "{:x}".format(pseudo_random_value) return prv_hex.zfill(2 * nbytes) + + +def get_config(): + config_loader = ConfigLoader(".", "teos_cli.conf", DEFAULT_CONF, {}) + config = config_loader.build_config() + + return config diff --git a/test/cli/unit/test_teos_cli.py b/test/cli/unit/test_teos_cli.py index 850a99f..2ddf354 100644 --- a/test/cli/unit/test_teos_cli.py +++ b/test/cli/unit/test_teos_cli.py @@ -12,10 +12,12 @@ from common.cryptographer import Cryptographer from common.blob import Blob import cli.teos_cli as teos_cli -from test.cli.unit.conftest import get_random_value_hex +from test.cli.unit.conftest import get_random_value_hex, get_config common.cryptographer.logger = Logger(actor="Cryptographer", log_name_prefix=teos_cli.LOG_PREFIX) +config = get_config() + # dummy keys for the tests dummy_sk = PrivateKey() dummy_pk = dummy_sk.public_key @@ -25,9 +27,7 @@ another_sk = PrivateKey() # Replace the key in the module with a key we control for the tests teos_cli.teos_public_key = dummy_pk # Replace endpoint with dummy one -teos_cli.teos_api_server = "https://dummy.com" -teos_cli.teos_api_port = 12345 -teos_endpoint = "{}:{}/".format(teos_cli.teos_api_server, teos_cli.teos_api_port) +teos_endpoint = "{}:{}/".format(config.get("TEOS_SERVER"), config.get("TEOS_PORT")) dummy_appointment_request = { "tx": get_random_value_hex(192), @@ -107,7 +107,7 @@ def test_add_appointment(monkeypatch): response = {"locator": dummy_appointment.locator, "signature": get_dummy_signature()} responses.add(responses.POST, teos_endpoint, json=response, status=200) - result = teos_cli.add_appointment([json.dumps(dummy_appointment_request)]) + result = teos_cli.add_appointment([json.dumps(dummy_appointment_request)], config) assert len(responses.calls) == 1 assert responses.calls[0].request.url == teos_endpoint @@ -128,7 +128,9 @@ def test_add_appointment_with_invalid_signature(monkeypatch): } responses.add(responses.POST, teos_endpoint, json=response, status=200) - result = teos_cli.add_appointment([json.dumps(dummy_appointment_request)]) + result = teos_cli.add_appointment([json.dumps(dummy_appointment_request)], config) + + shutil.rmtree(config.get("APPOINTMENTS_FOLDER_NAME")) assert result is False @@ -164,7 +166,7 @@ def test_post_appointment(): } responses.add(responses.POST, teos_endpoint, json=response, status=200) - response = teos_cli.post_appointment(json.dumps(dummy_appointment_request)) + response = teos_cli.post_appointment(json.dumps(dummy_appointment_request), config) assert len(responses.calls) == 1 assert responses.calls[0].request.url == teos_endpoint @@ -181,27 +183,27 @@ def test_process_post_appointment_response(): # A 200 OK with a correct json response should return the json of the response responses.add(responses.POST, teos_endpoint, json=response, status=200) - r = teos_cli.post_appointment(json.dumps(dummy_appointment_request)) + r = teos_cli.post_appointment(json.dumps(dummy_appointment_request), config) assert teos_cli.process_post_appointment_response(r) == r.json() # If we modify the response code tor a rejection (lets say 404) we should get None responses.replace(responses.POST, teos_endpoint, json=response, status=404) - r = teos_cli.post_appointment(json.dumps(dummy_appointment_request)) + r = teos_cli.post_appointment(json.dumps(dummy_appointment_request), config) assert teos_cli.process_post_appointment_response(r) is None # The same should happen if the response is not in json responses.replace(responses.POST, teos_endpoint, status=404) - r = teos_cli.post_appointment(json.dumps(dummy_appointment_request)) + r = teos_cli.post_appointment(json.dumps(dummy_appointment_request), config) assert teos_cli.process_post_appointment_response(r) is None def test_save_appointment_receipt(monkeypatch): appointments_folder = "test_appointments_receipts" - teos_cli.config["APPOINTMENTS_FOLDER_NAME"] = appointments_folder + config["APPOINTMENTS_FOLDER_NAME"] = appointments_folder # The functions creates a new directory if it does not exist assert not os.path.exists(appointments_folder) - teos_cli.save_appointment_receipt(dummy_appointment.to_dict(), get_dummy_signature()) + teos_cli.save_appointment_receipt(dummy_appointment.to_dict(), get_dummy_signature(), config) assert os.path.exists(appointments_folder) # Check that the receipt has been saved by checking the file names @@ -219,7 +221,7 @@ def test_get_appointment(): request_url = "{}get_appointment?locator={}".format(teos_endpoint, response.get("locator")) responses.add(responses.GET, request_url, json=response, status=200) - result = teos_cli.get_appointment(response.get("locator")) + result = teos_cli.get_appointment(response.get("locator"), config) assert len(responses.calls) == 1 assert responses.calls[0].request.url == request_url @@ -234,4 +236,4 @@ def test_get_appointment_err(): request_url = "{}get_appointment?locator=".format(teos_endpoint, locator) responses.add(responses.GET, request_url, body=ConnectionError()) - assert not teos_cli.get_appointment(locator) + assert not teos_cli.get_appointment(locator, config)