diff --git a/test/fixtures.py b/test/fixtures.py
index 1dcd2d790918be9bfed466ebc8edd17c19c4e692..3dfd2c11be754315c40f3c70fb4a8e79eca96dc1 100644
--- a/test/fixtures.py
+++ b/test/fixtures.py
@@ -86,7 +86,7 @@ def router_subscription_factory(site_subscription_factory, faker):
         router_is_ias_connected=True,
     ) -> UUIDstr:
         description = description or faker.text(max_nb_chars=30)
-        router_fqdn = router_fqdn or faker.domain_name()
+        router_fqdn = router_fqdn or faker.domain_name(levels=4)
         router_ts_port = router_ts_port or faker.random_int(min=1, max=49151)
         router_access_via_ts = router_access_via_ts or faker.boolean()
         router_lo_ipv4_address = router_lo_ipv4_address or ipaddress.IPv4Address(faker.ipv4())
diff --git a/test/workflows/iptrunk/test_create_iptrunk.py b/test/workflows/iptrunk/test_create_iptrunk.py
index dfded4f7f70b70d7098e41a867c87f351b0dcab9..b9a1930e31b823da7c4baec0b85027256e028175 100644
--- a/test/workflows/iptrunk/test_create_iptrunk.py
+++ b/test/workflows/iptrunk/test_create_iptrunk.py
@@ -15,7 +15,7 @@ from test.workflows import (
     extract_state,
     resume_workflow,
     run_workflow,
-    user_accept_and_assert_suspended
+    user_accept_and_assert_suspended,
 )
 
 
diff --git a/test/workflows/router/test_create_router.py b/test/workflows/router/test_create_router.py
index 2c7a8a477ee8ac2bf12ee20f111af6475b15ed7f..7a8f65c56cdd49076e0fbd799dc74935386eb77e 100644
--- a/test/workflows/router/test_create_router.py
+++ b/test/workflows/router/test_create_router.py
@@ -15,7 +15,7 @@ from test.workflows import (
     extract_state,
     resume_workflow,
     run_workflow,
-    user_accept_and_assert_suspended
+    user_accept_and_assert_suspended,
 )
 
 
@@ -70,10 +70,18 @@ def test_create_router_success(
     mock_allocate_host.return_value = str(mock_v4), str(mock_v6)
     mock_allocate_v4_network.return_value = mock_v4_net
     mock_allocate_v6_network.return_value = faker.ipv6_network()
+
+    #  Run workflow
+    initial_router_data = [{"product": product_id}, router_creation_input_form_data]
+    result, process_stat, step_log = run_workflow("create_router", initial_router_data)
+    assert_suspended(result)
+
+    state = extract_state(result)
+    subscription_id = state["subscription_id"]
     mock_find_host_by_fqdn.return_value = objects.HostRecord(
         connector=None,
         aliases=[mock_fqdn],
-        comment=product_id,
+        comment=subscription_id,
         ipv4addrs=[
             objects.IPv4(
                 ipv4addr=str(mock_v4),
@@ -87,17 +95,12 @@ def test_create_router_success(
     )
     mock_find_network_by_cidr.return_value = objects.NetworkV4(
         connector=None,
-        comment=faker.sentence(),
+        comment=subscription_id,
         network=str(mock_v4_net),
         network_view="default",
         cidr=str(mock_v4_net),
     )
 
-    #  Run workflow
-    initial_router_data = [{"product": product_id}, router_creation_input_form_data]
-    result, process_stat, step_log = run_workflow("create_router", initial_router_data)
-    assert_suspended(result)
-
     lso_return = {
         "pp_run_results": {
             "status": "ok",
@@ -116,7 +119,6 @@ def test_create_router_success(
     assert_complete(result)
 
     state = extract_state(result)
-    subscription_id = state["subscription_id"]
     subscription = Router.from_subscription(subscription_id)
 
     assert "active" == subscription.status
@@ -126,6 +128,8 @@ def test_create_router_success(
     assert mock_netbox_create_device.call_count == 1
     assert mock_find_host_by_fqdn.call_count == 1
     assert mock_find_network_by_cidr.call_count == 3
+    for error in ["ipam_warning", "ipam_si_warning", "ipam_ias_lt_ipv4_warning", "ipam_ias_lt_ipv6_warning"]:
+        assert error not in state
 
 
 @pytest.mark.workflow
@@ -146,7 +150,7 @@ def test_create_router_lso_failure(
     mock_hostname_available,
     mock_netbox_create_device,
     mock_provision_router,
-        router_creation_input_form_data,
+    router_creation_input_form_data,
     faker,
 ):
     #  Set up mock return values
@@ -222,5 +226,3 @@ def test_create_router_lso_failure(
     assert mock_netbox_create_device.call_count == 0
     assert mock_find_host_by_fqdn.call_count == 0
     assert mock_find_network_by_cidr.call_count == 0
-    for error in ["ipam_warning", "ipam_si_warning", "ipam_ias_lt_ipv4_warning", "ipam_ias_lt_ipv6_warning"]:
-        assert error not in state
diff --git a/test/workflows/router/test_terminate_router.py b/test/workflows/router/test_terminate_router.py
new file mode 100644
index 0000000000000000000000000000000000000000..f5e88ca7d89ff0b10b3414286ac0be302d370df6
--- /dev/null
+++ b/test/workflows/router/test_terminate_router.py
@@ -0,0 +1,41 @@
+from unittest.mock import patch
+
+import pytest
+
+from gso.products import Router
+from test.workflows import assert_complete, extract_state, run_workflow
+
+
+@pytest.fixture
+def router_termination_input_form_data(site_subscription_factory, faker):
+    return {"tt_number": faker.tt_number(), "remove_configuration": True, "clean_up_ipam": True}
+
+
+@pytest.mark.workflow
+@patch("gso.workflows.router.terminate_router.NetBoxClient.delete_device")
+@patch("gso.workflows.router.terminate_router.infoblox.delete_host_by_ip")
+@patch("gso.workflows.router.terminate_router.infoblox.delete_network")
+def test_terminate_router_success(
+    mock_delete_network,
+    mock_delete_host_by_ip,
+    mock_delete_device,
+    router_termination_input_form_data,
+    router_subscription_factory,
+    faker,
+):
+    #  Set up active subscription in database
+    product_id = router_subscription_factory()
+
+    #  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)
+    assert_complete(result)
+
+    state = extract_state(result)
+    subscription_id = state["subscription_id"]
+    subscription = Router.from_subscription(subscription_id)
+
+    assert "terminated" == subscription.status
+    assert mock_delete_network.call_count == 3
+    assert mock_delete_device.call_count == 1
+    assert mock_delete_host_by_ip.call_count == 1