anta/tests/units/input_models/test_interfaces.py
Daniel Baumann 8a6a3342fc
Merging upstream version 1.3.0.
Signed-off-by: Daniel Baumann <daniel@debian.org>
2025-03-17 07:33:51 +01:00

135 lines
4.7 KiB
Python

# Copyright (c) 2023-2025 Arista Networks, Inc.
# Use of this source code is governed by the Apache License 2.0
# that can be found in the LICENSE file.
"""Tests for anta.input_models.interfaces.py."""
# pylint: disable=C0302
from __future__ import annotations
from typing import TYPE_CHECKING
import pytest
from pydantic import ValidationError
from anta.input_models.interfaces import InterfaceState
from anta.tests.interfaces import VerifyInterfaceIPv4, VerifyInterfacesSpeed, VerifyInterfacesStatus, VerifyLACPInterfacesStatus
if TYPE_CHECKING:
from anta.custom_types import Interface, PortChannelInterface
class TestInterfaceState:
"""Test anta.input_models.interfaces.InterfaceState."""
# pylint: disable=too-few-public-methods
@pytest.mark.parametrize(
("name", "portchannel", "expected"),
[
pytest.param("Ethernet1", "Port-Channel42", "Interface: Ethernet1 Port-Channel: Port-Channel42", id="with port-channel"),
pytest.param("Ethernet1", None, "Interface: Ethernet1", id="no port-channel"),
],
)
def test_valid__str__(self, name: Interface, portchannel: PortChannelInterface | None, expected: str) -> None:
"""Test InterfaceState __str__."""
assert str(InterfaceState(name=name, portchannel=portchannel)) == expected
class TestVerifyInterfacesStatusInput:
"""Test anta.tests.interfaces.VerifyInterfacesStatus.Input."""
@pytest.mark.parametrize(
("interfaces"),
[
pytest.param([{"name": "Ethernet1", "status": "up"}], id="valid"),
],
)
def test_valid(self, interfaces: list[InterfaceState]) -> None:
"""Test VerifyInterfacesStatus.Input valid inputs."""
VerifyInterfacesStatus.Input(interfaces=interfaces)
@pytest.mark.parametrize(
("interfaces"),
[
pytest.param([{"name": "Ethernet1"}], id="invalid"),
],
)
def test_invalid(self, interfaces: list[InterfaceState]) -> None:
"""Test VerifyInterfacesStatus.Input invalid inputs."""
with pytest.raises(ValidationError):
VerifyInterfacesStatus.Input(interfaces=interfaces)
class TestVerifyLACPInterfacesStatusInput:
"""Test anta.tests.interfaces.VerifyLACPInterfacesStatus.Input."""
@pytest.mark.parametrize(
("interfaces"),
[
pytest.param([{"name": "Ethernet1", "portchannel": "Port-Channel100"}], id="valid"),
],
)
def test_valid(self, interfaces: list[InterfaceState]) -> None:
"""Test VerifyLACPInterfacesStatus.Input valid inputs."""
VerifyLACPInterfacesStatus.Input(interfaces=interfaces)
@pytest.mark.parametrize(
("interfaces"),
[
pytest.param([{"name": "Ethernet1"}], id="invalid"),
],
)
def test_invalid(self, interfaces: list[InterfaceState]) -> None:
"""Test VerifyLACPInterfacesStatus.Input invalid inputs."""
with pytest.raises(ValidationError):
VerifyLACPInterfacesStatus.Input(interfaces=interfaces)
class TestVerifyInterfaceIPv4Input:
"""Test anta.tests.interfaces.VerifyInterfaceIPv4.Input."""
@pytest.mark.parametrize(
("interfaces"),
[
pytest.param([{"name": "Ethernet1", "primary_ip": "172.30.11.1/31"}], id="valid"),
],
)
def test_valid(self, interfaces: list[InterfaceState]) -> None:
"""Test VerifyInterfaceIPv4.Input valid inputs."""
VerifyInterfaceIPv4.Input(interfaces=interfaces)
@pytest.mark.parametrize(
("interfaces"),
[
pytest.param([{"name": "Ethernet1"}], id="invalid-no-primary-ip"),
],
)
def test_invalid(self, interfaces: list[InterfaceState]) -> None:
"""Test VerifyInterfaceIPv4.Input invalid inputs."""
with pytest.raises(ValidationError):
VerifyInterfaceIPv4.Input(interfaces=interfaces)
class TestVerifyInterfacesSpeedInput:
"""Test anta.tests.interfaces.VerifyInterfacesSpeed.Input."""
@pytest.mark.parametrize(
("interfaces"),
[
pytest.param([{"name": "Ethernet1", "speed": 10}], id="valid-speed-is-given"),
],
)
def test_valid(self, interfaces: list[InterfaceState]) -> None:
"""Test VerifyInterfacesSpeed.Input valid inputs."""
VerifyInterfacesSpeed.Input(interfaces=interfaces)
@pytest.mark.parametrize(
("interfaces"),
[
pytest.param([{"name": "Ethernet1"}], id="invalid-speed-is-not-given"),
],
)
def test_invalid(self, interfaces: list[InterfaceState]) -> None:
"""Test VerifyInterfacesSpeed.Input invalid inputs."""
with pytest.raises(ValidationError):
VerifyInterfacesSpeed.Input(interfaces=interfaces)