Skip to content

Commit 3e8df8d

Browse files
committed
add UnderStackTrunkDriver tests
1 parent 26c34b4 commit 3e8df8d

File tree

1 file changed

+85
-0
lines changed

1 file changed

+85
-0
lines changed
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
from unittest.mock import MagicMock
2+
from unittest.mock import patch
3+
4+
import pytest
5+
6+
from neutron_understack.nautobot import Nautobot
7+
from neutron_understack.trunk import SubportSegmentationIDError
8+
from neutron_understack.trunk import UnderStackTrunkDriver
9+
10+
trunk_driver = UnderStackTrunkDriver.create("plugin_driver")
11+
12+
13+
@pytest.fixture
14+
def subport() -> MagicMock:
15+
return MagicMock(port_id="portUUID", segmentation_id=555)
16+
17+
18+
@pytest.fixture
19+
def trunk(subport) -> MagicMock:
20+
return MagicMock(sub_ports=[subport])
21+
22+
23+
@pytest.fixture
24+
def payload_metadata(subport) -> dict:
25+
return {"subports": [subport]}
26+
27+
28+
@pytest.fixture
29+
def payload(payload_metadata, trunk) -> MagicMock:
30+
return MagicMock(metadata=payload_metadata, states=[trunk])
31+
32+
33+
@pytest.fixture
34+
def nautobot_client() -> Nautobot:
35+
return MagicMock(spec_set=Nautobot)
36+
37+
38+
@patch("neutron_understack.utils.fetch_subport_network_id", return_value="112233")
39+
def test_subports_added_when_ucvni_tenan_vlan_id_is_not_set_yet(
40+
nautobot_client, payload
41+
):
42+
trunk_driver.nb = nautobot_client
43+
attrs = {"fetch_ucvni_tenant_vlan_id.return_value": None}
44+
nautobot_client.configure_mock(**attrs)
45+
trunk_driver.subports_added("", "", "", payload)
46+
47+
nautobot_client.add_tenant_vlan_tag_to_ucvni.assert_called_once_with(
48+
network_uuid="112233", vlan_tag=555
49+
)
50+
51+
52+
@patch("neutron_understack.utils.fetch_subport_network_id", return_value="223344")
53+
def test_subports_added_when_segmentation_id_is_different_to_tenant_vlan_id(
54+
nautobot_client, payload
55+
):
56+
trunk_driver.nb = nautobot_client
57+
attrs = {"fetch_ucvni_tenant_vlan_id.return_value": 123}
58+
nautobot_client.configure_mock(**attrs)
59+
with pytest.raises(SubportSegmentationIDError):
60+
trunk_driver.subports_added("", "", "", payload)
61+
62+
63+
@patch("neutron_understack.utils.fetch_subport_network_id", return_value="112233")
64+
def test_trunk_created_when_ucvni_tenan_vlan_id_is_not_set_yet(
65+
nautobot_client, payload
66+
):
67+
trunk_driver.nb = nautobot_client
68+
attrs = {"fetch_ucvni_tenant_vlan_id.return_value": None}
69+
nautobot_client.configure_mock(**attrs)
70+
trunk_driver.trunk_created("", "", "", payload)
71+
72+
nautobot_client.add_tenant_vlan_tag_to_ucvni.assert_called_once_with(
73+
network_uuid="112233", vlan_tag=555
74+
)
75+
76+
77+
@patch("neutron_understack.utils.fetch_subport_network_id", return_value="223344")
78+
def test_trunk_created_when_segmentation_id_is_different_to_tenant_vlan_id(
79+
nautobot_client, payload
80+
):
81+
trunk_driver.nb = nautobot_client
82+
attrs = {"fetch_ucvni_tenant_vlan_id.return_value": 123}
83+
nautobot_client.configure_mock(**attrs)
84+
with pytest.raises(SubportSegmentationIDError):
85+
trunk_driver.trunk_created("", "", "", payload)

0 commit comments

Comments
 (0)