Skip to content
Snippets Groups Projects
Verified Commit 87337cf9 authored by Karel van Klink's avatar Karel van Klink :smiley_cat:
Browse files

add unit test for router termination workflow

parent 0a08e5b4
No related branches found
No related tags found
No related merge requests found
This commit is part of merge request !83. Comments created here will be created in the context of that merge request.
......@@ -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())
......
......@@ -15,7 +15,7 @@ from test.workflows import (
extract_state,
resume_workflow,
run_workflow,
user_accept_and_assert_suspended
user_accept_and_assert_suspended,
)
......
......@@ -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
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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment