1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
|
// Code generated by smithy-go-codegen DO NOT EDIT.
package smithyrpcv2cbor
import (
"bytes"
"context"
"encoding/base64"
"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/smithy-go/middleware"
"github.com/aws/smithy-go/ptr"
smithytesting "github.com/aws/smithy-go/testing"
smithytime "github.com/aws/smithy-go/time"
smithyhttp "github.com/aws/smithy-go/transport/http"
"io/ioutil"
"net/http"
"testing"
)
func TestClient_FractionalSeconds_smithyRpcv2cborDeserialize(t *testing.T) {
cases := map[string]struct {
StatusCode int
Header http.Header
BodyMediaType string
Body []byte
ExpectResult *FractionalSecondsOutput
}{
// Ensures that clients can correctly parse timestamps with fractional seconds
"RpcV2CborDateTimeWithFractionalSeconds": {
StatusCode: 200,
Header: http.Header{
"Content-Type": []string{"application/cbor"},
"smithy-protocol": []string{"rpc-v2-cbor"},
},
BodyMediaType: "application/cbor",
Body: func() []byte {
p, err := base64.StdEncoding.DecodeString(`v2hkYXRldGltZcH7Qcw32zgPvnf/`)
if err != nil {
panic(err)
}
return p
}(),
ExpectResult: &FractionalSecondsOutput{
Datetime: ptr.Time(smithytime.ParseEpochSeconds(9.46845296123e8)),
},
},
}
for name, c := range cases {
t.Run(name, func(t *testing.T) {
serverURL := "http://localhost:8888/"
client := New(Options{
HTTPClient: smithyhttp.ClientDoFunc(func(r *http.Request) (*http.Response, error) {
headers := http.Header{}
for k, vs := range c.Header {
for _, v := range vs {
headers.Add(k, v)
}
}
if len(c.BodyMediaType) != 0 && len(headers.Values("Content-Type")) == 0 {
headers.Set("Content-Type", c.BodyMediaType)
}
response := &http.Response{
StatusCode: c.StatusCode,
Header: headers,
Request: r,
}
if len(c.Body) != 0 {
response.ContentLength = int64(len(c.Body))
response.Body = ioutil.NopCloser(bytes.NewReader(c.Body))
} else {
response.Body = http.NoBody
}
return response, nil
}),
APIOptions: []func(*middleware.Stack) error{
func(s *middleware.Stack) error {
s.Finalize.Clear()
s.Initialize.Remove(`OperationInputValidation`)
return nil
},
},
EndpointResolver: EndpointResolverFunc(func(region string, options EndpointResolverOptions) (e aws.Endpoint, err error) {
e.URL = serverURL
e.SigningRegion = "us-west-2"
return e, err
}),
Region: "us-west-2",
})
var params FractionalSecondsInput
result, err := client.FractionalSeconds(context.Background(), ¶ms)
if err != nil {
t.Fatalf("expect nil err, got %v", err)
}
if result == nil {
t.Fatalf("expect not nil result")
}
if err := smithytesting.CompareValues(c.ExpectResult, result); err != nil {
t.Errorf("expect c.ExpectResult value match:\n%v", err)
}
})
}
}
|