Files
Sebastian Unterschütz 8ef4bbec16
Release / release (push) Failing after 51s
Add core modules (SSH args parser, cache, resolver, NetBox client) with tests
2026-05-23 12:38:41 +02:00

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")
}
}