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  }