| 11 | ) |
| 12 | |
| 13 | func Test_getViewer_leavesUserAgent(t *testing.T) { |
| 14 | var receivedUA string |
| 15 | var receivedAuth string |
| 16 | |
| 17 | plainClient := &http.Client{ |
| 18 | Transport: &roundTripper{roundTrip: func(req *http.Request) (*http.Response, error) { |
| 19 | receivedUA = req.Header.Get("User-Agent") |
| 20 | receivedAuth = req.Header.Get("Authorization") |
| 21 | |
| 22 | return &http.Response{ |
| 23 | StatusCode: 200, |
| 24 | Header: http.Header{"Content-Type": []string{"application/json"}}, |
| 25 | Body: io.NopCloser(bytes.NewBufferString(`{"data":{"viewer":{"login":"monalisa"}}}`)), |
| 26 | Request: req, |
| 27 | }, nil |
| 28 | }}, |
| 29 | } |
| 30 | |
| 31 | login, err := getViewer(plainClient, "github.com", "test-token") |
| 32 | require.NoError(t, err) |
| 33 | assert.Equal(t, "monalisa", login) |
| 34 | assert.Empty(t, receivedUA, "User-Agent header should be left unset so that downstream transports can set it") |
| 35 | assert.Equal(t, "token test-token", receivedAuth) |
| 36 | } |
| 37 | |
| 38 | type roundTripper struct { |
| 39 | roundTrip func(*http.Request) (*http.Response, error) |