request.URL.RawQuery = url.Values{ "code": {"some-code"}, "state": {encodedState}, }.Encode() }) Context("when exchanging the token succeeds", func() { var token *oauth2.Token var httpClient *http.Client BeforeEach(func() { token = &oauth2.Token{AccessToken: "some-access-token"} httpClient = &http.Client{} fakeProviderB.ExchangeReturns(token, nil) fakeProviderB.ClientReturns(httpClient) }) It("generated the OAuth token using the request's code", func() { Expect(fakeProviderB.ExchangeCallCount()).To(Equal(1)) _, code := fakeProviderB.ExchangeArgsForCall(0) Expect(code).To(Equal("some-code")) }) Context("when the token is verified", func() { BeforeEach(func() { fakeProviderB.VerifyReturns(true, nil) }) It("responds OK", func() { Expect(response.StatusCode).To(Equal(http.StatusOK))