package pipeline import ( "strings" "testing" ) func TestExtractCIDRs_JSONNested(t *testing.T) { body := `{"a":{"b":{"c":"192.0.2.0/24"}}}` pfx, err := ExtractCIDRs(body, "json", "a.b.c") if err != nil { t.Fatal(err) } if len(pfx) != 1 || pfx[0].String() != "192.0.2.0/24" { t.Fatalf("got %#v", pfx) } } func TestExtractCIDRs_JSONDepthLimit(t *testing.T) { var b strings.Builder b.WriteString(`{"x":`) for i := 0; i < maxJSONWalkDepth+4; i++ { b.WriteString(`{"k":`) } b.WriteString(`"192.0.2.1"`) for i := 0; i < maxJSONWalkDepth+4; i++ { b.WriteByte('}') } b.WriteByte('}') _, err := ExtractCIDRs(b.String(), "json", "") if err == nil { t.Fatal("expected depth error") } } func TestExtractCIDRs_JSONPathBreadth(t *testing.T) { var b strings.Builder b.WriteString(`{"items":{"x":[`) for i := 0; i < maxJSONPathBreadth+1; i++ { if i > 0 { b.WriteByte(',') } b.WriteString(`"192.0.2.0/24"`) } b.WriteString(`]}}`) _, err := ExtractCIDRs(b.String(), "json", "items.x[]") if err == nil { t.Fatal("expected breadth error") } }