@@ -26,7 +26,6 @@ import (
2626 "context"
2727 "encoding/json"
2828 "errors"
29- "fmt"
3029 "io"
3130 "net/http"
3231 "os"
@@ -40,22 +39,17 @@ import (
4039)
4140
4241func RequestJSON (t * testing.T , headers http.Header , url , name , expectedMetadataFlavor string , obj any ) {
42+ t .Helper ()
4343 body := requestURL (t , headers , url , name , "application/json" , expectedMetadataFlavor )
44- defer body .Close ()
45- if err := json .NewDecoder (body ).Decode (obj ); err != nil {
46- t .Fatalf ("error decoding %s response body as json: %v" , name , err )
44+ if err := json .Unmarshal ([]byte (body ), obj ); err != nil {
45+ t .Fatalf ("error unmarshaling %s response body as json: %v" , name , err )
4746 }
4847}
4948
5049func RequestIDToken (t * testing.T , headers http.Header , url , name , expectedMetadataFlavor string ,
5150 expectedAudience , expectedIssuer , expectedSubject string ) string {
52- body := requestURL (t , headers , url , name , "application/text" , expectedMetadataFlavor )
53- defer body .Close ()
54- b , err := io .ReadAll (body )
55- if err != nil {
56- t .Fatalf ("error reading %s response body as text: %v" , name , err )
57- }
58- rawToken := string (b )
51+ t .Helper ()
52+ rawToken := requestURL (t , headers , url , name , "application/text" , expectedMetadataFlavor )
5953 token , _ , err := jwt .NewParser ().ParseUnverified (rawToken , jwt.MapClaims {})
6054 if err != nil {
6155 t .Fatalf ("error parsing %s response body as jwt: %v" , name , err )
@@ -89,35 +83,17 @@ func RequestIDToken(t *testing.T, headers http.Header, url, name, expectedMetada
8983}
9084
9185func RequestText (t * testing.T , headers http.Header , url , name string ) string {
92- body := requestURL (t , headers , url , name , "text/plain" , "" )
93- defer body .Close ()
94- b , err := io .ReadAll (body )
95- if err != nil {
96- t .Fatalf ("error reading %s response body as text: %v" , name , err )
97- }
98- return string (b )
86+ t .Helper ()
87+ return requestURL (t , headers , url , name , "text/plain" , "" )
9988}
10089
10190func requestURL (t * testing.T , headers http.Header , url , name , expectedContentType ,
102- expectedMetadataFlavor string ) io.ReadCloser {
103- for i := 0 ; ; i ++ {
104- ctx , cancel := context .WithTimeout (context .Background (), 10 * time .Second )
105- defer cancel ()
106- readCloser , err := doRequestURL (ctx , headers , url , name , expectedContentType , expectedMetadataFlavor )
107- if err == nil {
108- return readCloser
109- }
110- if ! errors .Is (err , context .Canceled ) || i == 3 {
111- t .Fatal (err .Error ())
112- }
113- }
114- }
115-
116- func doRequestURL (ctx context.Context , headers http.Header , url , name , expectedContentType ,
117- expectedMetadataFlavor string ) (io.ReadCloser , error ) {
91+ expectedMetadataFlavor string ) string {
92+ ctx , cancel := context .WithTimeout (context .Background (), 10 * time .Second )
93+ defer cancel ()
11894 req , err := http .NewRequestWithContext (ctx , http .MethodGet , url , nil )
11995 if err != nil {
120- return nil , fmt . Errorf ("error creating %s request: %w " , name , err )
96+ t . Fatalf ("error creating %s request: %v " , name , err )
12197 }
12298 for k , v := range headers {
12399 for i := range v {
@@ -126,33 +102,39 @@ func doRequestURL(ctx context.Context, headers http.Header, url, name, expectedC
126102 }
127103 resp , err := http .DefaultClient .Do (req )
128104 if err != nil {
129- return nil , fmt . Errorf ("error requesting %s: %w " , name , err )
105+ t . Fatalf ("error requesting %s: %v " , name , err )
130106 }
107+ defer resp .Body .Close ()
131108 getErr := func () error {
132109 defer resp .Body .Close ()
133110 b , readErr := io .ReadAll (resp .Body )
134111 err := errors .New (string (b ))
135112 return errors .Join (err , readErr )
136113 }
137114 if c := resp .StatusCode ; c != 200 {
138- return nil , fmt . Errorf ("non-200 status code %v for %s. error(s): %w " , c , name , getErr ())
115+ t . Fatalf ("non-200 status code %v for %s. error(s): %v " , c , name , getErr ())
139116 }
140117 if ct := resp .Header .Get ("Content-Type" ); ct != expectedContentType {
141- return nil , fmt . Errorf ("unexpected content type %s for %s (was expecting %s). error(s): %w " ,
118+ t . Fatalf ("unexpected content type %s for %s (was expecting %s). error(s): %v " ,
142119 ct , name , expectedContentType , getErr ())
143120 }
144121 if mf := resp .Header .Get ("Metadata-Flavor" ); mf != expectedMetadataFlavor {
145- return nil , fmt . Errorf ("unexpected metadata flavor %s for %s (was expecting '%s'). error(s): %w " ,
122+ t . Fatalf ("unexpected metadata flavor %s for %s (was expecting '%s'). error(s): %v " ,
146123 mf , name , expectedMetadataFlavor , getErr ())
147124 }
148- return resp .Body , nil
125+ b , err := io .ReadAll (resp .Body )
126+ if err != nil {
127+ t .Fatalf ("error reading %s response: %v" , name , err )
128+ }
129+ return string (b )
149130}
150131
151132func EvalEnv (s string ) string {
152133 return strings .ReplaceAll (s , "TEST_ID" , os .Getenv ("TEST_ID" ))
153134}
154135
155136func CheckRegex (t * testing.T , name , pattern , value string ) {
137+ t .Helper ()
156138 pattern = "^" + EvalEnv (pattern ) + "$"
157139 re , err := regexp .Compile (pattern )
158140 if err != nil {
@@ -165,6 +147,7 @@ func CheckRegex(t *testing.T, name, pattern, value string) {
165147}
166148
167149func AssertExpirationSeconds (t * testing.T , secs int ) {
150+ t .Helper ()
168151 assert .LessOrEqual (t , 3500 , secs )
169152 assert .LessOrEqual (t , secs , 3600 )
170153}
0 commit comments