master
go 68 lines 2.99 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 package l2topology
4
5 import (
6 "testing"
7
8 "github.com/stretchr/testify/require"
9 )
10
11 func TestCSVToTopologySet_NormalizesAndDeduplicates(t *testing.T) {
12 set := csvToTopologySet(" LLDP, cdp , , lldp, STP ")
13 require.Equal(t, map[string]struct{}{
14 "lldp": {},
15 "cdp": {},
16 "stp": {},
17 }, set)
18 }
19
20 func TestCanonicalAddrType_PrefersIPFamilyAndFallsBack(t *testing.T) {
21 require.Equal(t, "ipv4", canonicalAddrType("", "10.0.0.1"))
22 require.Equal(t, "ipv6", canonicalAddrType("ipv4", "2001:db8::1"))
23 require.Equal(t, "other", canonicalAddrType(" Other ", "not-an-ip"))
24 require.Equal(t, "", canonicalAddrType("", "not-an-ip"))
25 }
26
27 func TestCanonicalARPProtocol_DefaultsToARP(t *testing.T) {
28 require.Equal(t, "arp", canonicalARPProtocol(""))
29 require.Equal(t, "arp", canonicalARPProtocol(" ARP "))
30 require.Equal(t, "nd", canonicalARPProtocol(" ND "))
31 require.Equal(t, "arp", canonicalARPProtocol("bogus"))
32 }
33
34 func TestDeriveRemoteDeviceID_PreferenceOrder(t *testing.T) {
35 require.Equal(t, "switch-a", deriveRemoteDeviceID("Switch-A.", "00:11:22:33:44:55", "10.0.0.1", "fallback"))
36 require.Equal(t, "chassis-001122334455", deriveRemoteDeviceID("", "00:11:22:33:44:55", "10.0.0.1", "fallback"))
37 require.Equal(t, "ip-2001-db8--1", deriveRemoteDeviceID("", "", "2001:db8::1", "fallback"))
38 require.Equal(t, "fallback-host", deriveRemoteDeviceID("", "", "", "Fallback-Host."))
39 require.Equal(t, "discovered-unknown", deriveRemoteDeviceID("", "", "", ""))
40 }
41
42 func TestCanonicalToken_Strips0xPrefix(t *testing.T) {
43 require.Equal(t, "001122334455", canonicalToken("0x00:11:22:33:44:55"))
44 require.Equal(t, "001122334455", canonicalToken("00:11:22:33:44:55"))
45 require.Equal(t, deriveRemoteDeviceID("", "0x00:11:22:33:44:55", "", ""), deriveRemoteDeviceID("", "00:11:22:33:44:55", "", ""))
46 }
47
48 func TestNormalizeLLDPPortHelpers_NormalizeBySubtype(t *testing.T) {
49 require.Equal(t, "001122334455", normalizeLLDPPortIDForMatch("00:11:22:33:44:55", "macAddress"))
50 require.Equal(t, "10.0.0.1", normalizeLLDPPortIDForMatch("0a000001", "networkAddress"))
51 require.Equal(t, "Gi0/1", normalizeLLDPPortIDForMatch(" Gi0/1 ", "interfaceName"))
52 require.Equal(t, "mac", normalizeLLDPPortSubtypeForMatch("3"))
53 require.Equal(t, "network", normalizeLLDPPortSubtypeForMatch("networkAddress"))
54 require.Equal(t, "local", normalizeLLDPPortSubtypeForMatch(" local "))
55 }
56
57 func TestNormalizeLLDPChassisAndMACToken(t *testing.T) {
58 require.Equal(t, "10.0.0.1", normalizeLLDPChassisForMatch("0a000001"))
59 require.Equal(t, "001122334455", normalizeLLDPChassisForMatch("00:11:22:33:44:55"))
60 require.Equal(t, "switch-a", normalizeLLDPChassisForMatch("switch-a"))
61 require.Equal(t, "001122334455", canonicalLLDPMACToken("0x001122334455"))
62 require.Equal(t, "", canonicalLLDPMACToken("001122"))
63 }
64
65 func TestCanonicalBridgeAddr_RejectsAllZeroMAC(t *testing.T) {
66 require.Equal(t, "00:11:22:33:44:55", canonicalBridgeAddr("00:00:00:00:00:00", "00:11:22:33:44:55"))
67 require.Equal(t, "", canonicalBridgeAddr("00:00:00:00:00:00", "00:00:00:00:00:00"))
68 }