92 lines
2.5 KiB
Go
92 lines
2.5 KiB
Go
package resolver
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"git.zb-server.de/Sebi/ssh-netbox-wrapper/internal/netbox"
|
|
)
|
|
|
|
func TestPrimaryIPStrategy_Name(t *testing.T) {
|
|
s := &PrimaryIPStrategy{}
|
|
if s.Name() != "primary_ip" {
|
|
t.Errorf("Name: got %q, want %q", s.Name(), "primary_ip")
|
|
}
|
|
}
|
|
|
|
func TestPrimaryIPStrategy_IPv4(t *testing.T) {
|
|
s := &PrimaryIPStrategy{}
|
|
e := &netbox.HostEntry{PrimaryIP4: "10.0.0.1", PrimaryIP6: "::1"}
|
|
ip, err := s.Resolve(context.Background(), e, nil)
|
|
if err != nil {
|
|
t.Fatalf("unexpected error: %v", err)
|
|
}
|
|
if ip != "10.0.0.1" {
|
|
t.Errorf("got %q, want IPv4 %q", ip, "10.0.0.1")
|
|
}
|
|
}
|
|
|
|
func TestPrimaryIPStrategy_IPv6Fallback(t *testing.T) {
|
|
s := &PrimaryIPStrategy{}
|
|
e := &netbox.HostEntry{PrimaryIP6: "::1"}
|
|
ip, err := s.Resolve(context.Background(), e, nil)
|
|
if err != nil {
|
|
t.Fatalf("unexpected error: %v", err)
|
|
}
|
|
if ip != "::1" {
|
|
t.Errorf("got %q, want IPv6 %q", ip, "::1")
|
|
}
|
|
}
|
|
|
|
func TestPrimaryIPStrategy_NoIP(t *testing.T) {
|
|
s := &PrimaryIPStrategy{}
|
|
_, err := s.Resolve(context.Background(), &netbox.HostEntry{}, nil)
|
|
if err != ErrNoIP {
|
|
t.Errorf("got %v, want ErrNoIP", err)
|
|
}
|
|
}
|
|
|
|
func TestManagementSubnetStrategy_Name(t *testing.T) {
|
|
s, _ := NewManagementSubnetStrategy([]string{"10.0.0.0/8"})
|
|
if s.Name() != "management_subnet" {
|
|
t.Errorf("Name: got %q, want %q", s.Name(), "management_subnet")
|
|
}
|
|
}
|
|
|
|
func TestManagementSubnetStrategy_InvalidCIDR(t *testing.T) {
|
|
_, err := NewManagementSubnetStrategy([]string{"not-a-cidr"})
|
|
if err == nil {
|
|
t.Error("invalid CIDR should return an error")
|
|
}
|
|
}
|
|
|
|
func TestManagementSubnetStrategy_EmptyCIDRs(t *testing.T) {
|
|
s, _ := NewManagementSubnetStrategy([]string{})
|
|
_, err := s.Resolve(context.Background(), &netbox.HostEntry{}, nil)
|
|
if err != ErrNoIP {
|
|
t.Errorf("empty subnets should return ErrNoIP, got %v", err)
|
|
}
|
|
}
|
|
|
|
func TestManagementSubnetStrategy_MultipleCIDRs(t *testing.T) {
|
|
_, err := NewManagementSubnetStrategy([]string{"10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16"})
|
|
if err != nil {
|
|
t.Fatalf("valid CIDRs should not error: %v", err)
|
|
}
|
|
}
|
|
|
|
func TestInterfaceNameStrategy_Name(t *testing.T) {
|
|
s := &InterfaceNameStrategy{name: "mgmt0"}
|
|
if s.Name() != "interface_name" {
|
|
t.Errorf("Name: got %q, want %q", s.Name(), "interface_name")
|
|
}
|
|
}
|
|
|
|
func TestInterfaceNameStrategy_UnknownKind(t *testing.T) {
|
|
s := &InterfaceNameStrategy{name: "eth0"}
|
|
_, err := s.Resolve(context.Background(), &netbox.HostEntry{Kind: "unknown"}, nil)
|
|
if err == nil {
|
|
t.Error("unknown kind should return an error")
|
|
}
|
|
}
|