1// Code generated by smithy-go-codegen DO NOT EDIT. 2 3package query 4 5import ( 6 "bytes" 7 "context" 8 "github.com/aws/aws-sdk-go-v2/aws" 9 "github.com/aws/aws-sdk-go-v2/internal/protocoltest/query/types" 10 "github.com/aws/smithy-go/middleware" 11 "github.com/aws/smithy-go/ptr" 12 smithyrand "github.com/aws/smithy-go/rand" 13 smithytesting "github.com/aws/smithy-go/testing" 14 smithyhttp "github.com/aws/smithy-go/transport/http" 15 "github.com/google/go-cmp/cmp/cmpopts" 16 "io/ioutil" 17 "net/http" 18 "testing" 19) 20 21func TestClient_RecursiveXmlShapes_awsAwsqueryDeserialize(t *testing.T) { 22 cases := map[string]struct { 23 StatusCode int 24 Header http.Header 25 BodyMediaType string 26 Body []byte 27 ExpectResult *RecursiveXmlShapesOutput 28 }{ 29 // Serializes recursive structures 30 "QueryRecursiveShapes": { 31 StatusCode: 200, 32 Header: http.Header{ 33 "Content-Type": []string{"text/xml"}, 34 }, 35 BodyMediaType: "application/xml", 36 Body: []byte(`<RecursiveXmlShapesResponse xmlns="https://example.com/"> 37 <RecursiveXmlShapesResult> 38 <nested> 39 <foo>Foo1</foo> 40 <nested> 41 <bar>Bar1</bar> 42 <recursiveMember> 43 <foo>Foo2</foo> 44 <nested> 45 <bar>Bar2</bar> 46 </nested> 47 </recursiveMember> 48 </nested> 49 </nested> 50 </RecursiveXmlShapesResult> 51 </RecursiveXmlShapesResponse> 52 `), 53 ExpectResult: &RecursiveXmlShapesOutput{ 54 Nested: &types.RecursiveXmlShapesOutputNested1{ 55 Foo: ptr.String("Foo1"), 56 Nested: &types.RecursiveXmlShapesOutputNested2{ 57 Bar: ptr.String("Bar1"), 58 RecursiveMember: &types.RecursiveXmlShapesOutputNested1{ 59 Foo: ptr.String("Foo2"), 60 Nested: &types.RecursiveXmlShapesOutputNested2{ 61 Bar: ptr.String("Bar2"), 62 }, 63 }, 64 }, 65 }, 66 }, 67 }, 68 } 69 for name, c := range cases { 70 t.Run(name, func(t *testing.T) { 71 url := "http://localhost:8888/" 72 client := New(Options{ 73 HTTPClient: smithyhttp.ClientDoFunc(func(r *http.Request) (*http.Response, error) { 74 headers := http.Header{} 75 for k, vs := range c.Header { 76 for _, v := range vs { 77 headers.Add(k, v) 78 } 79 } 80 if len(c.BodyMediaType) != 0 && len(headers.Values("Content-Type")) == 0 { 81 headers.Set("Content-Type", c.BodyMediaType) 82 } 83 response := &http.Response{ 84 StatusCode: c.StatusCode, 85 Header: headers, 86 Request: r, 87 } 88 if len(c.Body) != 0 { 89 response.ContentLength = int64(len(c.Body)) 90 response.Body = ioutil.NopCloser(bytes.NewReader(c.Body)) 91 } else { 92 93 response.Body = http.NoBody 94 } 95 return response, nil 96 }), 97 APIOptions: []func(*middleware.Stack) error{ 98 func(s *middleware.Stack) error { 99 s.Finalize.Clear() 100 return nil 101 }, 102 }, 103 EndpointResolver: EndpointResolverFunc(func(region string, options EndpointResolverOptions) (e aws.Endpoint, err error) { 104 e.URL = url 105 e.SigningRegion = "us-west-2" 106 return e, err 107 }), 108 IdempotencyTokenProvider: smithyrand.NewUUIDIdempotencyToken(&smithytesting.ByteLoop{}), 109 Region: "us-west-2", 110 }) 111 var params RecursiveXmlShapesInput 112 result, err := client.RecursiveXmlShapes(context.Background(), ¶ms) 113 if err != nil { 114 t.Fatalf("expect nil err, got %v", err) 115 } 116 if result == nil { 117 t.Fatalf("expect not nil result") 118 } 119 if err := smithytesting.CompareValues(c.ExpectResult, result, cmpopts.IgnoreUnexported(middleware.Metadata{})); err != nil { 120 t.Errorf("expect c.ExpectResult value match:\n%v", err) 121 } 122 }) 123 } 124} 125