1 package http_test
2
3 import (
4 "context"
5 "net/http"
6 "reflect"
7 "testing"
8
9 "github.com/aws/smithy-go/middleware"
10 smithyhttp "github.com/aws/smithy-go/transport/http"
11 )
12
13 func TestAddHeaderValue(t *testing.T) {
14 stack := middleware.NewStack("stack", smithyhttp.NewStackRequest)
15 err := smithyhttp.AddHeaderValue("foo", "fooValue")(stack)
16 if err != nil {
17 t.Fatalf("expect no error, got %v", err)
18 }
19 err = smithyhttp.AddHeaderValue("bar", "firstValue")(stack)
20 if err != nil {
21 t.Fatalf("expect no error, got %v", err)
22 }
23 err = smithyhttp.AddHeaderValue("bar", "secondValue")(stack)
24 if err != nil {
25 t.Fatalf("expect no error, got %v", err)
26 }
27
28 handler := middleware.DecorateHandler(middleware.HandlerFunc(func(ctx context.Context, input interface{}) (output interface{}, metadata middleware.Metadata, err error) {
29 req := input.(*smithyhttp.Request)
30
31 expect := http.Header{
32 "Foo": []string{"fooValue"},
33 "Bar": []string{"firstValue", "secondValue"},
34 }
35 if !reflect.DeepEqual(expect, req.Header) {
36 t.Errorf("%v != %v", expect, req.Header)
37 }
38
39 return output, metadata, err
40 }), stack)
41 _, _, err = handler.Handle(context.Background(), nil)
42 if err != nil {
43 t.Fatalf("expect no error, got %v", err)
44 }
45 }
46
47 func TestSetHeaderValue(t *testing.T) {
48 stack := middleware.NewStack("stack", smithyhttp.NewStackRequest)
49 err := smithyhttp.SetHeaderValue("foo", "firstValue")(stack)
50 if err != nil {
51 t.Fatalf("expect no error, got %v", err)
52 }
53 err = smithyhttp.SetHeaderValue("foo", "secondValue")(stack)
54 if err != nil {
55 t.Fatalf("expect no error, got %v", err)
56 }
57
58 handler := middleware.DecorateHandler(middleware.HandlerFunc(func(ctx context.Context, input interface{}) (output interface{}, metadata middleware.Metadata, err error) {
59 req := input.(*smithyhttp.Request)
60
61 expect := http.Header{
62 "Foo": []string{"secondValue"},
63 }
64 if !reflect.DeepEqual(expect, req.Header) {
65 t.Errorf("%v != %v", expect, req.Header)
66 }
67
68 return output, metadata, err
69 }), stack)
70 _, _, err = handler.Handle(context.Background(), nil)
71 if err != nil {
72 t.Fatalf("expect no error, got %v", err)
73 }
74 }
75
View as plain text