diff --git a/test/workflows/iptrunk/test_create_iptrunk.py b/test/workflows/iptrunk/test_create_iptrunk.py index 10a87d1253033f7964bb7482db18e6498586d059..c2428cbff52bd3e2161b9902ffe73e5d83ecd4e4 100644 --- a/test/workflows/iptrunk/test_create_iptrunk.py +++ b/test/workflows/iptrunk/test_create_iptrunk.py @@ -5,6 +5,7 @@ import pytest from gso.products import Iptrunk, ProductType from gso.products.product_blocks.iptrunk import IptrunkType, PhyPortCapacity +from gso.products.product_blocks.router import RouterVendor from gso.services.crm import customer_selector, get_customer_by_name from gso.services.subscriptions import get_product_id_by_name from gso.utils.helpers import LAGMember @@ -42,9 +43,19 @@ def netbox_client_mock(): @pytest.fixture -def input_form_wizard_data(router_subscription_factory, faker): - router_side_a = router_subscription_factory() - router_side_b = router_subscription_factory() +def input_form_wizard_data(request, router_subscription_factory, faker): + vendor = getattr(request, 'param', RouterVendor.NOKIA) + router_side_a = router_subscription_factory(router_vendor=vendor) + router_side_b = router_subscription_factory(router_vendor=vendor) + interface_members = None + + if vendor == RouterVendor.JUNIPER: + interface_members = ["et-1/0/0", "xe-1/0/0"] + else: + interface_members = [ + LAGMember(interface_name=f"Interface{interface}", interface_description=faker.sentence()) + for interface in range(5) + ] create_ip_trunk_step = { "tt_number": faker.tt_number(), @@ -59,10 +70,7 @@ def input_form_wizard_data(router_subscription_factory, faker): create_ip_trunk_side_a_step = { "side_a_ae_iface": "LAG1", "side_a_ae_geant_a_sid": faker.geant_sid(), - "side_a_ae_members": [ - LAGMember(interface_name=f"Interface{interface}", interface_description=faker.sentence()) - for interface in range(5) - ], + "side_a_ae_members": interface_members, } create_ip_trunk_side_b_router_name = {"side_b_node_id": router_side_b} create_ip_trunk_side_b_step = { @@ -150,3 +158,33 @@ def test_iptrunk_creation_fails_when_lso_return_code_is_one( assert_pp_interaction_failure(result, process_stat, step_log) assert mock_check_ip_trunk.call_count == 0 + + +@pytest.mark.workflow +@pytest.mark.parametrize("input_form_wizard_data", [RouterVendor.JUNIPER], indirect=True) +@patch("gso.workflows.iptrunk.create_iptrunk.provisioning_proxy.check_ip_trunk") +@patch("gso.workflows.iptrunk.create_iptrunk.provisioning_proxy.provision_ip_trunk") +@patch("gso.workflows.iptrunk.create_iptrunk.infoblox.allocate_v6_network") +@patch("gso.workflows.iptrunk.create_iptrunk.infoblox.allocate_v4_network") +def test_successful_iptrunk_creation_with_juniper_interface_names( + mock_allocate_v4_network, + mock_allocate_v6_network, + mock_provision_ip_trunk, + mock_check_ip_trunk, + responses, + input_form_wizard_data, + faker, + data_config_filename: PathLike, + netbox_client_mock, + test_client, +): + mock_allocate_v4_network.return_value = faker.ipv4_network() + mock_allocate_v6_network.return_value = faker.ipv6_network() + product_id = get_product_id_by_name(ProductType.IP_TRUNK) + initial_site_data = [{"product": product_id}, *input_form_wizard_data] + result, process_stat, step_log = run_workflow("create_iptrunk", initial_site_data) + + for _ in range(6): + result, step_log = assert_pp_interaction_success(result, process_stat, step_log) + + assert_complete(result)