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
|
package customizations_test
import (
"context"
"fmt"
"strings"
"testing"
"github.com/aws/smithy-go/middleware"
"github.com/aws/smithy-go/transport/http"
"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/internal/awstesting/unit"
"github.com/aws/aws-sdk-go-v2/service/route53"
)
func TestSanitizeURLMiddleware(t *testing.T) {
cases := map[string]struct {
Given string
ExpectedURL string
}{
"includes hostedzone": {
Given: "hostedzone/ABCDEFG",
ExpectedURL: "https://route53.amazonaws.com/2013-04-01/delegationset/ABCDEFG",
},
"excludes hostedzone": {
Given: "ABCDEFG",
ExpectedURL: "https://route53.amazonaws.com/2013-04-01/delegationset/ABCDEFG",
},
"includes leading / in hostedzone": {
Given: "/hostedzone/ABCDEFG",
ExpectedURL: "https://route53.amazonaws.com/2013-04-01/delegationset/ABCDEFG",
},
}
for name, c := range cases {
t.Run(name, func(t *testing.T) {
cfg := aws.Config{
Credentials: unit.StubCredentialsProvider{},
Retryer: func() aws.Retryer {
return aws.NopRetryer{}
},
Region: "mock-region",
}
fm := requestRetrieverMiddleware{}
svc := route53.NewFromConfig(cfg)
svc.DeleteReusableDelegationSet(context.Background(), &route53.DeleteReusableDelegationSetInput{
Id: &c.Given,
}, func(options *route53.Options) {
options.APIOptions = append(options.APIOptions, func(stack *middleware.Stack) error {
stack.Serialize.Insert(&fm, "OperationSerializer", middleware.After)
return nil
})
})
if fm.request == nil {
t.Fatalf("expected request to be serialized, got none")
}
if e, a := c.ExpectedURL, fm.request.URL.String(); !strings.EqualFold(e, a) {
t.Fatalf("Expected url to be serialized as %v, got %v", e, a)
}
})
}
}
type requestRetrieverMiddleware struct {
request *http.Request
}
func (*requestRetrieverMiddleware) ID() string { return "Route53:requestRetrieverMiddleware" }
func (rm *requestRetrieverMiddleware) HandleSerialize(
ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler,
) (
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
) {
req, ok := in.Request.(*http.Request)
if !ok {
return out, metadata, fmt.Errorf("unknown request type %T", req)
}
rm.request = req
return next.HandleSerialize(ctx, in)
}
|