github.com/jfrog/jfrog-cli-go@v1.22.1-0.20200318093948-4826ef344ffd/utils/config/config_test.go (about) 1 package config 2 3 import ( 4 "encoding/json" 5 "errors" 6 "fmt" 7 "github.com/jfrog/jfrog-cli-go/utils/cliutils" 8 "os" 9 "path/filepath" 10 "reflect" 11 "testing" 12 ) 13 14 func TestCovertConfigV0ToV1(t *testing.T) { 15 configV0 := ` 16 { 17 "artifactory": { 18 "url": "http://localhost:8080/artifactory/", 19 "user": "user", 20 "password": "password" 21 }, 22 "bintray": { 23 "user": "user", 24 "key": "api-key", 25 "defPackageLicense": "Apache-2.0" 26 } 27 } 28 ` 29 content, err := convertIfNecessary([]byte(configV0)) 30 if err != nil { 31 t.Error(err.Error()) 32 } 33 configV1 := new(ConfigV1) 34 err = json.Unmarshal(content, &configV1) 35 if err != nil { 36 t.Error(err.Error()) 37 } 38 assertionHelper(configV1, t) 39 } 40 41 func TestCovertConfigV0ToV1EmptyArtifactory(t *testing.T) { 42 configV0 := ` 43 { 44 "bintray": { 45 "user": "user", 46 "key": "api-key", 47 "defPackageLicense": "Apache-2.0" 48 } 49 } 50 ` 51 content, err := convertIfNecessary([]byte(configV0)) 52 if err != nil { 53 t.Error(err.Error()) 54 } 55 configV1 := new(ConfigV1) 56 err = json.Unmarshal(content, &configV1) 57 if err != nil { 58 t.Error(err.Error()) 59 } 60 } 61 62 func TestConfigV1EmptyArtifactory(t *testing.T) { 63 configV0 := ` 64 { 65 "bintray": { 66 "user": "user", 67 "key": "api-key", 68 "defPackageLicense": "Apache-2.0" 69 }, 70 "Version": "1" 71 } 72 ` 73 content, err := convertIfNecessary([]byte(configV0)) 74 if err != nil { 75 t.Error(err.Error()) 76 } 77 configV1 := new(ConfigV1) 78 err = json.Unmarshal(content, &configV1) 79 if err != nil { 80 t.Error(err.Error()) 81 } 82 } 83 84 func TestConfigV1Covert(t *testing.T) { 85 config := ` 86 { 87 "artifactory": [ 88 { 89 "url": "http://localhost:8080/artifactory/", 90 "user": "user", 91 "password": "password", 92 "serverId": "` + DefaultServerId + `", 93 "isDefault": true 94 } 95 ], 96 "bintray": { 97 "user": "user", 98 "key": "api-key", 99 "defPackageLicense": "Apache-2.0" 100 }, 101 "Version": "1" 102 } 103 ` 104 content, err := convertIfNecessary([]byte(config)) 105 if err != nil { 106 t.Error(err.Error()) 107 } 108 configV1 := new(ConfigV1) 109 err = json.Unmarshal(content, &configV1) 110 if err != nil { 111 t.Error(err.Error()) 112 } 113 assertionHelper(configV1, t) 114 } 115 116 func TestGetArtifactoriesFromConfig(t *testing.T) { 117 config := ` 118 { 119 "artifactory": [ 120 { 121 "url": "http://localhost:8080/artifactory/", 122 "user": "user", 123 "password": "password", 124 "serverId": "name", 125 "isDefault": true 126 }, 127 { 128 "url": "http://localhost:8080/artifactory/", 129 "user": "user", 130 "password": "password", 131 "serverId": "notDefault" 132 } 133 ], 134 "bintray": { 135 "user": "user", 136 "key": "api-key", 137 "defPackageLicense": "Apache-2.0" 138 }, 139 "Version": "1" 140 } 141 ` 142 content, err := convertIfNecessary([]byte(config)) 143 if err != nil { 144 t.Error(err.Error()) 145 } 146 configV1 := new(ConfigV1) 147 err = json.Unmarshal(content, &configV1) 148 if err != nil { 149 t.Error(err.Error()) 150 } 151 serverDetails, err := GetDefaultConfiguredArtifactoryConf(configV1.Artifactory) 152 if err != nil { 153 t.Error(err.Error()) 154 } 155 if serverDetails.ServerId != "name" { 156 t.Error(errors.New("Failed to get default server.")) 157 } 158 159 serverDetails, err = getArtifactoryConfByServerId("notDefault", configV1.Artifactory) 160 if err != nil { 161 t.Error(err.Error()) 162 } 163 if serverDetails.ServerId != "notDefault" { 164 t.Error(errors.New("Failed to get server by name.")) 165 } 166 } 167 168 func TestGetJfrogDependenciesPath(t *testing.T) { 169 // Check default value of dependencies path, should be JFROG_CLI_HOME/dependencies 170 dependenciesPath, err := GetJfrogDependenciesPath() 171 if err != nil { 172 t.Error(err.Error()) 173 } 174 jfrogHomeDir, err := cliutils.GetJfrogHomeDir() 175 if err != nil { 176 t.Error(err.Error()) 177 } 178 expectedDependenciesPath := filepath.Join(jfrogHomeDir, JfrogDependencies) 179 if expectedDependenciesPath != dependenciesPath { 180 t.Error(errors.New(fmt.Sprintf("Dependencies Path should be %s (actual path: %s)", expectedDependenciesPath, dependenciesPath))) 181 } 182 // Check dependencies path when JFROG_DEPENDENCIES_DIR is set, should be JFROG_DEPENDENCIES_DIR/ 183 previousDependenciesDirEnv := os.Getenv(cliutils.DependenciesDir) 184 expectedDependenciesPath = "/tmp/my-dependencies/" 185 err = os.Setenv(cliutils.DependenciesDir, expectedDependenciesPath) 186 if err != nil { 187 t.Error(err.Error()) 188 } 189 defer os.Setenv(cliutils.DependenciesDir, previousDependenciesDirEnv) 190 dependenciesPath, err = GetJfrogDependenciesPath() 191 if expectedDependenciesPath != dependenciesPath { 192 t.Error(errors.New(fmt.Sprintf("Dependencies Path should be %s (actual path: %s)", expectedDependenciesPath, dependenciesPath))) 193 } 194 } 195 196 func assertionHelper(configV1 *ConfigV1, t *testing.T) { 197 if configV1.Version != "1" { 198 t.Error(errors.New("Failed to convert config version.")) 199 } 200 rtConverted := configV1.Artifactory 201 if rtConverted == nil { 202 t.Error(errors.New("Empty Artifactory config!.")) 203 } 204 if len(rtConverted) != 1 { 205 t.Error(errors.New("Conversion failed!")) 206 } 207 rtConfigType := reflect.TypeOf(rtConverted) 208 if rtConfigType.String() != "[]*config.ArtifactoryDetails" { 209 t.Error(errors.New("Couldn't convert to Array.")) 210 } 211 if rtConverted[0].IsDefault != true { 212 t.Error(errors.New("Should be default.")) 213 } 214 if rtConverted[0].ServerId != DefaultServerId { 215 t.Error(errors.New("serverId should be " + DefaultServerId + ".")) 216 } 217 if rtConverted[0].Url != "http://localhost:8080/artifactory/" { 218 t.Error(errors.New("Url shouldn't change.")) 219 } 220 if rtConverted[0].User != "user" { 221 t.Error(errors.New("User shouldn't change.")) 222 } 223 if rtConverted[0].Password != "password" { 224 t.Error(errors.New("Password shouldn't change.")) 225 } 226 }