Verifies: SYS-REQ-050 [malformed] Delete with array-element path on truncated array input shall return original input unchanged and shall not panic.
(t *testing.T)
| 259 | // Delete with array-element path on truncated array input shall return |
| 260 | // original input unchanged and shall not panic. |
| 261 | func TestDeleteTruncatedArrayInput(t *testing.T) { |
| 262 | cases := []struct { |
| 263 | name string |
| 264 | data string |
| 265 | keys []string |
| 266 | }{ |
| 267 | {name: "truncated array", data: `{"a":[1,2`, keys: []string{"a", "[1]"}}, |
| 268 | {name: "unclosed inner array", data: `[1,2`, keys: []string{"[0]"}}, |
| 269 | {name: "single element no close", data: `[1`, keys: []string{"[0]"}}, |
| 270 | } |
| 271 | for _, tc := range cases { |
| 272 | t.Run(tc.name, func(t *testing.T) { |
| 273 | func() { |
| 274 | defer func() { |
| 275 | if r := recover(); r != nil { |
| 276 | t.Fatalf("Delete(%q, %v) panicked: %v", tc.data, tc.keys, r) |
| 277 | } |
| 278 | }() |
| 279 | result := Delete([]byte(tc.data), tc.keys...) |
| 280 | // On error, should return original |
| 281 | _ = result |
| 282 | }() |
| 283 | }) |
| 284 | } |
| 285 | } |
| 286 | |
| 287 | // Verifies: SYS-REQ-056 [malformed] |
| 288 | // Delete on mid-structure truncation shall return original input and not panic. |