...
1 package json
2
3 import (
4 "bytes"
5 "encoding/json"
6 "testing"
7
8 smithytesting "github.com/aws/smithy-go/testing"
9 )
10
11 func TestDiscardUnknownField(t *testing.T) {
12 cases := map[string][]byte{
13 "empty object": []byte(`{}`),
14 "simple object": []byte(`{"foo": "bar"}`),
15 "nested object": []byte(`{"foo": {"bar": "baz"}}`),
16 "empty list": []byte(`[]`),
17 "simple list": []byte(`["foo", "bar", "baz"]`),
18 "nested list": []byte(`["foo", ["bar", ["baz"]]]`),
19 "number": []byte(`1`),
20 "boolean": []byte(`true`),
21 "null": []byte(`null`),
22 "string": []byte(`"foo"`),
23 }
24
25 for name, c := range cases {
26 t.Run(name, func(t *testing.T) {
27 buff := bytes.NewBuffer(c)
28 decoder := json.NewDecoder(buff)
29 err := DiscardUnknownField(decoder)
30 if err != nil {
31 t.Fatalf("failed to discard, %v", err)
32 }
33 if decoder.More() {
34 t.Fatalf("failed to discard entire contents")
35 }
36 })
37 }
38 }
39
40 func TestCollectUnknownField(t *testing.T) {
41 cases := map[string][]byte{
42 "empty object": []byte(`{}`),
43 "simple object": []byte(`{"foo": "bar"}`),
44 "nested object": []byte(`{"foo": {"bar": "baz"}}`),
45 "empty list": []byte(`[]`),
46 "simple list": []byte(`["foo", "bar", "baz"]`),
47 "nested list": []byte(`["foo", ["bar", ["baz"]]]`),
48 "number": []byte(`1`),
49 "boolean": []byte(`true`),
50 "null": []byte(`null`),
51 "string": []byte(`"foo"`),
52 }
53
54 for name, c := range cases {
55 t.Run(name, func(t *testing.T) {
56 buff := bytes.NewBuffer(c)
57 decoder := json.NewDecoder(buff)
58 actual, err := CollectUnknownField(decoder)
59 if err != nil {
60 t.Fatalf("failed to collect, %v", err)
61 }
62 smithytesting.AssertJSONEqual(t, c, actual)
63 })
64 }
65 }
66
View as plain text