From d0617eaf450dd7da5c424574c448ae491a8fe8a6 Mon Sep 17 00:00:00 2001
From: Neda Moeini <neda.moeini@geant.org>
Date: Mon, 4 Nov 2024 14:58:25 +0100
Subject: [PATCH] Add unittest for create L2Circuit WF.

---
 .../l2_circuit/test_create_layer_2_circuit.py | 70 +++++++++++++++++++
 1 file changed, 70 insertions(+)
 create mode 100644 test/workflows/l2_circuit/test_create_layer_2_circuit.py

diff --git a/test/workflows/l2_circuit/test_create_layer_2_circuit.py b/test/workflows/l2_circuit/test_create_layer_2_circuit.py
new file mode 100644
index 00000000..cc1d33dc
--- /dev/null
+++ b/test/workflows/l2_circuit/test_create_layer_2_circuit.py
@@ -0,0 +1,70 @@
+import pytest
+from orchestrator.types import SubscriptionLifecycle
+
+from gso.products import ProductName
+from gso.products.product_blocks.layer_2_circuit import Layer2CircuitType
+from gso.products.product_types.layer_2_circuit import Layer2Circuit
+from gso.services.subscriptions import get_product_id_by_name
+from test.workflows import assert_complete, extract_state, run_workflow
+
+
+@pytest.fixture()
+def layer_2_circuit_input(faker, partner_factory, edge_port_subscription_factory, layer_2_circuit_service_type):
+    partner = partner_factory()
+    product_id = get_product_id_by_name(layer_2_circuit_service_type)
+    edge_port_a = edge_port_subscription_factory(partner=partner)
+    edge_port_b = edge_port_subscription_factory(partner=partner)
+    policer_enabled = faker.boolean()
+
+
+    return [
+        {"product": product_id},
+        {
+            "tt_number": faker.tt_number(),
+            "partner": partner["partner_id"],
+            "layer_2_circuit_type": Layer2CircuitType.TAGGED,
+            "policer_enabled": policer_enabled,
+        },
+        {
+            "vlan_range_lower_bound": faker.vlan_id(),
+            "vlan_range_upper_bound": faker.vlan_id(),
+            "policer_bandwidth": faker.bandwidth() if policer_enabled else None,
+            "geant_sid": faker.geant_sid(),
+            "layer_2_circuit_side_a": {"edge_port": edge_port_a, "vlan_id": faker.vlan_id()},
+            "layer_2_circuit_side_b": {"edge_port": edge_port_b, "vlan_id": faker.vlan_id()},
+        },
+    ]
+
+@pytest.mark.parametrize(
+    "layer_2_circuit_service_type", [ProductName.GEANT_PLUS, ProductName.EXPRESSROUTE]
+)
+@pytest.mark.workflow()
+def test_create_layer_2_circuit_success(
+    layer_2_circuit_service_type,
+    layer_2_circuit_input,
+    faker,
+    partner_factory,
+    data_config_filename,
+):
+
+    result, process_stat, step_log = run_workflow("create_layer_2_circuit", layer_2_circuit_input)
+    assert_complete(result)
+    state = extract_state(result)
+    subscription = Layer2Circuit.from_subscription(state["subscription_id"])
+    assert subscription.status == SubscriptionLifecycle.ACTIVE
+    assert subscription.layer_2_circuit.virtual_circuit_id is not None
+    assert len(subscription.layer_2_circuit.layer_2_circuit_sides) == 2
+    assert (
+        str(subscription.layer_2_circuit.layer_2_circuit_sides[0].sbp.edge_port.owner_subscription_id)
+        == layer_2_circuit_input[2]["layer_2_circuit_side_a"]["edge_port"]
+    )
+    assert subscription.layer_2_circuit.layer_2_circuit_sides[0].sbp.is_tagged is True
+    assert subscription.layer_2_circuit.layer_2_circuit_sides[0].sbp.geant_sid == layer_2_circuit_input[2]["geant_sid"]
+    assert (
+        str(subscription.layer_2_circuit.layer_2_circuit_sides[1].sbp.edge_port.owner_subscription_id)
+        == layer_2_circuit_input[2]["layer_2_circuit_side_b"]["edge_port"]
+    )
+    assert subscription.layer_2_circuit.layer_2_circuit_sides[1].sbp.is_tagged is True
+    assert subscription.layer_2_circuit.layer_2_circuit_sides[1].sbp.geant_sid == layer_2_circuit_input[2]["geant_sid"]
+    assert subscription.layer_2_circuit.layer_2_circuit_type == Layer2CircuitType.TAGGED
+    assert subscription.layer_2_circuit.policer_enabled == layer_2_circuit_input[1]["policer_enabled"]
-- 
GitLab