@@ -19,8 +19,9 @@ import (
1919 "context"
2020 "encoding/base64"
2121 "errors"
22- "fmt "
22+ "strings "
2323 "testing"
24+ "time"
2425
2526 "buf.build/go/app"
2627 "buf.build/go/app/appext"
@@ -54,7 +55,7 @@ func TestNewAuthorizationInterceptorProvider(t *testing.T) {
5455 return nil , errors .New ("error auth token" )
5556 }
5657 return nil , nil
57- })(context . Background (), connect .NewRequest (& bytes.Buffer {}))
58+ })(t . Context (), connect .NewRequest (& bytes.Buffer {}))
5859 assert .NoError (t , err )
5960
6061 getMachineForName := func (app.EnvContainer , string ) (netrc.Machine , error ) {
@@ -67,7 +68,7 @@ func TestNewAuthorizationInterceptorProvider(t *testing.T) {
6768 return nil , errors .New ("error auth token" )
6869 }
6970 return nil , nil
70- })(context . Background (), connect .NewRequest (& bytes.Buffer {}))
71+ })(t . Context (), connect .NewRequest (& bytes.Buffer {}))
7172 assert .NoError (t , err )
7273
7374 // testing using tokenSet over netrc tokenToAuthKey
@@ -76,7 +77,7 @@ func TestNewAuthorizationInterceptorProvider(t *testing.T) {
7677 return nil , errors .New ("error auth token" )
7778 }
7879 return nil , nil
79- })(context . Background (), connect .NewRequest (& bytes.Buffer {}))
80+ })(t . Context (), connect .NewRequest (& bytes.Buffer {}))
8081 assert .NoError (t , err )
8182
8283 // testing using netrc tokenToAuthKey over tokenSet
@@ -85,15 +86,15 @@ func TestNewAuthorizationInterceptorProvider(t *testing.T) {
8586 return nil , errors .New ("error auth token" )
8687 }
8788 return nil , nil
88- })(context . Background (), connect .NewRequest (& bytes.Buffer {}))
89+ })(t . Context (), connect .NewRequest (& bytes.Buffer {}))
8990 assert .NoError (t , err )
9091
9192 _ , err = NewAuthorizationInterceptorProvider ()("default" )(func (ctx context.Context , req connect.AnyRequest ) (connect.AnyResponse , error ) {
9293 if req .Header ().Get (AuthenticationHeader ) != "" {
9394 return nil , errors .New ("error auth token" )
9495 }
9596 return nil , nil
96- })(context . Background (), connect .NewRequest (& bytes.Buffer {}))
97+ })(t . Context (), connect .NewRequest (& bytes.Buffer {}))
9798 assert .NoError (t , err )
9899
99100 tokenSet , err = NewTokenProviderFromContainer (app .NewEnvContainer (map [string ]string {
@@ -102,7 +103,7 @@ func TestNewAuthorizationInterceptorProvider(t *testing.T) {
102103 assert .NoError (t , err )
103104 _ , err = NewAuthorizationInterceptorProvider (tokenSet )("default" )(func (ctx context.Context , req connect.AnyRequest ) (connect.AnyResponse , error ) {
104105 return nil , errors .New ("underlying cause" )
105- })(context . Background (), connect .NewRequest (& bytes.Buffer {}))
106+ })(t . Context (), connect .NewRequest (& bytes.Buffer {}))
106107 authErr , ok := AsAuthError (err )
107108 assert .True (t , ok )
108109 assert .Equal (t , TokenEnvKey , authErr .tokenEnvKey )
@@ -119,15 +120,15 @@ func TestCLIWarningInterceptor(t *testing.T) {
119120 resp := connect .NewResponse (& bytes.Buffer {})
120121 resp .Header ().Set (CLIWarningHeaderName , base64 .StdEncoding .EncodeToString ([]byte (warningMessage )))
121122 return resp , nil
122- })(context . Background (), connect .NewRequest (& bytes.Buffer {}))
123+ })(t . Context (), connect .NewRequest (& bytes.Buffer {}))
123124 assert .NoError (t , err )
124- assert . Equal (t , fmt . Sprintf ( "WARN \t %s \n " , warningMessage ) , buf .String ())
125+ assertWarnLog (t , warningMessage , buf .String ())
125126
126127 // testing no warning message in valid response with no header
127128 buf .Reset ()
128129 _ , err = NewCLIWarningInterceptor (appext .NewLoggerContainer (logger ))(func (ctx context.Context , req connect.AnyRequest ) (connect.AnyResponse , error ) {
129130 return connect .NewResponse (& bytes.Buffer {}), nil
130- })(context . Background (), connect .NewRequest (& bytes.Buffer {}))
131+ })(t . Context (), connect .NewRequest (& bytes.Buffer {}))
131132 assert .NoError (t , err )
132133 assert .Equal (t , "" , buf .String ())
133134}
@@ -143,9 +144,9 @@ func TestCLIWarningInterceptorFromError(t *testing.T) {
143144 err := connect .NewError (connect .CodeInternal , errors .New ("error" ))
144145 err .Meta ().Set (CLIWarningHeaderName , base64 .StdEncoding .EncodeToString ([]byte (warningMessage )))
145146 return nil , err
146- })(context . Background (), connect .NewRequest (& bytes.Buffer {}))
147+ })(t . Context (), connect .NewRequest (& bytes.Buffer {}))
147148 assert .Error (t , err )
148- assert . Equal (t , fmt . Sprintf ( "WARN \t %s \n " , warningMessage ) , buf .String ())
149+ assertWarnLog (t , warningMessage , buf .String ())
149150}
150151
151152type testRequest [T any ] struct {
@@ -163,12 +164,25 @@ func (r testRequest[_]) Peer() connect.Peer {
163164 }
164165}
165166
167+ // assertWarnLog verifies that logOutput contains a single WARN log line with the
168+ // given message. The console handler prepends an RFC3339 timestamp, so this
169+ // helper parses the three tab-separated fields and checks each one.
170+ func assertWarnLog (t * testing.T , message , logOutput string ) {
171+ t .Helper ()
172+ parts := strings .SplitN (strings .TrimRight (logOutput , "\n " ), "\t " , 3 )
173+ require .Len (t , parts , 3 , "expected 3 tab-separated fields in log output" )
174+ _ , err := time .Parse (time .RFC3339 , parts [0 ])
175+ assert .NoError (t , err , "expected valid RFC3339 timestamp" )
176+ assert .Equal (t , "WARN" , parts [1 ])
177+ assert .Equal (t , message , parts [2 ])
178+ }
179+
166180func TestNewAugmentedConnectErrorInterceptor (t * testing.T ) {
167181 t .Parallel ()
168182 _ , err := NewAugmentedConnectErrorInterceptor ()(func (ctx context.Context , req connect.AnyRequest ) (connect.AnyResponse , error ) {
169183 err := connect .NewError (connect .CodeUnknown , errors .New ("405 Method Not Allowed" ))
170184 return nil , err
171- })(context . Background (), testRequest [bytes.Buffer ]{Request : connect .NewRequest (& bytes.Buffer {})})
185+ })(t . Context (), testRequest [bytes.Buffer ]{Request : connect .NewRequest (& bytes.Buffer {})})
172186 assert .Error (t , err )
173187 var augmentedConnectError * AugmentedConnectError
174188 assert .ErrorAs (t , err , & augmentedConnectError )
0 commit comments