Add core modules (SSH args parser, cache, resolver, NetBox client) with tests
Release / release (push) Failing after 51s
Release / release (push) Failing after 51s
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
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")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user