@@ -6,8 +6,11 @@ import (
66 "crypto/x509"
77 "fmt"
88 "io/ioutil"
9+ "net/http"
10+ "net/http/httptest"
911 "os"
1012 "runtime"
13+ "strings"
1114 "testing"
1215
1316 cliconfig "github.com/docker/cli/cli/config"
@@ -18,7 +21,6 @@ import (
1821 "github.com/docker/docker/client"
1922 "github.com/pkg/errors"
2023 "gotest.tools/v3/assert"
21- is "gotest.tools/v3/assert/cmp"
2224 "gotest.tools/v3/env"
2325 "gotest.tools/v3/fs"
2426)
@@ -29,42 +31,54 @@ func TestNewAPIClientFromFlags(t *testing.T) {
2931 host = "npipe://./"
3032 }
3133 opts := & flags.CommonOptions {Hosts : []string {host }}
32- configFile := & configfile.ConfigFile {
33- HTTPHeaders : map [string ]string {
34- "My-Header" : "Custom-Value" ,
35- },
36- }
37- apiclient , err := NewAPIClientFromFlags (opts , configFile )
34+ apiClient , err := NewAPIClientFromFlags (opts , & configfile.ConfigFile {})
3835 assert .NilError (t , err )
39- assert .Check (t , is .Equal (host , apiclient .DaemonHost ()))
40-
41- expectedHeaders := map [string ]string {
42- "My-Header" : "Custom-Value" ,
43- "User-Agent" : UserAgent (),
44- }
45- assert .Check (t , is .DeepEqual (expectedHeaders , apiclient .(* client.Client ).CustomHTTPHeaders ()))
46- assert .Check (t , is .Equal (api .DefaultVersion , apiclient .ClientVersion ()))
47- assert .DeepEqual (t , configFile .HTTPHeaders , map [string ]string {"My-Header" : "Custom-Value" })
36+ assert .Equal (t , apiClient .DaemonHost (), host )
37+ assert .Equal (t , apiClient .ClientVersion (), api .DefaultVersion )
4838}
4939
5040func TestNewAPIClientFromFlagsForDefaultSchema (t * testing.T ) {
5141 host := ":2375"
5242 opts := & flags.CommonOptions {Hosts : []string {host }}
43+ apiClient , err := NewAPIClientFromFlags (opts , & configfile.ConfigFile {})
44+ assert .NilError (t , err )
45+ assert .Equal (t , apiClient .DaemonHost (), "tcp://localhost" + host )
46+ assert .Equal (t , apiClient .ClientVersion (), api .DefaultVersion )
47+ }
48+
49+ func TestNewAPIClientFromFlagsWithCustomHeaders (t * testing.T ) {
50+ var received map [string ]string
51+ ts := httptest .NewServer (http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
52+ received = map [string ]string {
53+ "My-Header" : r .Header .Get ("My-Header" ),
54+ "User-Agent" : r .Header .Get ("User-Agent" ),
55+ }
56+ _ , _ = w .Write ([]byte ("OK" ))
57+ }))
58+ defer ts .Close ()
59+ host := strings .Replace (ts .URL , "http://" , "tcp://" , 1 )
60+ opts := & flags.CommonOptions {Hosts : []string {host }}
5361 configFile := & configfile.ConfigFile {
5462 HTTPHeaders : map [string ]string {
5563 "My-Header" : "Custom-Value" ,
5664 },
5765 }
58- apiclient , err := NewAPIClientFromFlags (opts , configFile )
66+
67+ apiClient , err := NewAPIClientFromFlags (opts , configFile )
5968 assert .NilError (t , err )
60- assert .Check (t , is .Equal ("tcp://localhost" + host , apiclient .DaemonHost ()))
69+ assert .Equal (t , apiClient .DaemonHost (), host )
70+ assert .Equal (t , apiClient .ClientVersion (), api .DefaultVersion )
71+
72+ // verify User-Agent is not appended to the configfile. see https://github.com/docker/cli/pull/2756
73+ assert .DeepEqual (t , configFile .HTTPHeaders , map [string ]string {"My-Header" : "Custom-Value" })
6174
6275 expectedHeaders := map [string ]string {
6376 "My-Header" : "Custom-Value" ,
6477 "User-Agent" : UserAgent (),
6578 }
66- assert .Check (t , is .DeepEqual (expectedHeaders , apiclient .(* client.Client ).CustomHTTPHeaders ()))
67- assert .Check (t , is .Equal (api .DefaultVersion , apiclient .ClientVersion ()))
79+ _ , err = apiClient .Ping (context .Background ())
80+ assert .NilError (t , err )
81+ assert .DeepEqual (t , received , expectedHeaders )
6882}
6983
7084func TestNewAPIClientFromFlagsWithAPIVersionFromEnv (t * testing.T ) {
@@ -76,7 +90,7 @@ func TestNewAPIClientFromFlagsWithAPIVersionFromEnv(t *testing.T) {
7690 configFile := & configfile.ConfigFile {}
7791 apiclient , err := NewAPIClientFromFlags (opts , configFile )
7892 assert .NilError (t , err )
79- assert .Check (t , is . Equal ( customVersion , apiclient .ClientVersion ()) )
93+ assert .Equal (t , apiclient .ClientVersion (), customVersion )
8094}
8195
8296type fakeClient struct {
@@ -142,8 +156,8 @@ func TestInitializeFromClient(t *testing.T) {
142156
143157 cli := & DockerCli {client : apiclient }
144158 cli .initializeFromClient ()
145- assert .Check (t , is . DeepEqual ( testcase . expectedServer , cli . serverInfo ) )
146- assert .Check (t , is . Equal ( testcase . negotiated , apiclient .negotiated ) )
159+ assert .DeepEqual (t , cli . serverInfo , testcase . expectedServer )
160+ assert .Equal (t , apiclient . negotiated , testcase .negotiated )
147161 })
148162 }
149163}
@@ -186,7 +200,7 @@ func TestExperimentalCLI(t *testing.T) {
186200 err := cli .Initialize (flags .NewClientOptions ())
187201 assert .NilError (t , err )
188202 // For backward-compatibility, HasExperimental will always be "true"
189- assert .Check (t , is . Equal ( true , cli .ClientInfo ().HasExperimental ) )
203+ assert .Equal (t , cli .ClientInfo ().HasExperimental , true )
190204 })
191205 }
192206}
0 commit comments