@@ -165,6 +165,51 @@ func TestEnvironmentVariablePrecedence(t *testing.T) {
165165 assert .Equal (t , "env-key" , apiKey )
166166}
167167
168+ func TestCompletionAPIKeyPrecedence (t * testing.T ) {
169+ // Create temp directory
170+ tempDir , err := os .MkdirTemp ("" , "cloudamqp-test" )
171+ assert .NoError (t , err )
172+ defer os .RemoveAll (tempDir )
173+
174+ // Override home directory for test
175+ originalHome := os .Getenv ("HOME" )
176+ os .Setenv ("HOME" , tempDir )
177+ defer os .Setenv ("HOME" , originalHome )
178+
179+ // Clear any existing env var
180+ originalEnvKey := os .Getenv ("CLOUDAMQP_APIKEY" )
181+ os .Unsetenv ("CLOUDAMQP_APIKEY" )
182+ defer func () {
183+ if originalEnvKey != "" {
184+ os .Setenv ("CLOUDAMQP_APIKEY" , originalEnvKey )
185+ }
186+ }()
187+
188+ t .Run ("returns error when no key configured" , func (t * testing.T ) {
189+ _ , err := completionAPIKey ()
190+ assert .Error (t , err )
191+ assert .Contains (t , err .Error (), "API key not configured" )
192+ })
193+
194+ t .Run ("returns key from config file" , func (t * testing.T ) {
195+ err := saveMainAPIKey ("file-key" )
196+ assert .NoError (t , err )
197+
198+ apiKey , err := completionAPIKey ()
199+ assert .NoError (t , err )
200+ assert .Equal (t , "file-key" , apiKey )
201+ })
202+
203+ t .Run ("env var takes precedence over config file" , func (t * testing.T ) {
204+ os .Setenv ("CLOUDAMQP_APIKEY" , "env-key" )
205+ defer os .Unsetenv ("CLOUDAMQP_APIKEY" )
206+
207+ apiKey , err := completionAPIKey ()
208+ assert .NoError (t , err )
209+ assert .Equal (t , "env-key" , apiKey )
210+ })
211+ }
212+
168213func TestInstanceActionsCommand (t * testing.T ) {
169214 cmd := instanceCmd
170215
0 commit comments