gitlab.com/jfprevost/gitlab-runner-notlscheck@v11.11.4+incompatible/helpers/docker/official_docker_client_test.go (about) 1 package docker_helpers 2 3 import ( 4 "context" 5 "net/http" 6 "net/http/httptest" 7 "testing" 8 9 "github.com/stretchr/testify/assert" 10 "github.com/stretchr/testify/require" 11 ) 12 13 func prepareDockerClientAndFakeServer(t *testing.T, handler http.HandlerFunc) (Client, *httptest.Server) { 14 server := httptest.NewServer(handler) 15 16 credentials := DockerCredentials{ 17 Host: server.URL, 18 TLSVerify: false, 19 } 20 21 client, err := New(credentials, "") 22 require.NoError(t, err) 23 24 return client, server 25 } 26 27 func TestWrapError(t *testing.T) { 28 client, server := prepareDockerClientAndFakeServer(t, func(w http.ResponseWriter, r *http.Request) { 29 w.WriteHeader(401) 30 }) 31 defer server.Close() 32 33 ctx, cancel := context.WithCancel(context.Background()) 34 defer cancel() 35 36 _, err := client.Info(ctx) 37 require.Error(t, err, "The request should respond with an error") 38 assert.Regexp(t, "\\(official_docker_client_test.go:\\d\\d:\\d+s\\)", err.Error()) 39 } 40 41 func TestNew_Version(t *testing.T) { 42 cases := []struct { 43 version string 44 host string 45 expectedVersion string 46 }{ 47 { 48 version: "0.11", 49 expectedVersion: "0.11", 50 }, 51 { 52 version: "", 53 expectedVersion: DefaultAPIVersion, 54 }, 55 } 56 57 for _, c := range cases { 58 t.Run(c.expectedVersion, func(t *testing.T) { 59 client, err := New(DockerCredentials{}, c.version) 60 require.NoError(t, err) 61 62 test, ok := client.(*officialDockerClient) 63 assert.True(t, ok) 64 assert.Equal(t, c.expectedVersion, test.client.ClientVersion()) 65 }) 66 } 67 }