@@ -64,3 +64,57 @@ func TestDeleteContext(t *testing.T) {
6464 _ , err = config .ReadLocalConfig (testConfigFilePath )
6565 require .NoError (t , err )
6666}
67+
68+ func TestDeleteNamedContextRemovesReferencedUserAndAuth (t * testing.T ) {
69+ configPath := t .TempDir () + "/config"
70+ localConfig := `current-context: staging
71+ contexts:
72+ - name: dev
73+ server: http://localhost:8080
74+ user: http://localhost:8080
75+ instance: ""
76+ - name: staging
77+ server: http://localhost:8083
78+ user: http://localhost:8083
79+ instance: ""
80+ servers:
81+ - name: ""
82+ server: http://localhost:8080
83+ insecureTLS: true
84+ keycloakEnable: true
85+ - name: ""
86+ server: http://localhost:8083
87+ insecureTLS: true
88+ keycloakEnable: true
89+ users:
90+ - name: http://localhost:8080
91+ auth-token: stale-token
92+ refresh-token: stale-refresh-token
93+ - name: http://localhost:8083
94+ auth-token: ""
95+ refresh-token: ""
96+ auths:
97+ - server: http://localhost:8080
98+ clientid: my-client
99+ clientsecret: my-secret
100+ `
101+
102+ err := os .WriteFile (configPath , []byte (localConfig ), os .ModePerm )
103+ require .NoError (t , err )
104+ err = os .Chmod (configPath , 0o600 )
105+ require .NoError (t , err )
106+
107+ err = deleteContext ("dev" , configPath )
108+ require .NoError (t , err )
109+
110+ localCfg , err := config .ReadLocalConfig (configPath )
111+ require .NoError (t , err )
112+ require .NotNil (t , localCfg )
113+
114+ assert .Equal (t , "staging" , localCfg .CurrentContext )
115+ assert .NotContains (t , localCfg .Contexts , config.ContextRef {Name : "dev" , Server : "http://localhost:8080" , User : "http://localhost:8080" , Instance : "" })
116+ assert .NotContains (t , localCfg .Servers , config.Server {Server : "http://localhost:8080" , InsecureTLS : true , KeycloakEnable : true })
117+ assert .NotContains (t , localCfg .Users , config.User {Name : "http://localhost:8080" , AuthToken : "stale-token" , RefreshToken : "stale-refresh-token" })
118+ assert .NotContains (t , localCfg .Auths , config.Auth {Server : "http://localhost:8080" , ClientId : "my-client" , ClientSecret : "my-secret" })
119+ assert .Contains (t , localCfg .Contexts , config.ContextRef {Name : "staging" , Server : "http://localhost:8083" , User : "http://localhost:8083" , Instance : "" })
120+ }
0 commit comments