77 "time"
88
99 "github.com/stretchr/testify/assert"
10+ "github.com/stretchr/testify/require"
1011
1112 "github.com/UpCloudLtd/packer-plugin-upcloud/builder/upcloud"
1213 "github.com/UpCloudLtd/packer-plugin-upcloud/internal/driver"
@@ -65,8 +66,10 @@ func TestConfig_Prepare_BothAuthMethods(t *testing.T) {
6566 }
6667
6768 warns , err := c .Prepare (raws ... )
68- assert .Error (t , err )
69- assert .Contains (t , err .Error (), "you cannot specify both username/password and token" )
69+ assert .NoError (t , err )
70+ assert .Equal (t , "test-api-token" , c .Token )
71+ assert .Equal (t , "" , c .Username )
72+ assert .Equal (t , "" , c .Password )
7073 assert .Empty (t , warns )
7174}
7275
@@ -81,8 +84,8 @@ func TestConfig_Prepare_NoAuthMethods(t *testing.T) {
8184 }
8285
8386 warns , err := c .Prepare (raws ... )
84- assert .Error (t , err )
85- assert .Contains (t , err .Error (), "authentication required: specify either username and password, or token " )
87+ require .Error (t , err )
88+ assert .Contains (t , err .Error (), "credentials not found " )
8689 assert .Empty (t , warns )
8790}
8891
@@ -98,8 +101,8 @@ func TestConfig_Prepare_OnlyUsername(t *testing.T) {
98101 }
99102
100103 warns , err := c .Prepare (raws ... )
101- assert .Error (t , err )
102- assert .Contains (t , err .Error (), "'password' must be specified when using username/password authentication " )
104+ require .Error (t , err )
105+ assert .Contains (t , err .Error (), "credentials not found " )
103106 assert .Empty (t , warns )
104107}
105108
@@ -115,8 +118,8 @@ func TestConfig_Prepare_OnlyPassword(t *testing.T) {
115118 }
116119
117120 warns , err := c .Prepare (raws ... )
118- assert .Error (t , err )
119- assert .Contains (t , err .Error (), "'username' must be specified when using username/password authentication " )
121+ require .Error (t , err )
122+ assert .Contains (t , err .Error (), "credentials not found " )
120123 assert .Empty (t , warns )
121124}
122125
@@ -283,25 +286,45 @@ func TestConfig_setEnv_APIToken(t *testing.T) {
283286 t .Setenv (driver .EnvConfigAPIToken , "test-token" )
284287
285288 c := & upcloud.Config {}
286- c .SetEnv ()
289+ err := c .SetEnv ()
290+ assert .NoError (t , err )
287291 assert .Equal (t , "test-token" , c .Token )
288292}
289293
290- func TestConfig_setEnv_DoesNotOverrideExisting (t * testing.T ) {
294+ func TestConfig_setEnv_DoesNotOverrideExisting_basic (t * testing.T ) {
291295 t .Setenv (driver .EnvConfigUsername , "env-user" )
292296 t .Setenv (driver .EnvConfigPassword , "env-pass" )
293297 t .Setenv (driver .EnvConfigAPIToken , "env-token" )
294298
295299 c := & upcloud.Config {
296300 Username : "existing-user" ,
297301 Password : "existing-pass" ,
298- Token : "existing-token" ,
299302 }
300- c .SetEnv ()
303+ err := c .SetEnv ()
304+ assert .NoError (t , err )
301305
302306 // Should not override existing values
303307 assert .Equal (t , "existing-user" , c .Username )
304308 assert .Equal (t , "existing-pass" , c .Password )
309+ assert .Equal (t , "" , c .Token )
310+ }
311+
312+ func TestConfig_setEnv_DoesNotOverrideExisting_token (t * testing.T ) {
313+ t .Setenv (driver .EnvConfigUsername , "env-user" )
314+ t .Setenv (driver .EnvConfigPassword , "env-pass" )
315+ t .Setenv (driver .EnvConfigAPIToken , "env-token" )
316+
317+ c := & upcloud.Config {
318+ Username : "existing-user" ,
319+ Password : "existing-pass" ,
320+ Token : "existing-token" ,
321+ }
322+ err := c .SetEnv ()
323+ assert .NoError (t , err )
324+
325+ // Should not override existing values
326+ assert .Equal (t , "" , c .Username )
327+ assert .Equal (t , "" , c .Password )
305328 assert .Equal (t , "existing-token" , c .Token )
306329}
307330
0 commit comments