internal: Use provided context in subsequent request

Currently the HTTP request does not set the given context.
This change sets the context (if not nil) on the request.

Change-Id: I4bb21636d05050a68ba70ce92f9bf9ba608fbfad
Reviewed-on: https://go-review.googlesource.com/45370
Run-TryBot: Chris Broadfoot <cbro@golang.org>
Reviewed-by: Jaana Burcu Dogan <jbd@google.com>
Reviewed-by: Chris Broadfoot <cbro@golang.org>
This commit is contained in:
Bastian Ike 2017-06-28 10:57:20 +02:00 committed by Chris Broadfoot
parent 5432cc9688
commit 626d87b993
2 changed files with 26 additions and 1 deletions

View File

@ -18,6 +18,7 @@ import (
"time"
"golang.org/x/net/context"
"golang.org/x/net/context/ctxhttp"
)
// Token represents the crendentials used to authorize
@ -189,7 +190,7 @@ func RetrieveToken(ctx context.Context, clientID, clientSecret, tokenURL string,
if !bustedAuth {
req.SetBasicAuth(clientID, clientSecret)
}
r, err := hc.Do(req)
r, err := ctxhttp.Do(ctx, hc, req)
if err != nil {
return nil, err
}

View File

@ -79,3 +79,27 @@ func TestProviderAuthHeaderWorksDomain(t *testing.T) {
}
}
}
func TestRetrieveTokenWithContexts(t *testing.T) {
const clientID = "client-id"
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {}))
defer ts.Close()
_, err := RetrieveToken(context.Background(), clientID, "", ts.URL, url.Values{})
if err != nil {
t.Errorf("RetrieveToken (with background context) = %v; want no error", err)
}
ctx, cancelfunc := context.WithCancel(context.Background())
cancellingts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
cancelfunc()
}))
defer cancellingts.Close()
_, err = RetrieveToken(ctx, clientID, "", cancellingts.URL, url.Values{})
if err == nil {
t.Errorf("RetrieveToken (with cancelled context) = nil; want error")
}
}