Skip to content
Snippets Groups Projects
Commit d5ebacf3 authored by Mohammad Torkashvand's avatar Mohammad Torkashvand
Browse files

add test cases for helpers

parent e6d42843
Branches
Tags
1 merge request!106Add pytest test cases for available_interfaces_choices_including_current_members
Pipeline #84515 passed
......@@ -3,6 +3,7 @@ from uuid import UUID
import pydantic
import pynetbox
from pydantic_forms.types import UUIDstr
from pynetbox.models.dcim import Devices, DeviceTypes, Interfaces
from gso.products.product_types.router import Router
......@@ -180,7 +181,6 @@ class NetboxClient:
def delete_device(self, device_name: str) -> None:
"""Delete device by name."""
self.netbox.dcim.devices.get(name=device_name).delete()
return
def attach_interface_to_lag(
self, device_name: str, lag_name: str, iface_name: str, description: str | None = None
......@@ -288,7 +288,7 @@ class NetboxClient:
# Convert to bits per second
return numeric_part * 1000000
def get_available_interfaces(self, router_id: UUID, speed: str) -> Interfaces:
def get_available_interfaces(self, router_id: UUID | UUIDstr, speed: str) -> Interfaces:
"""Return all available interfaces of a device filtered by speed."""
router = Router.from_subscription(router_id).router.router_fqdn
......
......@@ -56,7 +56,7 @@ def available_interfaces_choices(router_id: UUID, speed: str) -> Choice | None:
def available_interfaces_choices_including_current_members(
router_id: UUID, speed: str, interfaces: list[IptrunkInterfaceBlock]
router_id: UUID | UUIDstr, speed: str, interfaces: list[IptrunkInterfaceBlock]
) -> Choice | None:
"""Return a list of available interfaces for a given router and speed including the current members.
......@@ -65,6 +65,7 @@ def available_interfaces_choices_including_current_members(
"""
if Router.from_subscription(router_id).router.router_vendor != RouterVendor.NOKIA:
return None
available_interfaces = list(NetboxClient().get_available_interfaces(router_id, speed))
available_interfaces.extend(
[
......
from unittest.mock import patch
import pytest
from gso.products.product_blocks.iptrunk import IptrunkInterfaceBlock
from gso.products.product_blocks.router import RouterVendor
from gso.utils.helpers import available_interfaces_choices_including_current_members
@pytest.fixture
def mock_router():
"""Fixture to mock the Router class."""
with patch("gso.utils.helpers.Router") as mock:
yield mock
@pytest.fixture
def mock_netbox_client():
"""Fixture to mock the NetboxClient class."""
with patch("gso.utils.helpers.NetboxClient") as mock:
yield mock
def test_non_nokia_router_returns_none(mock_router, faker):
mock_router.from_subscription.return_value.router.router_vendor = RouterVendor.JUNIPER
result = available_interfaces_choices_including_current_members(faker.uuid4(), "10G", [])
assert result is None
def test_nokia_router_with_no_interfaces_returns_empty_choice(mock_router, mock_netbox_client, faker):
mock_router.from_subscription.return_value.router.router_vendor = RouterVendor.NOKIA
mock_netbox_client().get_available_interfaces.return_value = iter([])
result = available_interfaces_choices_including_current_members(faker.uuid4(), "10G", [])
assert len(result) == 0
def test_nokia_router_with_interfaces_returns_choice(mock_router, mock_netbox_client, faker):
mock_router.from_subscription.return_value.router.router_vendor = RouterVendor.NOKIA
mock_netbox_client().get_available_interfaces.return_value = iter(
[
{"name": "interface1", "module": {"display": "module1"}, "description": "desc1"},
{"name": "interface2", "module": {"display": "module2"}, "description": "desc2"},
]
)
mock_netbox_client().get_interface_by_name_and_device.return_value = {
"name": "interface3",
"module": {"display": "module3"},
"description": "desc3",
}
interfaces = [
IptrunkInterfaceBlock(
interface_name="interface3",
interface_description="desc3",
owner_subscription_id=faker.uuid4(),
subscription_instance_id=faker.uuid4(),
)
]
result = available_interfaces_choices_including_current_members(faker.uuid4(), "10G", interfaces)
assert len(result) == 3
assert hasattr(result, "interface1")
assert hasattr(result, "interface2")
assert hasattr(result, "interface3")
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment