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  }