@@ -22,6 +22,7 @@ type HttpTestResult struct {
2222 StatusCode int
2323 Headers map [string ]string
2424 BodyString string
25+ Variables map [string ]string
2526}
2627
2728func HttpTest (
@@ -44,21 +45,24 @@ func HttpTest(
4445 cobra .CheckErr ("no base URL provided" )
4546 }
4647 finalBaseURL = strings .TrimSuffix (finalBaseURL , "/" )
48+ interpolatedPath := interpolateVariables (request .Request .Path , variables )
49+ completeURL := fmt .Sprintf ("%s%s" , finalBaseURL , interpolatedPath )
4750
4851 var r * http.Request
4952 if request .Request .BodyJSON != nil {
5053 dat , err := json .Marshal (request .Request .BodyJSON )
5154 cobra .CheckErr (err )
52- r , err = http .NewRequest (request .Request .Method , fmt .Sprintf ("%s%s" ,
53- finalBaseURL , request .Request .Path ), bytes .NewBuffer (dat ))
55+ interpolatedBodyJSONStr := interpolateVariables (string (dat ), variables )
56+ r , err = http .NewRequest (request .Request .Method , completeURL ,
57+ bytes .NewBuffer ([]byte (interpolatedBodyJSONStr )),
58+ )
5459 if err != nil {
5560 cobra .CheckErr ("Failed to create request" )
5661 }
5762 r .Header .Add ("Content-Type" , "application/json" )
5863 } else {
5964 var err error
60- r , err = http .NewRequest (request .Request .Method , fmt .Sprintf ("%s%s" ,
61- finalBaseURL , request .Request .Path ), nil )
65+ r , err = http .NewRequest (request .Request .Method , completeURL , nil )
6266 if err != nil {
6367 cobra .CheckErr ("Failed to create request" )
6468 }
@@ -92,13 +96,14 @@ func HttpTest(
9296 for k , v := range resp .Header {
9397 headers [k ] = strings .Join (v , "," )
9498 }
99+ parseVariables (body , request .ResponseVariables , variables )
95100 responses [i ] = HttpTestResult {
96101 RequestHeaders : r .Header ,
97102 StatusCode : resp .StatusCode ,
98103 Headers : headers ,
99104 BodyString : string (body ),
105+ Variables : variables ,
100106 }
101- parseVariables (body , request .ResponseVariables , variables )
102107 }
103108 return responses , finalBaseURL
104109}
0 commit comments