github.com/skippbox/kompose-origin@v0.0.0-20160524133224-16a9dca7bac2/project/client_factory_test.go (about) 1 package project 2 3 import ( 4 "os" 5 "testing" 6 7 "github.com/docker/libcompose/docker/client" 8 ) 9 10 func TestFactoryWithEnv(t *testing.T) { 11 cases := []struct { 12 envs map[string]string 13 expectedError string 14 expectedVersion string 15 }{ 16 { 17 envs: map[string]string{}, 18 expectedVersion: "v1.20", 19 }, 20 { 21 envs: map[string]string{ 22 "DOCKER_CERT_PATH": "invalid/path", 23 }, 24 expectedError: "Could not load X509 key pair: open invalid/path/cert.pem: no such file or directory. Make sure the key is not encrypted", 25 expectedVersion: "v1.20", 26 }, 27 { 28 envs: map[string]string{ 29 "DOCKER_API_VERSION": "1.22", 30 }, 31 expectedVersion: "1.22", 32 }, 33 } 34 for _, c := range cases { 35 recoverEnvs := setupEnvs(t, c.envs) 36 factory, err := NewDefaultClientFactory(client.Options{}) 37 if c.expectedError != "" { 38 if err == nil || err.Error() != c.expectedError { 39 t.Errorf("expected an error %s, got %s, for %v", c.expectedError, err.Error(), c) 40 } 41 } else { 42 if err != nil { 43 t.Error(err) 44 } 45 apiclient := factory.Create(nil) 46 version := apiclient.ClientVersion() 47 if version != c.expectedVersion { 48 t.Errorf("expected %s, got %s, for %v", c.expectedVersion, version, c) 49 } 50 } 51 recoverEnvs(t) 52 } 53 } 54 55 func TestFactoryWithOptions(t *testing.T) { 56 cases := []struct { 57 options client.Options 58 expectedError string 59 expectedVersion string 60 }{ 61 { 62 options: client.Options{ 63 Host: "host", 64 }, 65 expectedError: "unable to parse docker host `host`", 66 }, 67 { 68 options: client.Options{ 69 Host: "invalid://host", 70 }, 71 expectedVersion: "v1.20", 72 }, 73 { 74 options: client.Options{ 75 Host: "tcp://host", 76 APIVersion: "v1.22", 77 }, 78 expectedVersion: "v1.22", 79 }, 80 } 81 for _, c := range cases { 82 factory, err := NewDefaultClientFactory(c.options) 83 if c.expectedError != "" { 84 if err == nil || err.Error() != c.expectedError { 85 t.Errorf("expected an error %s, got %s, for %v", c.expectedError, err.Error(), c) 86 } 87 } else { 88 if err != nil { 89 t.Error(err) 90 } 91 apiclient := factory.Create(nil) 92 version := apiclient.ClientVersion() 93 if version != c.expectedVersion { 94 t.Errorf("expected %s, got %s, for %v", c.expectedVersion, version, c) 95 } 96 } 97 } 98 } 99 100 func setupEnvs(t *testing.T, envs map[string]string) func(*testing.T) { 101 oldEnvs := map[string]string{} 102 for key, value := range envs { 103 oldEnv := os.Getenv(key) 104 oldEnvs[key] = oldEnv 105 err := os.Setenv(key, value) 106 if err != nil { 107 t.Error(err) 108 } 109 } 110 return func(t *testing.T) { 111 for key, value := range oldEnvs { 112 err := os.Setenv(key, value) 113 if err != nil { 114 t.Error(err) 115 } 116 } 117 } 118 }