From a3c567631ded18a552624edf7981c65b51749605 Mon Sep 17 00:00:00 2001 From: Karel van Klink <karel.vanklink@geant.org> Date: Thu, 21 Mar 2024 16:00:42 +0100 Subject: [PATCH] Add unit test for cancellation workflow --- test/fixtures.py | 4 +++ test/workflows/shared/__init__.py | 0 test/workflows/shared/cancel_subscription.py | 30 ++++++++++++++++++++ 3 files changed, 34 insertions(+) create mode 100644 test/workflows/shared/__init__.py create mode 100644 test/workflows/shared/cancel_subscription.py diff --git a/test/fixtures.py b/test/fixtures.py index d1775d8e..f0c55c21 100644 --- a/test/fixtures.py +++ b/test/fixtures.py @@ -38,6 +38,7 @@ def site_subscription_factory(faker, geant_partner): site_internal_id=None, site_tier=SiteTier.TIER1, site_ts_address=None, + status: SubscriptionLifecycle | None = None, partner: dict | None = None, ) -> UUIDstr: if partner is None: @@ -70,6 +71,9 @@ def site_subscription_factory(faker, geant_partner): site_subscription = SubscriptionModel.from_other_lifecycle(site_subscription, SubscriptionLifecycle.ACTIVE) site_subscription.description = description site_subscription.start_date = start_date + if status: + site_subscription.status = status + site_subscription.save() db.session.commit() diff --git a/test/workflows/shared/__init__.py b/test/workflows/shared/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/test/workflows/shared/cancel_subscription.py b/test/workflows/shared/cancel_subscription.py new file mode 100644 index 00000000..9963b8f2 --- /dev/null +++ b/test/workflows/shared/cancel_subscription.py @@ -0,0 +1,30 @@ +import pytest +from orchestrator.domain.base import SubscriptionModel +from orchestrator.types import SubscriptionLifecycle + +from test.workflows import assert_complete, extract_state, run_workflow + + +@pytest.mark.parametrize( + "subscription_factory", + [ + "site_subscription_factory", + "juniper_router_subscription_factory", + "nokia_router_subscription_factory", + "iptrunk_subscription_factory", + ], +) +@pytest.mark.workflow() +def test_cancel_workflow_success(subscription_factory, geant_partner, request): + subscription_id = request.getfixturevalue(subscription_factory)( + status=SubscriptionLifecycle.INITIAL, + partner=geant_partner, + ) + initial_site_data = [{"subscription_id": subscription_id}, {}] + result, _, _ = run_workflow("cancel_subscription", initial_site_data) + assert_complete(result) + + state = extract_state(result) + subscription_id = state["subscription_id"] + subscription = SubscriptionModel.from_subscription(subscription_id) + assert subscription.status == "terminated" -- GitLab