...

Source file src/github.com/aws/smithy-go/auth/bearer/middleware_test.go

Documentation: github.com/aws/smithy-go/auth/bearer

     1  package bearer
     2  
     3  import (
     4  	"context"
     5  	"net/url"
     6  	"reflect"
     7  	"strings"
     8  	"testing"
     9  
    10  	smithyhttp "github.com/aws/smithy-go/transport/http"
    11  )
    12  
    13  func TestSignHTTPSMessage(t *testing.T) {
    14  	cases := map[string]struct {
    15  		message       Message
    16  		token         Token
    17  		expectMessage Message
    18  		expectErr     string
    19  	}{
    20  		// Cases
    21  		"not smithyhttp.Request": {
    22  			message:   struct{}{},
    23  			expectErr: "expect smithy-go HTTP Request",
    24  		},
    25  		"not https": {
    26  			message: func() Message {
    27  				r := smithyhttp.NewStackRequest().(*smithyhttp.Request)
    28  				r.URL, _ = url.Parse("http://example.aws")
    29  				return r
    30  			}(),
    31  			expectErr: "requires HTTPS",
    32  		},
    33  		"success": {
    34  			message: func() Message {
    35  				r := smithyhttp.NewStackRequest().(*smithyhttp.Request)
    36  				r.URL, _ = url.Parse("https://example.aws")
    37  				return r
    38  			}(),
    39  			token: Token{Value: "abc123"},
    40  			expectMessage: func() Message {
    41  				r := smithyhttp.NewStackRequest().(*smithyhttp.Request)
    42  				r.URL, _ = url.Parse("https://example.aws")
    43  				r.Header.Set("Authorization", "Bearer abc123")
    44  				return r
    45  			}(),
    46  		},
    47  	}
    48  
    49  	for name, c := range cases {
    50  		t.Run(name, func(t *testing.T) {
    51  			ctx := context.Background()
    52  			signer := SignHTTPSMessage{}
    53  			message, err := signer.SignWithBearerToken(ctx, c.token, c.message)
    54  			if c.expectErr != "" {
    55  				if err == nil {
    56  					t.Fatalf("expect error, got none")
    57  				}
    58  				if e, a := c.expectErr, err.Error(); !strings.Contains(a, e) {
    59  					t.Fatalf("expect %v in error %v", e, a)
    60  				}
    61  				return
    62  			} else if err != nil {
    63  				t.Fatalf("expect no error, got %v", err)
    64  			}
    65  
    66  			expect := c.expectMessage.(*smithyhttp.Request)
    67  
    68  			actual, ok := message.(*smithyhttp.Request)
    69  			if !ok {
    70  				t.Fatalf("*smithyhttp.Request != %T", actual)
    71  			}
    72  			if !reflect.DeepEqual(expect.Header, actual.Header) {
    73  				t.Errorf("%v != %v", expect.Header, actual.Header)
    74  			}
    75  		})
    76  	}
    77  }
    78  

View as plain text