`)
+ for i := 1; i <= depth; i++ {
+ fmt.Fprintf(&sb, ``, i, i, i)
+ }
+ for i := depth; i >= 1; i-- {
+ fmt.Fprintf(&sb, `
`, i)
+ }
+ sb.WriteString(``)
+
+ err := validateSAMLResponseShape([]byte(sb.String()))
+ require.Error(t, err)
+ require.Contains(t, err.Error(), "maximum nesting depth")
+ })
+
+ t.Run("just under the depth limit passes", func(t *testing.T) {
+ var sb strings.Builder
+ // root is depth 1, so depth-1 additional nested children keep us at the cap.
+ sb.WriteString(`