From ac9b297a8001ced16c676863cf165d6e1bf2a227 Mon Sep 17 00:00:00 2001
From: Karel van Klink <karel.vanklink@geant.org>
Date: Tue, 9 Jan 2024 14:49:31 +0100
Subject: [PATCH] parametrize unit test for router termination workflow

---
 .../workflows/router/test_terminate_router.py | 26 ++++++++++++++-----
 1 file changed, 19 insertions(+), 7 deletions(-)

diff --git a/test/workflows/router/test_terminate_router.py b/test/workflows/router/test_terminate_router.py
index 7fa28615..25307cc6 100644
--- a/test/workflows/router/test_terminate_router.py
+++ b/test/workflows/router/test_terminate_router.py
@@ -3,10 +3,19 @@ from unittest.mock import patch
 import pytest
 
 from gso.products import Router
-from test.workflows import assert_complete, extract_state, run_workflow, assert_pp_interaction_success
+from test.workflows import assert_complete, assert_pp_interaction_success, extract_state, run_workflow
 
 
 @pytest.mark.workflow()
+@pytest.mark.parametrize(
+    ("remove_configuration", "clean_up_ipam"),
+    [
+        (True, True),
+        (True, False),
+        (False, True),
+        (False, False),
+    ],
+)
 @patch("gso.services.provisioning_proxy._send_request")
 @patch("gso.workflows.router.terminate_router.NetboxClient.delete_device")
 @patch("gso.workflows.router.terminate_router.infoblox.delete_host_by_ip")
@@ -14,23 +23,26 @@ def test_terminate_router_full_success(
     mock_delete_host_by_ip,
     mock_delete_device,
     mock_execute_playbook,
+    remove_configuration,
+    clean_up_ipam,
     nokia_router_subscription_factory,
     faker,
     data_config_filename,
 ):
-    #  Set up active subscription in database
+    #  Prepare mock values and expected results
     product_id = nokia_router_subscription_factory()
     router_termination_input_form_data = {
         "tt_number": faker.tt_number(),
-        "remove_configuration": True,
-        "clean_up_ipam": True,
+        "remove_configuration": remove_configuration,
+        "clean_up_ipam": clean_up_ipam,
     }
+    pp_interaction_count = 2 if remove_configuration else 0
 
     #  Run workflow
     initial_router_data = [{"subscription_id": product_id}, router_termination_input_form_data]
     result, process_stat, step_log = run_workflow("terminate_router", initial_router_data)
 
-    for _ in range(2):
+    for _ in range(pp_interaction_count):
         result, step_log = assert_pp_interaction_success(result, process_stat, step_log)
 
     assert_complete(result)
@@ -41,5 +53,5 @@ def test_terminate_router_full_success(
 
     assert subscription.status == "terminated"
     assert mock_delete_device.call_count == 1
-    assert mock_delete_host_by_ip.call_count == 1
-    assert mock_execute_playbook.call_count == 2
+    assert mock_delete_host_by_ip.call_count == (1 if clean_up_ipam else 0)
+    assert mock_execute_playbook.call_count == pp_interaction_count
-- 
GitLab