package agent import ( "testing" "code.fritzlab.net/fritzlab/flock/pkg/embed" ) func TestParseAnnotations_Defaults(t *testing.T) { a, err := ParseAnnotations(nil) if err != nil { t.Fatal(err) } if !a.WantV6 || a.WantV4 { t.Fatalf("defaults wrong: v6=%v v4=%v", a.WantV6, a.WantV4) } } func TestParseAnnotations_DualStack(t *testing.T) { a, err := ParseAnnotations(map[string]string{ annotationPrefix + "ipv4": "true", }) if err != nil { t.Fatal(err) } if !(a.WantV6 && a.WantV4) { t.Fatalf("expected dual stack, got v6=%v v4=%v", a.WantV6, a.WantV4) } } func TestParseAnnotations_NoFamily(t *testing.T) { if _, err := ParseAnnotations(map[string]string{ annotationPrefix + "ipv6": "false", }); err == nil { t.Fatalf("expected error: ipv6=false ipv4=false") } } func TestParseAnnotations_IPAlgo(t *testing.T) { a, err := ParseAnnotations(map[string]string{ annotationPrefix + "ip-algo": "namespace,pod,image", }) if err != nil { t.Fatal(err) } want := []embed.Field{embed.FieldNamespace, embed.FieldPod, embed.FieldImage} if len(a.IPAlgo) != len(want) { t.Fatalf("ip-algo len=%d, want %d", len(a.IPAlgo), len(want)) } for i := range want { if a.IPAlgo[i] != want[i] { t.Fatalf("ip-algo[%d]=%s, want %s", i, a.IPAlgo[i], want[i]) } } } func TestParseAnnotations_CIDR(t *testing.T) { a, err := ParseAnnotations(map[string]string{ annotationPrefix + "cidr6": "2602:817:3000:f001::/64, 2602:817:3000:f002::/64", }) if err != nil { t.Fatal(err) } if len(a.CIDR6) != 2 { t.Fatalf("cidr6 len=%d", len(a.CIDR6)) } } func TestParseCNIArgs(t *testing.T) { args := ParseCNIArgs("IgnoreUnknown=1;K8S_POD_NAMESPACE=mail;K8S_POD_NAME=stalwart-0;K8S_POD_INFRA_CONTAINER_ID=abc123") if args.PodNamespace != "mail" || args.PodName != "stalwart-0" || args.InfraID != "abc123" { t.Fatalf("ParseCNIArgs got %+v", args) } }