"""Seed spine objects must not be deletable by probe traffic."""

import pytest

from app.vsphere.domain.inventory_ops import _SEED_PROTECTED_MOIDS, _is_seed_host_or_named_vm
from app.vsphere.inventory import ManagedObject


def test_seed_spine_includes_root_pool_and_named_vms() -> None:
    assert "resgroup-22" in _SEED_PROTECTED_MOIDS
    assert "domain-c21" in _SEED_PROTECTED_MOIDS
    assert "vm-101" in _SEED_PROTECTED_MOIDS
    assert "network-41" in _SEED_PROTECTED_MOIDS


@pytest.mark.parametrize("moid", ["host-11", "host-20", "host-30"])
def test_seed_hosts_are_protected(moid: str) -> None:
    obj = ManagedObject(moid=moid, type="HostSystem", name="esxi", parent_moid="domain-c21", props={})
    assert _is_seed_host_or_named_vm(moid, obj)


def test_probe_host_pattern_not_protected() -> None:
    obj = ManagedObject(
        moid="host-probe",
        type="HostSystem",
        name="probe",
        parent_moid="domain-c21",
        props={},
    )
    assert not _is_seed_host_or_named_vm("host-probe", obj)
