diff --git a/test/workflows/iptrunk/test_migrate_iptrunk.py b/test/workflows/iptrunk/test_migrate_iptrunk.py index 958addefcdf302c15685c5764b94197b200f85a7..7cf8a3de7a2e45117f211fdb2097b43d006cd5eb 100644 --- a/test/workflows/iptrunk/test_migrate_iptrunk.py +++ b/test/workflows/iptrunk/test_migrate_iptrunk.py @@ -4,7 +4,8 @@ from unittest.mock import patch import pytest from gso.products import Iptrunk -from gso.utils.helpers import LAGMember +from gso.products.product_types.router import Router +from gso.products.product_blocks.router import RouterVendor from test import USER_CONFIRM_EMPTY_FORM from test.conftest import UseJuniperSide from test.workflows import ( @@ -16,7 +17,6 @@ from test.workflows import ( run_workflow, ) from test.workflows.iptrunk.test_create_iptrunk import MockedNetboxClient -from gso.products.product_blocks.router import RouterVendor @pytest.fixture() @@ -43,7 +43,7 @@ def migrate_form_input( product_id = iptrunk_subscription_factory() old_subscription = Iptrunk.from_subscription(product_id) new_router = juniper_router_subscription_factory() - replace_side = str(old_subscription.iptrunk.iptrunk_sides[1].iptrunk_side_node.subscription.subscription_id) + replace_side = str(old_subscription.iptrunk.iptrunk_sides[0].iptrunk_side_node.subscription.subscription_id) new_side_ae_members = faker.generate_juniper_members_list()[0:2] lag_name = "ae1" elif use_juniper == UseJuniperSide.SIDE_BOTH: @@ -82,6 +82,7 @@ def migrate_form_input( }, ] + @pytest.mark.parametrize( "migrate_form_input", [UseJuniperSide.NONE, UseJuniperSide.SIDE_A, UseJuniperSide.SIDE_B, UseJuniperSide.SIDE_BOTH], @@ -154,24 +155,27 @@ def test_migrate_iptrunk_success( new_lag_interface = migrate_form_input[3]["new_lag_interface"] replace_side = migrate_form_input[1]["replace_side"] - # Only Nokia interfaces will checked - vendor_side_a = subscription.iptrunk.iptrunk_sides[0].iptrunk_side_node.vendor - vendor_side_b = subscription.iptrunk.iptrunk_sides[1].iptrunk_side_node.vendor - + # Get vendor for the migrated node + vendor_new = Router.from_subscription(new_router).router.vendor + + # Only Nokia will be checked on netbox + num_nokia_lags = 1 if vendor_new == RouterVendor.NOKIA else 0 + num_nokia_reserved = 2 * (vendor_new == RouterVendor.NOKIA) + num_nokia_attached = 2 * (vendor_new == RouterVendor.NOKIA) + # Assert all Netbox calls have been made - # This test case is only for migrating Nokia to Nokia. - # For Juniper to Nokia and Nokia to Juniper, the workflow is different. - if (vendor_side_a == RouterVendor.NOKIA and vendor_side_b == RouterVendor.NOKIA): - assert mocked_create_interface.call_count == 1 # once for creating the LAG on the newly replaced side: - assert mocked_reserve_interface.call_count == 2 # Twice for the new interfaces - assert mocked_attach_interface_to_lag.call_count == 2 # Twice for the new interfaces - assert mocked_allocate_interface.call_count == 2 # Twice for the new interfaces - assert mocked_free_interface.call_count == 2 # Twice for the old interfaces - assert mocked_delete_interface.call_count == 1 # once for deleting the LAG on the old replaced side + # This test case is for migrating Nokia to Nokia, juniper to nokia and juniper to juniper. + # Therefore, the netbox counts need to set correctly + assert mocked_create_interface.call_count == num_nokia_lags # once for creating the LAG on the newly replaced side: + assert mocked_reserve_interface.call_count == num_nokia_reserved # Twice for the new interfaces + assert mocked_attach_interface_to_lag.call_count == num_nokia_attached # Twice for the new interfaces + assert mocked_allocate_interface.call_count == num_nokia_attached # Twice for the new interfaces + assert mocked_free_interface.call_count == num_nokia_attached # Twice for the old interfaces + assert mocked_delete_interface.call_count == num_nokia_lags # once for deleting the LAG on the old replaced side # Assert the new side is replaced assert str(subscription.iptrunk.iptrunk_sides[0].iptrunk_side_node.subscription.subscription_id) == new_router - assert subscription.iptrunk.iptrunk_sides[0].iptrunk_side_ae_iface == new_lag_interface + assert subscription.iptrunk.iptrunk_sides[0].iptrunk_side_ae_iface == new_lag_interface assert len(subscription.iptrunk.iptrunk_sides[0].iptrunk_side_ae_members) == 2 assert subscription.iptrunk.iptrunk_sides[0].iptrunk_side_ae_members[0].interface_name == "Interface0" assert subscription.iptrunk.iptrunk_sides[0].iptrunk_side_ae_members[1].interface_name == "Interface1"