diff --git a/api/http_client.go b/api/http_client.go index 146b96df6b9..ab7d490632f 100644 --- a/api/http_client.go +++ b/api/http_client.go @@ -17,22 +17,24 @@ type tokenGetter interface { } type HTTPClientOptions struct { - AppVersion string - CacheTTL time.Duration - Config tokenGetter - EnableCache bool - Log io.Writer - LogColorize bool - LogVerboseHTTP bool + AppVersion string + CacheTTL time.Duration + Config tokenGetter + EnableCache bool + Log io.Writer + LogColorize bool + LogVerboseHTTP bool + SkipDefaultHeaders bool } func NewHTTPClient(opts HTTPClientOptions) (*http.Client, error) { // Provide invalid host, and token values so gh.HTTPClient will not automatically resolve them. // The real host and token are inserted at request time. clientOpts := ghAPI.ClientOptions{ - Host: "none", - AuthToken: "none", - LogIgnoreEnv: true, + Host: "none", + AuthToken: "none", + LogIgnoreEnv: true, + SkipDefaultHeaders: opts.SkipDefaultHeaders, } debugEnabled, debugValue := utils.IsDebugEnabled() diff --git a/api/http_client_test.go b/api/http_client_test.go index ce20a2684a4..9a915837fe8 100644 --- a/api/http_client_test.go +++ b/api/http_client_test.go @@ -18,15 +18,16 @@ import ( func TestNewHTTPClient(t *testing.T) { type args struct { - config tokenGetter - appVersion string - logVerboseHTTP bool + config tokenGetter + appVersion string + logVerboseHTTP bool + skipDefaultHeaders bool } tests := []struct { name string args args host string - wantHeader map[string]string + wantHeader map[string][]string wantStderr string }{ { @@ -37,10 +38,10 @@ func TestNewHTTPClient(t *testing.T) { logVerboseHTTP: false, }, host: "github.com", - wantHeader: map[string]string{ - "authorization": "token MYTOKEN", - "user-agent": "GitHub CLI v1.2.3", - "accept": "application/vnd.github.merge-info-preview+json, application/vnd.github.nebula-preview", + wantHeader: map[string][]string{ + "authorization": {"token MYTOKEN"}, + "user-agent": {"GitHub CLI v1.2.3"}, + "accept": {"application/vnd.github.merge-info-preview+json, application/vnd.github.nebula-preview"}, }, wantStderr: "", }, @@ -51,10 +52,10 @@ func TestNewHTTPClient(t *testing.T) { appVersion: "v1.2.3", }, host: "example.com", - wantHeader: map[string]string{ - "authorization": "token GHETOKEN", - "user-agent": "GitHub CLI v1.2.3", - "accept": "application/vnd.github.merge-info-preview+json, application/vnd.github.nebula-preview", + wantHeader: map[string][]string{ + "authorization": {"token GHETOKEN"}, + "user-agent": {"GitHub CLI v1.2.3"}, + "accept": {"application/vnd.github.merge-info-preview+json, application/vnd.github.nebula-preview"}, }, wantStderr: "", }, @@ -66,10 +67,10 @@ func TestNewHTTPClient(t *testing.T) { logVerboseHTTP: false, }, host: "github.com", - wantHeader: map[string]string{ - "authorization": "", - "user-agent": "GitHub CLI v1.2.3", - "accept": "application/vnd.github.merge-info-preview+json, application/vnd.github.nebula-preview", + wantHeader: map[string][]string{ + "authorization": nil, // should not be set + "user-agent": {"GitHub CLI v1.2.3"}, + "accept": {"application/vnd.github.merge-info-preview+json, application/vnd.github.nebula-preview"}, }, wantStderr: "", }, @@ -81,10 +82,10 @@ func TestNewHTTPClient(t *testing.T) { logVerboseHTTP: false, }, host: "example.com", - wantHeader: map[string]string{ - "authorization": "", - "user-agent": "GitHub CLI v1.2.3", - "accept": "application/vnd.github.merge-info-preview+json, application/vnd.github.nebula-preview", + wantHeader: map[string][]string{ + "authorization": nil, // should not be set + "user-agent": {"GitHub CLI v1.2.3"}, + "accept": {"application/vnd.github.merge-info-preview+json, application/vnd.github.nebula-preview"}, }, wantStderr: "", }, @@ -96,10 +97,10 @@ func TestNewHTTPClient(t *testing.T) { logVerboseHTTP: true, }, host: "github.com", - wantHeader: map[string]string{ - "authorization": "token MYTOKEN", - "user-agent": "GitHub CLI v1.2.3", - "accept": "application/vnd.github.merge-info-preview+json, application/vnd.github.nebula-preview", + wantHeader: map[string][]string{ + "authorization": {"token MYTOKEN"}, + "user-agent": {"GitHub CLI v1.2.3"}, + "accept": {"application/vnd.github.merge-info-preview+json, application/vnd.github.nebula-preview"}, }, wantStderr: heredoc.Doc(` * Request at