diff --git a/test/workflows/iptrunk/test_terminate_iptrunk.py b/test/workflows/iptrunk/test_terminate_iptrunk.py new file mode 100644 index 0000000000000000000000000000000000000000..2234f29f643d39268b483d742b8e3be4822f0dca --- /dev/null +++ b/test/workflows/iptrunk/test_terminate_iptrunk.py @@ -0,0 +1,65 @@ +from unittest.mock import patch + +import pytest + +from gso.products import Iptrunk +from test.workflows import ( + assert_complete, + assert_suspended, + extract_state, + resume_workflow, + run_workflow, + user_accept_and_assert_suspended, +) + + +@pytest.mark.workflow +@patch("gso.workflows.iptrunk.terminate_iptrunk.provisioning_proxy.provision_ip_trunk") +@patch("gso.workflows.iptrunk.terminate_iptrunk.provisioning_proxy.deprovision_ip_trunk") +@patch("gso.workflows.iptrunk.terminate_iptrunk.infoblox.delete_network") +def test_iptrunk_modify_isis_metric_success( + mock_infoblox_delete_network, + mock_deprovision_ip_trunk, + mock_provision_ip_trunk, + iptrunk_subscription_factory, + faker, +): + # Set up mock return values + product_id = iptrunk_subscription_factory() + + # Run workflow + initial_iptrunk_data = [ + {"subscription_id": product_id}, + {"tt_number": faker.tt_number(), "remove_configuration": True, "clean_up_ipam": True}, + ] + result, process_stat, step_log = run_workflow("terminate_iptrunk", initial_iptrunk_data) + assert_suspended(result) + + lso_return = { + "pp_run_results": { + "status": "ok", + "job_id": faker.uuid4(), + "output": "parsed_output", + "return_code": 0, + }, + "confirm": "ACCEPTED", + } + + for _ in range(2): + result, step_log = user_accept_and_assert_suspended(process_stat, step_log, lso_return) + result, step_log = user_accept_and_assert_suspended(process_stat, step_log, [{}, {}]) + + result, step_log = user_accept_and_assert_suspended(process_stat, step_log, lso_return) + result, step_log = resume_workflow(process_stat, step_log, [{}, {}]) + + assert_complete(result) + + state = extract_state(result) + subscription_id = state["subscription_id"] + subscription = Iptrunk.from_subscription(subscription_id) + + assert "terminated" == subscription.status + assert mock_provision_ip_trunk.call_count == 1 + assert mock_deprovision_ip_trunk.call_count == 2 + assert mock_infoblox_delete_network.call_count == 2 + assert subscription.iptrunk.iptrunk_isis_metric == 90000 diff --git a/tox.ini b/tox.ini index a33adf5b1613231dd2fd5539f870f190b61c3a59..f79b0ea3fca0500ac30d3c9cd9f21a04d453b645 100644 --- a/tox.ini +++ b/tox.ini @@ -29,8 +29,7 @@ commands = mypy . flake8 coverage erase - coverage run --source gso -m pytest {posargs} + coverage run --source gso --omit="gso/migrations/*" -m pytest {posargs} coverage xml coverage html - # coverage report --fail-under 80 - coverage report + coverage report --fail-under 80