From cb233b2aa7901e85a388bcd1a4e58e964ab4dcc7 Mon Sep 17 00:00:00 2001 From: Frederico Sequeira <frederico.sequeira@ext.ec.europa.eu> Date: Tue, 8 Oct 2024 12:29:16 +0100 Subject: [PATCH 1/4] =?UTF-8?q?=E2=9C=A8=20Add=20Certificate=20Authorities?= =?UTF-8?q?=20and=20testing?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tests/e2e/test_ca_creation.py | 100 ++++++++++++++++++ .../tests/e2e/test_certificate_creation.py | 2 +- requirements.txt | 2 +- 3 files changed, 102 insertions(+), 2 deletions(-) create mode 100644 plugins/netbox-cert-plugin/tests/e2e/test_ca_creation.py diff --git a/plugins/netbox-cert-plugin/tests/e2e/test_ca_creation.py b/plugins/netbox-cert-plugin/tests/e2e/test_ca_creation.py new file mode 100644 index 0000000..8a34a2e --- /dev/null +++ b/plugins/netbox-cert-plugin/tests/e2e/test_ca_creation.py @@ -0,0 +1,100 @@ +"""Test case for Certificate creation""" + +import time +import unittest +import json +import os +import requests + + +HOST = os.getenv("HOST", default="localhost") +PORT = os.getenv("PORT", default="8000") +API_KEY = os.getenv("API_KEY", "only4testingpurpose") + + +class TestCertificateCreation(unittest.TestCase): + """Test case for Mapping creation class""" + + mapping_id = None + + def test_that_certificate_is_created(self) -> None: + """Test that certificate is created""" + + response = requests.post( + url=f"http://{HOST}:{PORT}/api/plugins/cert/CertificateAuthority/", + json={ + "ca_name": "letsencrypt_test" + }, + headers={"Authorization": f"Token {API_KEY}"}, + timeout=5, + ) + + self.assertEqual(response.status_code, 201) + + self.mapping_id = json.loads(response.content)["id"] + + def test_that_default_certificate_properties_is_set(self) -> None: + """Test that default certificate properties is set""" + + response = requests.post( + url=f"http://{HOST}:{PORT}/api/plugins/cert/CertificateAuthority/", + json={ + "ca_name": "letsencrypt_test", + "acme_url": "www.letsencrypt.com", + "key_vault_url":"www.key_vault_url.com" + }, + headers={"Authorization": f"Token {API_KEY}"}, + timeout=5, + ) + + self.assertEqual(response.status_code, 201) + + self.mapping_id = json.loads(response.content)["id"] + + content = json.loads(response.content) + self.assertEqual(content["ca_name"], "letsencrypt_test") + self.assertEqual(content["acme_url"], "www.letsencrypt.com") + self.assertEqual(content["key_vault_url"], "www.key_vault_url.com") + + def test_that_cn_is_unique(self) -> None: + """Test that CN is unique""" + + response = requests.post( + url=f"http://{HOST}:{PORT}/api/plugins/cert/CertificateAuthority/", + json={"ca_name": "letsencrypt_test"}, + headers={"Authorization": f"Token {API_KEY}"}, + timeout=5, + ) + + self.assertEqual(response.status_code, 201) + + self.mapping_id = json.loads(response.content)["id"] + + response = requests.post( + url=f"http://{HOST}:{PORT}/api/plugins/cert/CertificateAuthority/", + json={"ca_name": "letsencrypt_test"}, + headers={"Authorization": f"Token {API_KEY}"}, + timeout=5, + ) + + self.assertEqual(response.status_code, 400) + self.assertEqual( + response.content, + b'{"ca_name":["certificate authority with this CA Name already exists."]}', + ) + + def tearDown(self) -> None: + """Teardown function""" + + requests.delete( + url=f"http://{HOST}:{PORT}/api/plugins/cert/CertificateAuthority/", + json=[{"id": self.mapping_id}], + headers={"Authorization": f"Token {API_KEY}"}, + timeout=5, + ) + + time.sleep(2) + + +if __name__ == "__main__": + unittest.main() diff --git a/plugins/netbox-cert-plugin/tests/e2e/test_certificate_creation.py b/plugins/netbox-cert-plugin/tests/e2e/test_certificate_creation.py index 525b382..cbd8c21 100644 --- a/plugins/netbox-cert-plugin/tests/e2e/test_certificate_creation.py +++ b/plugins/netbox-cert-plugin/tests/e2e/test_certificate_creation.py @@ -8,7 +8,7 @@ import requests HOST = os.getenv("HOST", default="localhost") -PORT = os.getenv("PORT", default="8080") +PORT = os.getenv("PORT", default="8000") API_KEY = os.getenv("API_KEY", "only4testingpurpose") diff --git a/requirements.txt b/requirements.txt index 6e68ce3..a9ecfc8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,7 +3,7 @@ netbox-plugin-prometheus-sd netbox-docker-plugin == 1.* --extra-index-url https://code.europa.eu/api/v4/projects/713/packages/pypi/simple --extra-index-url https://code.europa.eu/api/v4/projects/662/packages/pypi/simple -netbox-cert-plugin == 0.2.* +netbox-cert-plugin == 0.3.* --extra-index-url https://code.europa.eu/api/v4/projects/623/packages/pypi/simple netbox-rps-plugin == 0.22.* supervisor == 4.2.5 -- GitLab From bd5c17b6674b8728ea8e39230c37a7ca8c5cafed Mon Sep 17 00:00:00 2001 From: Frederico Sequeira <frederico.sequeira@ext.ec.europa.eu> Date: Tue, 8 Oct 2024 12:46:58 +0100 Subject: [PATCH 2/4] =?UTF-8?q?=F0=9F=91=B7=20Check=20left=20behind=20cont?= =?UTF-8?q?ainer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 514483d..8ac6214 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -52,6 +52,7 @@ run-test-job: - chmod 600 $ANSIBLE_PRIVATE_KEY_FILE - python3 -m venv "$CI_PROJECT_DIR/plugins/venv" - source "$CI_PROJECT_DIR/plugins/venv/bin/activate" + - docker ps - pip install -r "$CI_PROJECT_DIR/plugins/netbox-rps-plugin/tests/requirements.e2e.txt" - pip install -r "$CI_PROJECT_DIR/plugins/netbox-cert-plugin/tests/requirements.e2e.txt" - pip install -r "$CI_PROJECT_DIR/tests/requirements.e2e.txt" -- GitLab From 93a801cd02d696e4e2c0c39c853b95f9fc5519d7 Mon Sep 17 00:00:00 2001 From: Frederico Sequeira <frederico.sequeira@ext.ec.europa.eu> Date: Tue, 8 Oct 2024 14:35:21 +0100 Subject: [PATCH 3/4] =?UTF-8?q?=F0=9F=94=87=20Remove=20previously=20added?= =?UTF-8?q?=20logs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitlab-ci.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8ac6214..514483d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -52,7 +52,6 @@ run-test-job: - chmod 600 $ANSIBLE_PRIVATE_KEY_FILE - python3 -m venv "$CI_PROJECT_DIR/plugins/venv" - source "$CI_PROJECT_DIR/plugins/venv/bin/activate" - - docker ps - pip install -r "$CI_PROJECT_DIR/plugins/netbox-rps-plugin/tests/requirements.e2e.txt" - pip install -r "$CI_PROJECT_DIR/plugins/netbox-cert-plugin/tests/requirements.e2e.txt" - pip install -r "$CI_PROJECT_DIR/tests/requirements.e2e.txt" -- GitLab From effbb7fc850252e56741a8e10c7b4198cc697513 Mon Sep 17 00:00:00 2001 From: Frederico Sequeira <frederico.sequeira@ext.ec.europa.eu> Date: Thu, 10 Oct 2024 15:28:44 +0100 Subject: [PATCH 4/4] =?UTF-8?q?=E2=9C=8F=EF=B8=8F=20Keep=20the=20original?= =?UTF-8?q?=20port=20numbers=20for=20testing?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugins/netbox-cert-plugin/tests/e2e/test_ca_creation.py | 2 +- .../netbox-cert-plugin/tests/e2e/test_certificate_creation.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/netbox-cert-plugin/tests/e2e/test_ca_creation.py b/plugins/netbox-cert-plugin/tests/e2e/test_ca_creation.py index 8a34a2e..35f95b8 100644 --- a/plugins/netbox-cert-plugin/tests/e2e/test_ca_creation.py +++ b/plugins/netbox-cert-plugin/tests/e2e/test_ca_creation.py @@ -8,7 +8,7 @@ import requests HOST = os.getenv("HOST", default="localhost") -PORT = os.getenv("PORT", default="8000") +PORT = os.getenv("PORT", default="8080") API_KEY = os.getenv("API_KEY", "only4testingpurpose") diff --git a/plugins/netbox-cert-plugin/tests/e2e/test_certificate_creation.py b/plugins/netbox-cert-plugin/tests/e2e/test_certificate_creation.py index cbd8c21..525b382 100644 --- a/plugins/netbox-cert-plugin/tests/e2e/test_certificate_creation.py +++ b/plugins/netbox-cert-plugin/tests/e2e/test_certificate_creation.py @@ -8,7 +8,7 @@ import requests HOST = os.getenv("HOST", default="localhost") -PORT = os.getenv("PORT", default="8000") +PORT = os.getenv("PORT", default="8080") API_KEY = os.getenv("API_KEY", "only4testingpurpose") -- GitLab