github.com/jfrog/jfrog-cli-core/v2@v2.52.0/artifactory/commands/yarn/yarn_test.go (about) 1 package yarn 2 3 import ( 4 "os" 5 "testing" 6 7 "github.com/jfrog/jfrog-client-go/utils/tests" 8 "github.com/stretchr/testify/assert" 9 ) 10 11 func TestValidateSupportedCommand(t *testing.T) { 12 yarnCmd := NewYarnCommand() 13 14 testCases := []struct { 15 args []string 16 valid bool 17 }{ 18 {[]string{}, true}, 19 {[]string{"--json"}, true}, 20 {[]string{"npm", "publish", "--json"}, false}, 21 {[]string{"npm", "--json", "publish"}, false}, 22 {[]string{"npm", "tag", "list"}, false}, 23 {[]string{"npm", "info", "package-name"}, true}, 24 {[]string{"npm", "whoami"}, true}, 25 } 26 27 for _, testCase := range testCases { 28 yarnCmd.yarnArgs = testCase.args 29 err := yarnCmd.validateSupportedCommand() 30 assert.Equal(t, testCase.valid, err == nil, "Test args:", testCase.args) 31 } 32 } 33 34 func TestSetAndRestoreEnvironmentVariables(t *testing.T) { 35 const jfrogCliTestingEnvVar = "JFROG_CLI_ENV_VAR_FOR_TESTING" 36 // Check backup and restore of an existing variable 37 setEnvCallback := tests.SetEnvWithCallbackAndAssert(t, jfrogCliTestingEnvVar, "abc") 38 backupEnvsMap := make(map[string]*string) 39 oldVal, err := backupAndSetEnvironmentVariable(jfrogCliTestingEnvVar, "new-value") 40 assert.NoError(t, err) 41 assert.Equal(t, "new-value", os.Getenv(jfrogCliTestingEnvVar)) 42 backupEnvsMap[jfrogCliTestingEnvVar] = &oldVal 43 assert.NoError(t, restoreEnvironmentVariables(backupEnvsMap)) 44 assert.Equal(t, "abc", os.Getenv(jfrogCliTestingEnvVar)) 45 46 // Check backup and restore of a variable that doesn't exist 47 setEnvCallback() 48 oldVal, err = backupAndSetEnvironmentVariable(jfrogCliTestingEnvVar, "another-value") 49 assert.NoError(t, err) 50 assert.Equal(t, "another-value", os.Getenv(jfrogCliTestingEnvVar)) 51 backupEnvsMap[jfrogCliTestingEnvVar] = &oldVal 52 err = restoreEnvironmentVariables(backupEnvsMap) 53 assert.NoError(t, err) 54 _, exist := os.LookupEnv(jfrogCliTestingEnvVar) 55 assert.False(t, exist) 56 } 57 58 func TestExtractAuthIdentFromNpmAuth(t *testing.T) { 59 testCases := []struct { 60 responseFromArtifactory string 61 expectedExtractedAuth string 62 }{ 63 {"_auth = Z290Y2hhISB5b3UgcmVhbGx5IHRoaW5rIGkgd291bGQgcHV0IHJlYWwgY3JlZGVudGlhbHMgaGVyZT8=\nalways-auth = true\nemail = notexist@mail.com\n", "Z290Y2hhISB5b3UgcmVhbGx5IHRoaW5rIGkgd291bGQgcHV0IHJlYWwgY3JlZGVudGlhbHMgaGVyZT8="}, 64 {"always-auth=true\nemail=notexist@mail.com\n_auth=TGVhcCBhbmQgdGhlIHJlc3Qgd2lsbCBmb2xsb3c=\n", "TGVhcCBhbmQgdGhlIHJlc3Qgd2lsbCBmb2xsb3c="}, 65 } 66 67 for _, testCase := range testCases { 68 actualExtractedAuth, err := extractAuthIdentFromNpmAuth(testCase.responseFromArtifactory) 69 assert.NoError(t, err) 70 assert.Equal(t, testCase.expectedExtractedAuth, actualExtractedAuth) 71 } 72 }