package netbox_test import ( "context" "os" "testing" "git.georgsen.dk/hwlab/internal/netbox" ) func TestNewClientValidation(t *testing.T) { _, err := netbox.NewClient("", "token") if err == nil { t.Error("expected error for empty url") } _, err = netbox.NewClient("http://10.5.0.130:8000/api", "") if err == nil { t.Error("expected error for empty token") } c, err := netbox.NewClient("http://10.5.0.130:8000/api", "sometoken") if err != nil { t.Fatalf("unexpected error: %v", err) } if c == nil { t.Error("expected non-nil client") } } // integrationToken returns the real NetBox token from env, or skips the test // if only the placeholder is present (placeholder is never 40 hex chars). func integrationToken(t *testing.T) string { t.Helper() token := os.Getenv("HWLAB_NETBOX_TOKEN") if len(token) != 40 { t.Skip("HWLAB_NETBOX_TOKEN is not a real 40-char token — skipping integration test") } return token } func TestPingLive(t *testing.T) { token := integrationToken(t) c, err := netbox.NewClient("http://10.5.0.130:8000/api", token) if err != nil { t.Fatalf("NewClient: %v", err) } if err := c.Ping(context.Background()); err != nil { t.Fatalf("Ping: %v", err) } } func TestListDevicesLive(t *testing.T) { token := integrationToken(t) c, _ := netbox.NewClient("http://10.5.0.130:8000/api", token) devices, err := c.ListDevices(context.Background(), 5) if err != nil { t.Fatalf("ListDevices: %v", err) } t.Logf("found %d devices in NetBox", len(devices)) // Not asserting count — NetBox may be empty; just assert no error }