github.com/argoproj/argo-cd/v3@v3.2.1/cmd/argocd/commands/context_test.go (about) 1 package commands 2 3 import ( 4 "os" 5 "testing" 6 7 "github.com/stretchr/testify/assert" 8 "github.com/stretchr/testify/require" 9 10 "github.com/argoproj/argo-cd/v3/util/localconfig" 11 ) 12 13 const testConfig = `contexts: 14 - name: argocd1.example.com:443 15 server: argocd1.example.com:443 16 user: argocd1.example.com:443 17 - name: argocd2.example.com:443 18 server: argocd2.example.com:443 19 user: argocd2.example.com:443 20 - name: localhost:8080 21 server: localhost:8080 22 user: localhost:8080 23 current-context: localhost:8080 24 servers: 25 - server: argocd1.example.com:443 26 - server: argocd2.example.com:443 27 - plain-text: true 28 server: localhost:8080 29 users: 30 - auth-token: vErrYS3c3tReFRe$hToken 31 name: argocd1.example.com:443 32 refresh-token: vErrYS3c3tReFRe$hToken 33 - auth-token: vErrYS3c3tReFRe$hToken 34 name: argocd2.example.com:443 35 refresh-token: vErrYS3c3tReFRe$hToken 36 - auth-token: vErrYS3c3tReFRe$hToken 37 name: localhost:8080` 38 39 const testConfigFilePath = "./testdata/local.config" 40 41 func TestContextDelete(t *testing.T) { 42 // Write the test config file 43 err := os.WriteFile(testConfigFilePath, []byte(testConfig), os.ModePerm) 44 require.NoError(t, err) 45 defer os.Remove(testConfigFilePath) 46 47 err = os.Chmod(testConfigFilePath, 0o600) 48 require.NoError(t, err, "Could not change the file permission to 0600 %v", err) 49 localConfig, err := localconfig.ReadLocalConfig(testConfigFilePath) 50 require.NoError(t, err) 51 assert.Equal(t, "localhost:8080", localConfig.CurrentContext) 52 assert.Contains(t, localConfig.Contexts, localconfig.ContextRef{Name: "localhost:8080", Server: "localhost:8080", User: "localhost:8080"}) 53 54 // Delete a non-current context 55 err = deleteContext("argocd1.example.com:443", testConfigFilePath) 56 require.NoError(t, err) 57 58 localConfig, err = localconfig.ReadLocalConfig(testConfigFilePath) 59 require.NoError(t, err) 60 assert.Equal(t, "localhost:8080", localConfig.CurrentContext) 61 assert.NotContains(t, localConfig.Contexts, localconfig.ContextRef{Name: "argocd1.example.com:443", Server: "argocd1.example.com:443", User: "argocd1.example.com:443"}) 62 assert.NotContains(t, localConfig.Servers, localconfig.Server{Server: "argocd1.example.com:443"}) 63 assert.NotContains(t, localConfig.Users, localconfig.User{AuthToken: "vErrYS3c3tReFRe$hToken", Name: "argocd1.example.com:443"}) 64 assert.Contains(t, localConfig.Contexts, localconfig.ContextRef{Name: "argocd2.example.com:443", Server: "argocd2.example.com:443", User: "argocd2.example.com:443"}) 65 assert.Contains(t, localConfig.Contexts, localconfig.ContextRef{Name: "localhost:8080", Server: "localhost:8080", User: "localhost:8080"}) 66 67 // Delete the current context 68 err = deleteContext("localhost:8080", testConfigFilePath) 69 require.NoError(t, err) 70 71 localConfig, err = localconfig.ReadLocalConfig(testConfigFilePath) 72 require.NoError(t, err) 73 assert.Empty(t, localConfig.CurrentContext) 74 assert.NotContains(t, localConfig.Contexts, localconfig.ContextRef{Name: "localhost:8080", Server: "localhost:8080", User: "localhost:8080"}) 75 assert.NotContains(t, localConfig.Servers, localconfig.Server{PlainText: true, Server: "localhost:8080"}) 76 assert.NotContains(t, localConfig.Users, localconfig.User{AuthToken: "vErrYS3c3tReFRe$hToken", Name: "localhost:8080"}) 77 assert.Contains(t, localConfig.Contexts, localconfig.ContextRef{Name: "argocd2.example.com:443", Server: "argocd2.example.com:443", User: "argocd2.example.com:443"}) 78 }