...

Source file src/github.com/aws/smithy-go/encoding/json/decoder_util_test.go

Documentation: github.com/aws/smithy-go/encoding/json

     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