github.com/adevinta/maiao@v0.0.0-20240318133227-b6f9656b5e07/pkg/credentials/env_test.go (about) 1 package credentials_test 2 3 import ( 4 "os" 5 "testing" 6 7 "github.com/stretchr/testify/assert" 8 "github.com/stretchr/testify/require" 9 "github.com/adevinta/maiao/pkg/credentials" 10 "github.com/adevinta/maiao/pkg/system" 11 ) 12 13 func TestWithNoUsernameEnvironmentVariableDefaultIsUsed(t *testing.T) { 14 t.Cleanup(system.Reset) 15 os.Setenv("MY_TOKEN", "some-value") 16 os.Unsetenv("MY_USER") 17 t.Run("When the credentials does not define a default username, x-token is used", func(t *testing.T) { 18 getter := credentials.EnvToken{PasswordKey: "MY_TOKEN"} 19 creds, err := getter.CredentialForHost("somehost.io") 20 require.NoError(t, err) 21 assert.Equal(t, "x-token", creds.Username) 22 }) 23 t.Run("When the credentials does define a default username, it is used", func(t *testing.T) { 24 getter := credentials.EnvToken{PasswordKey: "MY_TOKEN", DefaultUserName: "my-user"} 25 creds, err := getter.CredentialForHost("somehost.io") 26 require.NoError(t, err) 27 assert.Equal(t, "my-user", creds.Username) 28 }) 29 t.Run("When the username environment variable is not defined, default is used", func(t *testing.T) { 30 getter := credentials.EnvToken{PasswordKey: "MY_TOKEN", DefaultUserName: "my-user", UsernameKey: "MY_USER"} 31 creds, err := getter.CredentialForHost("somehost.io") 32 require.NoError(t, err) 33 assert.Equal(t, "my-user", creds.Username) 34 }) 35 t.Run("When the username environment variable is defined, it is used", func(t *testing.T) { 36 os.Setenv("MY_USER", "some-user") 37 getter := credentials.EnvToken{PasswordKey: "MY_TOKEN", DefaultUserName: "my-user", UsernameKey: "MY_USER"} 38 creds, err := getter.CredentialForHost("somehost.io") 39 require.NoError(t, err) 40 assert.Equal(t, "some-user", creds.Username) 41 }) 42 } 43 44 func TestEnvCredentialsRequiredEnvironmentKey(t *testing.T) { 45 getter := credentials.EnvToken{} 46 creds, err := getter.CredentialForHost("somehost.io") 47 require.Error(t, err) 48 assert.Nil(t, creds) 49 } 50 51 func TestEnvCredentialsRetrievesTokenFromEnv(t *testing.T) { 52 t.Cleanup(system.Reset) 53 os.Unsetenv("MY_TOKEN") 54 t.Run("When the the password environment variable is not set, credentials getting fails", func(t *testing.T) { 55 getter := credentials.EnvToken{PasswordKey: "MY_TOKEN"} 56 creds, err := getter.CredentialForHost("somehost.io") 57 require.Error(t, err) 58 assert.Nil(t, creds) 59 }) 60 t.Run("When the credentials don't specify a username, the default is used and proper credentials are retrieved", func(t *testing.T) { 61 os.Setenv("MY_TOKEN", "token-value") 62 getter := credentials.EnvToken{PasswordKey: "MY_TOKEN"} 63 creds, err := getter.CredentialForHost("somehost.io") 64 require.NoError(t, err) 65 assert.Equal(t, "token-value", creds.Password) 66 }) 67 }