from metis.pkg import inventory, config

def test_config_build_labels_and_taints():
    inv = inventory.Inventory(
        classes=[
            inventory.NodeClass(
                Name="c1",
                Arch="arm64",
                OS="linux",
                Image="file:///tmp/base.img",
                DefaultLabels={"a": "1"},
                DefaultTaints=["t1"],
            )
        ],
        Nodes=[
            inventory.NodeSpec(
                Name="n1",
                Class="c1",
                Hostname="n1",
                IP="1.1.1.1",
                K3sRole="agent",
                Labels={"b": "2"},
                Taints=["t2"],
                LonghornDisks=[inventory.LonghornDisk(Mountpoint="/mnt/d1", UUID="uuid-1", FS="ext4")],
                SSHUser="ubuntu",
                SSHAuthorized=["key"],
            )
        ],
    )
    cfg, err = config.Build(inv, "n1")
    assert err is None
    assert cfg.Labels == {"a": "1", "b": "2"}
    assert cfg.Taints == ["t1", "t2"]
    assert cfg.Fstab[0].Mountpoint == "/mnt/d1"
    assert cfg.Fstab[0].UUID == "uuid-1"
    assert cfg.K3s.Role == "agent"
