@@ -3,49 +3,66 @@ package azure_login
33import (
44 "encoding/json"
55 "errors"
6+ "os"
67 "strings"
78 "testing"
89
910 "github.com/conplementag/cops-hq/v2/pkg/commands"
11+ "github.com/stretchr/testify/assert"
1012 "github.com/stretchr/testify/mock"
1113)
1214
1315func Test_TriggersServicePrincipalLogin_WhenIdProvided (t * testing.T ) {
1416 // Arrange
17+ t .Cleanup (func () {
18+ os .Unsetenv ("ARM_TENANT_ID" )
19+ os .Unsetenv ("ARM_CLIENT_ID" )
20+ os .Unsetenv ("ARM_CLIENT_SECRET" )
21+ os .Unsetenv ("ARM_USE_MSI" )
22+ })
1523 executor := & loginExecutorMock {}
16- azureLogin := NewWithParams (executor , "abcd " , "secret" , "tenantId" , "" , false )
24+ azureLogin := NewWithParams (executor , "sp-client-id " , "sp-client- secret" , "sp- tenantId" , " " , "" , false )
1725
1826 executor .On ("ExecuteSilent" , mock .MatchedBy (func (command string ) bool {
19- return strings .Contains (command , "--service-principal" ) && strings .Contains (command , "abcd " )
27+ return strings .Contains (command , "--service-principal" ) && strings .Contains (command , "sp-client-id " )
2028 }))
2129
2230 // Act
2331 azureLogin .Login ()
2432
2533 // Assert
34+ assert .Equal (t , os .Getenv ("ARM_TENANT_ID" ), "sp-tenantId" )
35+ assert .Equal (t , os .Getenv ("ARM_CLIENT_ID" ), "sp-client-id" )
36+ assert .Equal (t , os .Getenv ("ARM_CLIENT_SECRET" ), "sp-client-secret" )
37+ assert .Equal (t , os .Getenv ("ARM_USE_MSI" ), "" )
2638 executor .AssertExpectations (t )
2739}
2840
2941func Test_TriggersUserAssignedManagedIdentityLogin_WhenClientIdAndFlagProvided (t * testing.T ) {
3042 // Arrange
43+ CleanUpAfter (t )
3144 executor := & loginExecutorMock {}
32- azureLogin := NewWithParams (executor , "abcd " , "secret" , "tenantId" , "umi-clientid" , true )
45+ azureLogin := NewWithParams (executor , "sp-client-id " , "secret" , "sp- tenantId" , "umi-clientid" , "mi-tenantId " , true )
3346
3447 executor .On ("Execute" , mock .MatchedBy (func (command string ) bool {
35- return command == "az login --identity --username umi-clientid"
48+ return command == "az login --identity --client-id umi-clientid"
3649 }))
3750
3851 // Act
3952 azureLogin .Login ()
4053
4154 // Assert
55+ assert .Equal (t , os .Getenv ("ARM_TENANT_ID" ), "mi-tenantId" )
56+ assert .Equal (t , os .Getenv ("ARM_CLIENT_ID" ), "umi-clientid" )
57+ assert .Equal (t , os .Getenv ("ARM_USE_MSI" ), "true" )
4258 executor .AssertExpectations (t )
4359}
4460
4561func Test_TriggersSystemAssignedManagedIdentityLogin_WhenOnlyFlagProvided (t * testing.T ) {
4662 // Arrange
63+ CleanUpAfter (t )
4764 executor := & loginExecutorMock {}
48- azureLogin := NewWithParams (executor , "abcd " , "secret" , "tenantId" , "" , true )
65+ azureLogin := NewWithParams (executor , "sp-client-id " , "sp-client- secret" , "sp- tenantId" , "" , "mi-tenantId " , true )
4966
5067 executor .On ("Execute" , mock .MatchedBy (func (command string ) bool {
5168 return command == "az login --identity"
@@ -55,27 +72,36 @@ func Test_TriggersSystemAssignedManagedIdentityLogin_WhenOnlyFlagProvided(t *tes
5572 azureLogin .Login ()
5673
5774 // Assert
75+ assert .Equal (t , os .Getenv ("ARM_TENANT_ID" ), "mi-tenantId" )
76+ assert .Equal (t , os .Getenv ("ARM_CLIENT_ID" ), "" )
77+ assert .Equal (t , os .Getenv ("ARM_USE_MSI" ), "true" )
5878 executor .AssertExpectations (t )
5979}
6080
6181func Test_TriggersServicePrincipalLogin_WhenIdProvidedAndUamIdProvidedButMiFlagNotProvided (t * testing.T ) {
6282 // Arrange
83+ CleanUpAfter (t )
6384 executor := & loginExecutorMock {}
64- azureLogin := NewWithParams (executor , "abcd " , "secret" , "tenantId" , "umi-clientid" , false )
85+ azureLogin := NewWithParams (executor , "sp-client-id " , "sp-client- secret" , "sp- tenantId" , "umi-clientid" , "mi-tenantId " , false )
6586
6687 executor .On ("ExecuteSilent" , mock .MatchedBy (func (command string ) bool {
67- return strings .Contains (command , "--service-principal" ) && strings .Contains (command , "abcd " ) && ! strings .Contains (command , "--identity" )
88+ return strings .Contains (command , "--service-principal" ) && strings .Contains (command , "sp-client-id " ) && ! strings .Contains (command , "--identity" )
6889 }))
6990
7091 // Act
7192 azureLogin .Login ()
7293
7394 // Assert
95+ assert .Equal (t , os .Getenv ("ARM_TENANT_ID" ), "sp-tenantId" )
96+ assert .Equal (t , os .Getenv ("ARM_CLIENT_ID" ), "sp-client-id" )
97+ assert .Equal (t , os .Getenv ("ARM_CLIENT_SECRET" ), "sp-client-secret" )
98+ assert .Equal (t , os .Getenv ("ARM_USE_MSI" ), "" )
7499 executor .AssertExpectations (t )
75100}
76101
77102func Test_TriggersNoLogin_WhenUserAlreadyLoggedIn (t * testing.T ) {
78103 // Arrange
104+ CleanUpAfter (t )
79105 executor := & loginExecutorMock {}
80106 executor .userLoggedIn = true
81107
@@ -94,6 +120,7 @@ func Test_TriggersNoLogin_WhenUserAlreadyLoggedIn(t *testing.T) {
94120
95121func Test_TriggersUserLogin_WhenNoCredentialsProvidedAndNotLoggedIn (t * testing.T ) {
96122 // Arrange
123+ CleanUpAfter (t )
97124 executor := & loginExecutorMock {}
98125 executor .userLoggedIn = false
99126
@@ -116,6 +143,15 @@ func Test_TriggersUserLogin_WhenNoCredentialsProvidedAndNotLoggedIn(t *testing.T
116143 executor .AssertExpectations (t )
117144}
118145
146+ func CleanUpAfter (t * testing.T ) {
147+ t .Cleanup (func () {
148+ os .Unsetenv ("ARM_TENANT_ID" )
149+ os .Unsetenv ("ARM_CLIENT_ID" )
150+ os .Unsetenv ("ARM_CLIENT_SECRET" )
151+ os .Unsetenv ("ARM_USE_MSI" )
152+ })
153+ }
154+
119155type loginExecutorMock struct {
120156 mock.Mock
121157 commands.Executor
0 commit comments