File: predictendpoint_test.go

package info (click to toggle)
golang-github-aws-aws-sdk-go-v2 1.24.1-2~bpo12%2B1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm-backports
  • size: 554,032 kB
  • sloc: java: 15,941; makefile: 419; sh: 175
file content (76 lines) | stat: -rw-r--r-- 1,934 bytes parent folder | download | duplicates (5)
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
package customizations

import (
	"context"
	"strings"
	"testing"

	"github.com/aws/smithy-go/middleware"
	"github.com/aws/smithy-go/ptr"
	smithyhttp "github.com/aws/smithy-go/transport/http"
)

func TestPredictEndpointMiddleware(t *testing.T) {
	cases := map[string]struct {
		PredictEndpoint  *string
		ExpectedEndpoint string
		ExpectedErr      string
	}{
		"nil endpoint": {},
		"empty endpoint": {
			PredictEndpoint: ptr.String(""),
		},
		"invalid endpoint": {
			PredictEndpoint: ptr.String("::::::::"),
			ExpectedErr:     "unable to parse",
		},
		"valid endpoint": {
			PredictEndpoint:  ptr.String("https://example.amazonaws.com/"),
			ExpectedEndpoint: "https://example.amazonaws.com/",
		},
	}

	for name, c := range cases {
		t.Run(name, func(t *testing.T) {
			m := &predictEndpoint{
				fetchPredictEndpoint: func(i interface{}) (*string, error) {
					return c.PredictEndpoint, nil
				},
			}
			_, _, err := m.HandleSerialize(context.Background(),
				middleware.SerializeInput{
					Request: smithyhttp.NewStackRequest(),
				},
				middleware.SerializeHandlerFunc(
					func(ctx context.Context, input middleware.SerializeInput) (
						output middleware.SerializeOutput, metadata middleware.Metadata, err error,
					) {

						req, ok := input.Request.(*smithyhttp.Request)
						if !ok || req == nil {
							t.Fatalf("expect smithy request, got %T", input.Request)
						}

						if c.ExpectedEndpoint != req.URL.String() {
							t.Errorf("expected url to be `%v`, but was `%v`", c.ExpectedEndpoint, req.URL.String())
						}

						return output, metadata, err
					}),
			)
			if len(c.ExpectedErr) != 0 {
				if err == nil {
					t.Fatalf("expect error, got none")
				}
				if e, a := c.ExpectedErr, err.Error(); !strings.Contains(a, e) {
					t.Fatalf("expect error to contain %v, got %v", e, a)
				}
			} else {
				if err != nil {
					t.Fatalf("expect no error, got %v", err)
				}
			}
		})
	}

}