@@ -16,10 +16,10 @@ package atlasproject
16
16
17
17
import (
18
18
"context"
19
+ "errors"
19
20
"testing"
20
21
21
22
"github.com/stretchr/testify/assert"
22
- "github.com/stretchr/testify/mock"
23
23
"go.mongodb.org/atlas-sdk/v20231115008/admin"
24
24
"go.uber.org/zap/zaptest"
25
25
corev1 "k8s.io/api/core/v1"
@@ -39,10 +39,116 @@ import (
39
39
)
40
40
41
41
func TestSyncAssignedTeams (t * testing.T ) {
42
+ ctx := context .Background ()
43
+
42
44
tests := map [string ]struct {
43
- teamsToAssign map [string ]* akov2.Team
44
- expectedErr error
45
+ teamsToAssign map [string ]* akov2.Team
46
+ teamServiceMock func () teams.TeamsService
47
+ expectedErr error
45
48
}{
49
+ "should error to list teams" : {
50
+ teamServiceMock : func () teams.TeamsService {
51
+ s := translation .NewTeamsServiceMock (t )
52
+ s .EXPECT ().
53
+ ListProjectTeams (ctx , "projectID" ).
54
+ Return (nil , errors .New ("error to list teams" ))
55
+
56
+ return s
57
+ },
58
+ expectedErr : errors .New ("error to list teams" ),
59
+ },
60
+ "should error to unassign teams" : {
61
+ teamServiceMock : func () teams.TeamsService {
62
+ s := translation .NewTeamsServiceMock (t )
63
+ s .EXPECT ().ListProjectTeams (ctx , "projectID" ).Return ([]teams.AssignedTeam {
64
+ {
65
+ Roles : []string {"GROUP_OWNER" },
66
+ TeamID : "teamID_1" ,
67
+ TeamName : "teamName_1" ,
68
+ },
69
+ {
70
+ Roles : []string {"GROUP_OWNER" },
71
+ TeamID : "teamID_2" ,
72
+ TeamName : "teamName_2" ,
73
+ },
74
+ {
75
+ Roles : []string {"GROUP_READ_ONLY" },
76
+ TeamID : "teamID_3" ,
77
+ TeamName : "teamName_3" ,
78
+ },
79
+ }, nil )
80
+ s .EXPECT ().Unassign (ctx , "projectID" , "teamID_1" ).Return (errors .New ("error to unassign team 1" ))
81
+ s .EXPECT ().Unassign (ctx , "projectID" , "teamID_2" ).Return (errors .New ("error to unassign team 2" ))
82
+ s .EXPECT ().Unassign (ctx , "projectID" , "teamID_3" ).Return (errors .New ("error to unassign team 3" ))
83
+
84
+ return s
85
+ },
86
+ expectedErr : errors .Join (
87
+ errors .Join (
88
+ errors .Join (
89
+ nil ,
90
+ errors .New ("error to unassign team 1" ),
91
+ ),
92
+ errors .New ("error to unassign team 2" ),
93
+ ),
94
+ errors .New ("error to unassign team 3" ),
95
+ ),
96
+ },
97
+ "should error to assign teams" : {
98
+ teamsToAssign : map [string ]* akov2.Team {
99
+ "teamID_1" : {
100
+ TeamRef : common.ResourceRefNamespaced {
101
+ Name : "teamName_1" ,
102
+ },
103
+ Roles : []akov2.TeamRole {"GROUP_OWNER" },
104
+ },
105
+ "teamID_2" : {
106
+ TeamRef : common.ResourceRefNamespaced {
107
+ Name : "teamName_2" ,
108
+ },
109
+ Roles : []akov2.TeamRole {"GROUP_READ_ONLY" },
110
+ },
111
+ },
112
+ teamServiceMock : func () teams.TeamsService {
113
+ s := translation .NewTeamsServiceMock (t )
114
+ s .EXPECT ().ListProjectTeams (ctx , "projectID" ).Return ([]teams.AssignedTeam {
115
+ {
116
+ Roles : []string {"GROUP_OWNER" },
117
+ TeamID : "teamID_1" ,
118
+ TeamName : "teamName_1" ,
119
+ },
120
+ {
121
+ Roles : []string {"GROUP_OWNER" },
122
+ TeamID : "teamID_2" ,
123
+ TeamName : "teamName_2" ,
124
+ },
125
+ {
126
+ Roles : []string {"GROUP_READ_ONLY" },
127
+ TeamID : "teamID_3" ,
128
+ TeamName : "teamName_3" ,
129
+ },
130
+ }, nil )
131
+ s .EXPECT ().Unassign (ctx , "projectID" , "teamID_2" ).Return (nil )
132
+ s .EXPECT ().Unassign (ctx , "projectID" , "teamID_3" ).Return (nil )
133
+
134
+ s .EXPECT ().Assign (
135
+ ctx ,
136
+ & []teams.AssignedTeam {
137
+ {
138
+ Roles : []string {"GROUP_READ_ONLY" },
139
+ TeamID : "teamID_2" ,
140
+ },
141
+ },
142
+ "projectID" ,
143
+ ).Return (errors .New ("error to assign team 2" ))
144
+
145
+ return s
146
+ },
147
+ expectedErr : errors .Join (
148
+ nil ,
149
+ errors .New ("error to assign team 2" ),
150
+ ),
151
+ },
46
152
"should sync teams assigned" : {
47
153
teamsToAssign : map [string ]* akov2.Team {
48
154
"teamID_1" : {
@@ -58,6 +164,41 @@ func TestSyncAssignedTeams(t *testing.T) {
58
164
Roles : []akov2.TeamRole {"GROUP_READ_ONLY" },
59
165
},
60
166
},
167
+ teamServiceMock : func () teams.TeamsService {
168
+ s := translation .NewTeamsServiceMock (t )
169
+ s .EXPECT ().ListProjectTeams (ctx , "projectID" ).Return ([]teams.AssignedTeam {
170
+ {
171
+ Roles : []string {"GROUP_OWNER" },
172
+ TeamID : "teamID_1" ,
173
+ TeamName : "teamName_1" ,
174
+ },
175
+ {
176
+ Roles : []string {"GROUP_OWNER" },
177
+ TeamID : "teamID_2" ,
178
+ TeamName : "teamName_2" ,
179
+ },
180
+ {
181
+ Roles : []string {"GROUP_READ_ONLY" },
182
+ TeamID : "teamID_3" ,
183
+ TeamName : "teamName_3" ,
184
+ },
185
+ }, nil )
186
+ s .EXPECT ().Unassign (ctx , "projectID" , "teamID_2" ).Return (nil )
187
+ s .EXPECT ().Unassign (ctx , "projectID" , "teamID_3" ).Return (nil )
188
+ s .EXPECT ().Assign (
189
+ ctx ,
190
+ & []teams.AssignedTeam {
191
+ {
192
+ Roles : []string {"GROUP_READ_ONLY" },
193
+ TeamID : "teamID_2" ,
194
+ },
195
+ },
196
+ "projectID" ,
197
+ ).
198
+ Return (nil )
199
+
200
+ return s
201
+ },
61
202
},
62
203
}
63
204
@@ -174,42 +315,12 @@ func TestSyncAssignedTeams(t *testing.T) {
174
315
},
175
316
Context : context .Background (),
176
317
}
177
- teamService := func () teams.TeamsService {
178
- service := translation .NewTeamsServiceMock (t )
179
- service .EXPECT ().ListProjectTeams (mock .Anything , "projectID" ).Return ([]teams.AssignedTeam {
180
- {
181
- Roles : []string {"GROUP_OWNER" },
182
- TeamID : team1 .Status .ID ,
183
- TeamName : "teamName_1" ,
184
- },
185
- {
186
- Roles : []string {"GROUP_OWNER" },
187
- TeamID : team2 .Status .ID ,
188
- TeamName : "teamName_2" ,
189
- },
190
- {
191
- Roles : []string {"GROUP_READ_ONLY" },
192
- TeamID : team3 .Status .ID ,
193
- TeamName : "teamName_3" ,
194
- },
195
- }, nil )
196
- service .EXPECT ().Unassign (mock .Anything , "projectID" , "teamID_2" ).Return (nil )
197
- service .EXPECT ().Unassign (mock .Anything , "projectID" , "teamID_3" ).Return (nil )
198
- service .EXPECT ().Assign (mock .Anything ,
199
- & []teams.AssignedTeam {
200
- {
201
- Roles : []string {"GROUP_READ_ONLY" },
202
- TeamID : "teamID_2" ,
203
- },
204
- }, "projectID" ).Return (nil )
205
- return service
206
- }
207
318
r := & AtlasProjectReconciler {
208
319
Client : k8sClient ,
209
320
EventRecorder : record .NewFakeRecorder (10 ),
210
321
Log : logger ,
211
322
}
212
- err := r .syncAssignedTeams (ctx , teamService (), "projectID" , project , tt .teamsToAssign )
323
+ err := r .syncAssignedTeams (ctx , tt . teamServiceMock (), "projectID" , project , tt .teamsToAssign )
213
324
assert .Equal (t , tt .expectedErr , err )
214
325
})
215
326
}
0 commit comments