@@ -144,11 +144,14 @@ func TestPostPutPatchJSON(t *testing.T) {
144144 var data interface {}
145145 var user , pass string
146146 var method string
147+ var userAgent string
147148
149+ expectedUserAgent := "api/1.0.0"
148150 ch := make (chan error , 1 )
149151 srv := serveHandler (func (w http.ResponseWriter , r * http.Request ) {
150152 var ok bool
151153 method = r .Method
154+ userAgent = r .UserAgent ()
152155
153156 user , pass , ok = r .BasicAuth ()
154157 if ! ok {
@@ -160,7 +163,9 @@ func TestPostPutPatchJSON(t *testing.T) {
160163 })
161164 t .Cleanup (srv .Close )
162165
163- clt := newC (srv .URL , "v1" , BasicAuth ("user" , "pass" ))
166+ header := make (http.Header )
167+ header .Set ("User-Agent" , expectedUserAgent )
168+ clt := newC (srv .URL , "v1" , BasicAuth ("user" , "pass" ), WithHeader (header ))
164169
165170 values := map [string ]interface {}{"hello" : "there" }
166171 _ , err := clt .PostJSON (context .Background (), clt .Endpoint ("a" , "b" ), values )
@@ -191,6 +196,7 @@ func TestPostPutPatchJSON(t *testing.T) {
191196
192197 require .NoError (t , <- ch )
193198
199+ require .Equal (t , expectedUserAgent , userAgent )
194200 require .Equal (t , http .MethodPatch , method )
195201 require .Equal (t , "user" , user )
196202 require .Equal (t , "pass" , pass )
@@ -200,16 +206,22 @@ func TestPostPutPatchJSON(t *testing.T) {
200206func TestDelete (t * testing.T ) {
201207 var method string
202208 var user , pass string
209+ var userAgent string
203210
211+ expectedUserAgent := "api/1.0.0"
204212 srv := serveHandler (func (w http.ResponseWriter , r * http.Request ) {
205213 user , pass , _ = r .BasicAuth ()
206214 method = r .Method
215+ userAgent = r .UserAgent ()
207216 })
208217 t .Cleanup (srv .Close )
209218
210- clt := newC (srv .URL , "v1" , BasicAuth ("user" , "pass" ))
219+ header := make (http.Header )
220+ header .Set ("User-Agent" , expectedUserAgent )
221+ clt := newC (srv .URL , "v1" , BasicAuth ("user" , "pass" ), WithHeader (header ))
211222 re , err := clt .Delete (context .Background (), clt .Endpoint ("a" , "b" ))
212223 require .NoError (t , err )
224+ require .Equal (t , expectedUserAgent , userAgent )
213225 require .Equal (t , http .MethodDelete , method )
214226 require .Equal (t , http .StatusOK , re .Code ())
215227 require .Equal (t , "user" , user )
@@ -241,16 +253,22 @@ func TestDeleteP(t *testing.T) {
241253func TestGet (t * testing.T ) {
242254 var method string
243255 var query url.Values
256+ var userAgent string
257+ expectedUserAgent := "api/1.0.0"
244258 srv := serveHandler (func (w http.ResponseWriter , r * http.Request ) {
245259 method = r .Method
246260 query = r .URL .Query ()
261+ userAgent = r .UserAgent ()
247262 })
248263 t .Cleanup (srv .Close )
249264
250- clt := newC (srv .URL , "v1" )
265+ header := make (http.Header )
266+ header .Set ("User-Agent" , expectedUserAgent )
267+ clt := newC (srv .URL , "v1" , WithHeader (header ))
251268 values := url.Values {"q" : []string {"1" , "2" }}
252269 _ , err := clt .Get (context .Background (), clt .Endpoint ("a" , "b" ), values )
253270 require .NoError (t , err )
271+ require .Equal (t , expectedUserAgent , userAgent )
254272 require .Equal (t , http .MethodGet , method )
255273 require .Equal (t , values , query )
256274}
@@ -274,10 +292,13 @@ func TestGetFile(t *testing.T) {
274292 require .NoError (t , err )
275293
276294 var user , pass string
295+ var userAgent string
296+ expectedUserAgent := "api/1.0.0"
277297 ch := make (chan error , 1 )
278298 srv := serveHandler (func (w http.ResponseWriter , r * http.Request ) {
279299 var ok bool
280300 user , pass , ok = r .BasicAuth ()
301+ userAgent = r .UserAgent ()
281302 if ! ok {
282303 ch <- errors .New ("basic auth headers invalid" )
283304 return
@@ -289,7 +310,9 @@ func TestGetFile(t *testing.T) {
289310 })
290311 t .Cleanup (srv .Close )
291312
292- clt := newC (srv .URL , "v1" , BasicAuth ("user" , "pass" ))
313+ header := make (http.Header )
314+ header .Set ("User-Agent" , expectedUserAgent )
315+ clt := newC (srv .URL , "v1" , BasicAuth ("user" , "pass" ), WithHeader (header ))
293316 f , err := clt .GetFile (context .Background (), clt .Endpoint ("download" ), url.Values {})
294317 require .NoError (t , err )
295318 defer f .Close ()
@@ -298,6 +321,7 @@ func TestGetFile(t *testing.T) {
298321
299322 data , err := io .ReadAll (f .Body ())
300323 require .NoError (t , err )
324+ require .Equal (t , expectedUserAgent , userAgent )
301325 require .Equal (t , "hello there" , string (data ))
302326 require .Equal (t , "file.txt" , f .FileName ())
303327 require .Equal (t , user , "user" )
@@ -444,11 +468,14 @@ func testPostMultipartForm(t *testing.T, files []File, expected [][]byte) {
444468 var method string
445469 var data [][]byte
446470 var user , pass string
471+ var userAgent string
447472
473+ expectedUserAgent := "api/1.0.0"
448474 ch := make (chan error , 100 )
449475 srv := serveHandler (func (w http.ResponseWriter , r * http.Request ) {
450476 defer close (ch )
451477 user , pass , _ = r .BasicAuth ()
478+ userAgent = r .UserAgent ()
452479
453480 u = r .URL
454481 if err := r .ParseMultipartForm (64 << 20 ); err != nil {
@@ -485,7 +512,9 @@ func testPostMultipartForm(t *testing.T, files []File, expected [][]byte) {
485512 })
486513 t .Cleanup (srv .Close )
487514
488- clt := newC (srv .URL , "v1" , BasicAuth ("user" , "pass" ))
515+ header := make (http.Header )
516+ header .Set ("User-Agent" , expectedUserAgent )
517+ clt := newC (srv .URL , "v1" , BasicAuth ("user" , "pass" ), WithHeader (header ))
489518 values := url.Values {"a" : []string {"b" }}
490519 out , err := clt .PostForm (
491520 context .Background (),
@@ -503,6 +532,7 @@ func testPostMultipartForm(t *testing.T, files []File, expected [][]byte) {
503532 require .Equal (t , "hello back" , string (out .Bytes ()))
504533 require .Equal (t , "/v1/a/b" , u .String ())
505534
535+ require .Equal (t , expectedUserAgent , userAgent )
506536 require .Equal (t , http .MethodPost , method )
507537 require .Equal (t , values , params )
508538 require .Equal (t , expected , data )
0 commit comments