From a31533ad3a9270f99ca7a8217dab595195d1d69f Mon Sep 17 00:00:00 2001 From: Georg-Stahn Date: Mon, 27 Nov 2023 23:27:52 +0100 Subject: [PATCH] db pytest runs for post and get single did --- pkgs/clan-cli/clan_cli/webui/sql_app.db | Bin 118784 -> 118784 bytes pkgs/clan-cli/clan_cli/webui/sql_models.py | 2 +- pkgs/clan-cli/tests/test_db_api.py | 112 +++++++++++++++++++-- 3 files changed, 102 insertions(+), 12 deletions(-) diff --git a/pkgs/clan-cli/clan_cli/webui/sql_app.db b/pkgs/clan-cli/clan_cli/webui/sql_app.db index 409166ac11b4c0b538876b2a3bb3ccd93cdec442..6d1f62ff087420f261feba70882b3ede2aef8603 100644 GIT binary patch delta 377 zcmZozz}~QceS)-L6$1l|VlECQ1+u&PbwVpZNO$;Qsa6d^cyDu?Ri01oNNS2-k@3I!&wXIEs& zOUzB3ypcm?ayEy?=C>TmOiTsbllge`C%bUVPLASHVXEYsEW~Xz`5?FaWPNU~$+_He zOf{U78+eQ-+w#axzQCiyRL?QFm)m6WW*+s)FSu1E|KT~q6v#GNicg7=eX=c|9+MyI z=|ljV3#C%TAup%`^Ev zw;WSF*W_9rlgZn-ovQ9q5tHj6#7GUEOWlCU~e3(yt z@&rDq$t?WxOd-sZbNQ4RStd{9GuW)m|8N5vBY!0Wf8}ODfqee@Mixd6{ZL(Hb7|d_ z%oMBQ{4%SO)Z!8=LnC7oi&P^E(`18WU6WK316>nigGAj#6LWK2BeNvqBn!h-V}q15 z=ft9%eDz|5fTGO2lFYnxV;49xqokz3N?+g5$Xw4r&p^-6%EG|FpfoQ#FTXsmS_x!} zl9iAGgi*`Iz`(%Be}jSl#%4i*bNoi?%%Pmb*bmY7oPq!OWQ7&d_PN-ubQsmnGhJpXhWkwC&C1%X8c1^}fp)p`H` diff --git a/pkgs/clan-cli/clan_cli/webui/sql_models.py b/pkgs/clan-cli/clan_cli/webui/sql_models.py index 0add2ea..390a938 100644 --- a/pkgs/clan-cli/clan_cli/webui/sql_models.py +++ b/pkgs/clan-cli/clan_cli/webui/sql_models.py @@ -35,7 +35,7 @@ class Entity(Base): producers = relationship("Producer", back_populates="entity") consumers = relationship("Consumer", back_populates="entity") repository = relationship("Repository", back_populates="entity") - + #TODO maby refactor to repositories class ProducerAbstract(Base): __abstract__ = True diff --git a/pkgs/clan-cli/tests/test_db_api.py b/pkgs/clan-cli/tests/test_db_api.py index 8c47083..7c1b745 100644 --- a/pkgs/clan-cli/tests/test_db_api.py +++ b/pkgs/clan-cli/tests/test_db_api.py @@ -3,6 +3,43 @@ import json from api import TestClient +default_entity_did_url = "entity_did=did%3Asov%3Atest%3A1234" +default_entity_did = "did:sov:test:1234" + +def assert_extra_info(infos, request_body, response) -> None: + for info in infos: + assert info in response.keys() + #TODO maybe check the content of the extra info ... + response.pop(info) + assert response == request_body + + +def make_test_post_and_get(api, request_body, paramter, get_request=default_entity_did_url, apiversion="v1") -> None: + #test post + response = api.post(f"/api/{apiversion}/create_{paramter}", + data=json.dumps(request_body), + headers={"Content-Type": "application/json"}) + assert response.status_code == 200 + if paramter == "repository": + assert_extra_info(["time_created"], request_body, response.json()) + elif paramter == "consumer": + assert_extra_info(["id"], request_body, response.json()) + elif paramter == "entity": + assert_extra_info(["consumers", "producers", "repository"], request_body, response.json()) + else: + assert response.json() == request_body + #test get + response = api.get(f"api/{apiversion}/get_{paramter}?{get_request}&skip=0&limit=100") + assert response.status_code == 200 + if paramter == "repository": + assert_extra_info(["time_created"], request_body, response.json()[0]) + elif paramter == "consumer": + assert_extra_info(["id"], request_body, response.json()[0]) + elif paramter == "entity": + assert_extra_info(["consumers", "producers", "repository"], request_body, response.json()) + else: + assert response.json() == [request_body] + ######################### # # @@ -19,15 +56,68 @@ def test_producer(api: TestClient) -> None: "other": { "test": "test" }, - "entity_did": "did:sov:test:1234" + "entity_did": default_entity_did } - #test post - response = api.post(f"/api/v1/create_producer", - data=json.dumps(request_body), - headers={"Content-Type": "application/json"}) - assert response.status_code == 200 - assert response.json() == request_body - #test get - response = api.get(f"api/v1/get_producer?entity_did=did%3Asov%3Atest%3A1234&skip=0&limit=100") - assert response.status_code == 200 - assert response.json() == [request_body] + paramter = "producer" + #get_request = "entity_did=did%3Asov%3Atest%3A1234" + make_test_post_and_get(api, request_body, paramter) + + +######################### +# # +# Consumer # +# # +######################### +def test_consumer(api: TestClient) -> None: + request_body = { + "entity_did": default_entity_did, + "producer_uuid": "8e285c0c-4e40-430a-a477-26b3b81e30df", + "other": { + "test": "test" + } + } + paramter = "consumer" + #get_request = "entity_did=did%3Asov%3Atest%3A1234" + make_test_post_and_get(api, request_body, paramter) + + +######################### +# # +# REPOSITORY # +# # +######################### +def test_repository(api: TestClient) -> None: + request_body = { + "uuid": "8e285c0c-4e40-430a-a477-26b3b81e30df", + "service_name": "Carlo'\''s Printing", + "service_type": "3D Printing", + "endpoint_url": "http://127.0.0.1:8000", + "status": "unknown", + "other": { + "test": "test" + }, + "entity_did": default_entity_did + } + paramter = "repository" + #get_request = "entity_did=did%3Asov%3Atest%3A1234" + make_test_post_and_get(api, request_body, paramter) + + +######################### +# # +# Entity # +# # +######################### +def test_entity(api: TestClient) -> None: + request_body = { + "did": default_entity_did, + "name": "C1", + "ip": "127.0.0.1", + "attached": False, + "other": { + "test": "test" + } + } + paramter = "entity" + #get_request = "entity_did=did%3Asov%3Atest%3A1234" + make_test_post_and_get(api, request_body, paramter)