From 4cfe65428892c6c59e6f3bb5702b11199e60f4ca Mon Sep 17 00:00:00 2001 From: Karel van Klink <karel.vanklink@geant.org> Date: Wed, 8 May 2024 20:11:03 +0200 Subject: [PATCH] Add unit tests for importing office routers and super pop switches --- test/fixtures.py | 6 ++++ .../iptrunk/test_create_imported_iptrunk.py | 2 +- test/workflows/office_router/__init__.py | 0 .../test_create_imported_office_router.py | 31 +++++++++++++++++++ .../test_import_office_router.py | 18 +++++++++++ .../site/test_create_imported_site.py | 2 +- test/workflows/super_pop_switch/__init__.py | 0 .../test_create_imported_super_pop_switch.py | 30 ++++++++++++++++++ .../test_import_super_pop_switch.py | 18 +++++++++++ 9 files changed, 105 insertions(+), 2 deletions(-) create mode 100644 test/workflows/office_router/__init__.py create mode 100644 test/workflows/office_router/test_create_imported_office_router.py create mode 100644 test/workflows/office_router/test_import_office_router.py create mode 100644 test/workflows/super_pop_switch/__init__.py create mode 100644 test/workflows/super_pop_switch/test_create_imported_super_pop_switch.py create mode 100644 test/workflows/super_pop_switch/test_import_super_pop_switch.py diff --git a/test/fixtures.py b/test/fixtures.py index 3ce5bc71..316a43c3 100644 --- a/test/fixtures.py +++ b/test/fixtures.py @@ -50,6 +50,7 @@ def site_subscription_factory(faker, geant_partner): site_ts_address=None, status: SubscriptionLifecycle | None = None, partner: dict | None = None, + *, is_imported: bool | None = True, ) -> UUIDstr: if partner is None: @@ -115,6 +116,7 @@ def nokia_router_subscription_factory(site_subscription_factory, faker, geant_pa router_site=None, status: SubscriptionLifecycle | None = None, partner: dict | None = None, + *, is_imported: bool | None = True, ) -> UUIDstr: if partner is None: @@ -180,6 +182,7 @@ def juniper_router_subscription_factory(site_subscription_factory, faker, geant_ router_site=None, status: SubscriptionLifecycle | None = None, partner: dict | None = None, + *, is_imported: bool | None = True, ) -> UUIDstr: if partner is None: @@ -283,6 +286,7 @@ def iptrunk_subscription_factory(iptrunk_side_subscription_factory, faker, geant iptrunk_sides=None, status: SubscriptionLifecycle | None = None, partner: dict | None = None, + *, is_imported: bool | None = True, ) -> UUIDstr: if partner is None: @@ -350,6 +354,7 @@ def office_router_subscription_factory(site_subscription_factory, faker, geant_p office_router_site=None, status: SubscriptionLifecycle | None = None, partner: dict | None = None, + *, is_imported: bool | None = True, ) -> UUIDstr: if partner is None: @@ -408,6 +413,7 @@ def super_pop_switch_subscription_factory(site_subscription_factory, faker, gean super_pop_switch_site=None, status: SubscriptionLifecycle | None = None, partner: dict | None = None, + *, is_imported: bool | None = True, ) -> UUIDstr: if partner is None: diff --git a/test/workflows/iptrunk/test_create_imported_iptrunk.py b/test/workflows/iptrunk/test_create_imported_iptrunk.py index 4623fe89..450ae8b6 100644 --- a/test/workflows/iptrunk/test_create_imported_iptrunk.py +++ b/test/workflows/iptrunk/test_create_imported_iptrunk.py @@ -1,7 +1,7 @@ import pytest from orchestrator.types import SubscriptionLifecycle -from products import ProductName +from gso.products import ProductName from gso.products.product_blocks.iptrunk import IptrunkType, PhysicalPortCapacity from gso.products.product_types.iptrunk import ImportedIptrunk from test.workflows import ( diff --git a/test/workflows/office_router/__init__.py b/test/workflows/office_router/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/test/workflows/office_router/test_create_imported_office_router.py b/test/workflows/office_router/test_create_imported_office_router.py new file mode 100644 index 00000000..6e711ba8 --- /dev/null +++ b/test/workflows/office_router/test_create_imported_office_router.py @@ -0,0 +1,31 @@ +import pytest +from orchestrator.types import SubscriptionLifecycle + +from gso.products import ProductName +from gso.products.product_types.office_router import ImportedOfficeRouter +from gso.products.product_types.site import Site +from test.workflows import ( + assert_complete, + extract_state, + run_workflow, +) + + +@pytest.mark.workflow() +def test_create_imported_office_router_success(faker, site_subscription_factory): + input_data = { + "partner": "GEANT", + "office_router_site": Site.from_subscription(site_subscription_factory()).site.site_name, + "office_router_fqdn": faker.domain_name(levels=4), + "office_router_ts_port": faker.port_number(is_user=True), + "office_router_lo_ipv4_address": faker.ipv4(), + "office_router_lo_ipv6_address": faker.ipv6(), + } + + result, _, _ = run_workflow("create_imported_office_router", [input_data]) + state = extract_state(result) + imported_office_router = ImportedOfficeRouter.from_subscription(state["subscription_id"]) + + assert_complete(result) + assert imported_office_router.product.name == ProductName.IMPORTED_OFFICE_ROUTER + assert imported_office_router.status == SubscriptionLifecycle.ACTIVE diff --git a/test/workflows/office_router/test_import_office_router.py b/test/workflows/office_router/test_import_office_router.py new file mode 100644 index 00000000..c9894e98 --- /dev/null +++ b/test/workflows/office_router/test_import_office_router.py @@ -0,0 +1,18 @@ +import pytest +from orchestrator.types import SubscriptionLifecycle + +from gso.products import ProductName +from gso.products.product_types.office_router import OfficeRouter +from test.workflows import assert_complete, run_workflow + + +@pytest.mark.workflow() +def test_import_office_router_success(office_router_subscription_factory): + imported_office_router = office_router_subscription_factory(is_imported=False) + result, _, _ = run_workflow("import_office_router", [{"subscription_id": imported_office_router}]) + subscription = OfficeRouter.from_subscription(imported_office_router) + + assert_complete(result) + assert subscription.product.name == ProductName.OFFICE_ROUTER + assert subscription.status == SubscriptionLifecycle.ACTIVE + assert subscription.insync diff --git a/test/workflows/site/test_create_imported_site.py b/test/workflows/site/test_create_imported_site.py index 1fcdc6f5..62c1a594 100644 --- a/test/workflows/site/test_create_imported_site.py +++ b/test/workflows/site/test_create_imported_site.py @@ -1,7 +1,7 @@ import pytest from orchestrator.types import SubscriptionLifecycle -from products.product_blocks.site import SiteTier +from gso.products.product_blocks.site import SiteTier from gso.products.product_types.site import ImportedSite from test.workflows import assert_complete, extract_state, run_workflow diff --git a/test/workflows/super_pop_switch/__init__.py b/test/workflows/super_pop_switch/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/test/workflows/super_pop_switch/test_create_imported_super_pop_switch.py b/test/workflows/super_pop_switch/test_create_imported_super_pop_switch.py new file mode 100644 index 00000000..c1e283a6 --- /dev/null +++ b/test/workflows/super_pop_switch/test_create_imported_super_pop_switch.py @@ -0,0 +1,30 @@ +import pytest +from orchestrator.types import SubscriptionLifecycle + +from gso.products import ProductName +from gso.products.product_types.site import Site +from gso.products.product_types.super_pop_switch import ImportedSuperPopSwitch +from test.workflows import ( + assert_complete, + extract_state, + run_workflow, +) + + +@pytest.mark.workflow() +def test_create_imported_office_router_success(faker, site_subscription_factory): + input_data = { + "partner": "GEANT", + "hostname": faker.domain_word(), + "super_pop_switch_site": Site.from_subscription(site_subscription_factory()).site.site_name, + "super_pop_switch_ts_port": faker.port_number(is_user=True), + "super_pop_switch_mgmt_ipv4_address": faker.ipv4(), + } + + result, _, _ = run_workflow("create_imported_super_pop_switch", [input_data]) + state = extract_state(result) + imported_super_pop_switch = ImportedSuperPopSwitch.from_subscription(state["subscription_id"]) + + assert_complete(result) + assert imported_super_pop_switch.product.name == ProductName.IMPORTED_SUPER_POP_SWITCH + assert imported_super_pop_switch.status == SubscriptionLifecycle.ACTIVE diff --git a/test/workflows/super_pop_switch/test_import_super_pop_switch.py b/test/workflows/super_pop_switch/test_import_super_pop_switch.py new file mode 100644 index 00000000..4d20774c --- /dev/null +++ b/test/workflows/super_pop_switch/test_import_super_pop_switch.py @@ -0,0 +1,18 @@ +import pytest +from orchestrator.types import SubscriptionLifecycle + +from gso.products import ProductName +from gso.products.product_types.super_pop_switch import SuperPopSwitch +from test.workflows import assert_complete, run_workflow + + +@pytest.mark.workflow() +def test_import_super_pop_switch_success(super_pop_switch_subscription_factory): + imported_super_pop_switch = super_pop_switch_subscription_factory(is_imported=False) + result, _, _ = run_workflow("import_super_pop_switch", [{"subscription_id": imported_super_pop_switch}]) + subscription = SuperPopSwitch.from_subscription(imported_super_pop_switch) + + assert_complete(result) + assert subscription.product.name == ProductName.SUPER_POP_SWITCH + assert subscription.status == SubscriptionLifecycle.ACTIVE + assert subscription.insync -- GitLab