@@ -18,15 +18,16 @@ import (
1818
1919func TestNewHTTPClient (t * testing.T ) {
2020 type args struct {
21- config tokenGetter
22- appVersion string
23- logVerboseHTTP bool
21+ config tokenGetter
22+ appVersion string
23+ logVerboseHTTP bool
24+ skipDefaultHeaders bool
2425 }
2526 tests := []struct {
2627 name string
2728 args args
2829 host string
29- wantHeader map [string ]string
30+ wantHeader map [string ][] string
3031 wantStderr string
3132 }{
3233 {
@@ -37,10 +38,10 @@ func TestNewHTTPClient(t *testing.T) {
3738 logVerboseHTTP : false ,
3839 },
3940 host : "github.com" ,
40- wantHeader : map [string ]string {
41- "authorization" : "token MYTOKEN" ,
42- "user-agent" : "GitHub CLI v1.2.3" ,
43- "accept" : "application/vnd.github.merge-info-preview+json, application/vnd.github.nebula-preview" ,
41+ wantHeader : map [string ][] string {
42+ "authorization" : { "token MYTOKEN" } ,
43+ "user-agent" : { "GitHub CLI v1.2.3" } ,
44+ "accept" : { "application/vnd.github.merge-info-preview+json, application/vnd.github.nebula-preview" } ,
4445 },
4546 wantStderr : "" ,
4647 },
@@ -51,10 +52,10 @@ func TestNewHTTPClient(t *testing.T) {
5152 appVersion : "v1.2.3" ,
5253 },
5354 host : "example.com" ,
54- wantHeader : map [string ]string {
55- "authorization" : "token GHETOKEN" ,
56- "user-agent" : "GitHub CLI v1.2.3" ,
57- "accept" : "application/vnd.github.merge-info-preview+json, application/vnd.github.nebula-preview" ,
55+ wantHeader : map [string ][] string {
56+ "authorization" : { "token GHETOKEN" } ,
57+ "user-agent" : { "GitHub CLI v1.2.3" } ,
58+ "accept" : { "application/vnd.github.merge-info-preview+json, application/vnd.github.nebula-preview" } ,
5859 },
5960 wantStderr : "" ,
6061 },
@@ -66,10 +67,10 @@ func TestNewHTTPClient(t *testing.T) {
6667 logVerboseHTTP : false ,
6768 },
6869 host : "github.com" ,
69- wantHeader : map [string ]string {
70- "authorization" : "" ,
71- "user-agent" : "GitHub CLI v1.2.3" ,
72- "accept" : "application/vnd.github.merge-info-preview+json, application/vnd.github.nebula-preview" ,
70+ wantHeader : map [string ][] string {
71+ "authorization" : nil , // should not be set
72+ "user-agent" : { "GitHub CLI v1.2.3" } ,
73+ "accept" : { "application/vnd.github.merge-info-preview+json, application/vnd.github.nebula-preview" } ,
7374 },
7475 wantStderr : "" ,
7576 },
@@ -81,10 +82,10 @@ func TestNewHTTPClient(t *testing.T) {
8182 logVerboseHTTP : false ,
8283 },
8384 host : "example.com" ,
84- wantHeader : map [string ]string {
85- "authorization" : "" ,
86- "user-agent" : "GitHub CLI v1.2.3" ,
87- "accept" : "application/vnd.github.merge-info-preview+json, application/vnd.github.nebula-preview" ,
85+ wantHeader : map [string ][] string {
86+ "authorization" : nil , // should not be set
87+ "user-agent" : { "GitHub CLI v1.2.3" } ,
88+ "accept" : { "application/vnd.github.merge-info-preview+json, application/vnd.github.nebula-preview" } ,
8889 },
8990 wantStderr : "" ,
9091 },
@@ -96,10 +97,10 @@ func TestNewHTTPClient(t *testing.T) {
9697 logVerboseHTTP : true ,
9798 },
9899 host : "github.com" ,
99- wantHeader : map [string ]string {
100- "authorization" : "token MYTOKEN" ,
101- "user-agent" : "GitHub CLI v1.2.3" ,
102- "accept" : "application/vnd.github.merge-info-preview+json, application/vnd.github.nebula-preview" ,
100+ wantHeader : map [string ][] string {
101+ "authorization" : { "token MYTOKEN" } ,
102+ "user-agent" : { "GitHub CLI v1.2.3" } ,
103+ "accept" : { "application/vnd.github.merge-info-preview+json, application/vnd.github.nebula-preview" } ,
103104 },
104105 wantStderr : heredoc .Doc (`
105106 * Request at <time>
@@ -115,6 +116,34 @@ func TestNewHTTPClient(t *testing.T) {
115116 < HTTP/1.1 204 No Content
116117 < Date: <time>
117118
119+ * Request took <duration>
120+ ` ),
121+ },
122+ {
123+ name : "respect skip default headers option" ,
124+ args : args {
125+ appVersion : "v1.2.3" ,
126+ logVerboseHTTP : true ,
127+ skipDefaultHeaders : true ,
128+ },
129+ host : "github.com" ,
130+ wantHeader : map [string ][]string {
131+ "accept" : nil ,
132+ "authorization" : nil ,
133+ "content-type" : nil ,
134+ "user-agent" : {"GitHub CLI v1.2.3" },
135+ },
136+ wantStderr : heredoc .Doc (`
137+ * Request at <time>
138+ * Request to http://<host>:<port>
139+ > GET / HTTP/1.1
140+ > Host: github.com
141+ > Time-Zone: <timezone>
142+ > User-Agent: GitHub CLI v1.2.3
143+
144+ < HTTP/1.1 204 No Content
145+ < Date: <time>
146+
118147 * Request took <duration>
119148 ` ),
120149 },
@@ -131,10 +160,11 @@ func TestNewHTTPClient(t *testing.T) {
131160 t .Run (tt .name , func (t * testing.T ) {
132161 ios , _ , _ , stderr := iostreams .Test ()
133162 client , err := NewHTTPClient (HTTPClientOptions {
134- AppVersion : tt .args .appVersion ,
135- Config : tt .args .config ,
136- Log : ios .ErrOut ,
137- LogVerboseHTTP : tt .args .logVerboseHTTP ,
163+ AppVersion : tt .args .appVersion ,
164+ Config : tt .args .config ,
165+ Log : ios .ErrOut ,
166+ LogVerboseHTTP : tt .args .logVerboseHTTP ,
167+ SkipDefaultHeaders : tt .args .skipDefaultHeaders ,
138168 })
139169 require .NoError (t , err )
140170
@@ -148,7 +178,7 @@ func TestNewHTTPClient(t *testing.T) {
148178 require .NoError (t , err )
149179
150180 for name , value := range tt .wantHeader {
151- assert .Equal (t , value , gotReq .Header .Get (name ), name )
181+ assert .Equal (t , value , gotReq .Header .Values (name ), name )
152182 }
153183
154184 assert .Equal (t , 204 , res .StatusCode )
0 commit comments