@@ -161,7 +161,7 @@ func TestAdminClient(t *testing.T) {
161
161
t .Run ("ListPolicies" , func (t * testing.T ) {
162
162
testCases := []struct {
163
163
name string
164
- options []ListPoliciesOption
164
+ options []FilterOption
165
165
want map [string ]string
166
166
}{
167
167
{
@@ -170,7 +170,7 @@ func TestAdminClient(t *testing.T) {
170
170
},
171
171
{
172
172
name : "NameRegexp" ,
173
- options : []ListPoliciesOption {WithNameRegexp ("leave_req" )},
173
+ options : []FilterOption {WithNameRegexp ("leave_req" )},
174
174
want : map [string ]string {
175
175
"resource.leave_request.v20210210" : "" ,
176
176
"resource.leave_request.vdefault" : "" ,
@@ -181,7 +181,7 @@ func TestAdminClient(t *testing.T) {
181
181
},
182
182
{
183
183
name : "ScopeRegexp" ,
184
- options : []ListPoliciesOption {WithScopeRegexp ("acme" )},
184
+ options : []FilterOption {WithScopeRegexp ("acme" )},
185
185
want : map [string ]string {
186
186
"principal.donald_duck.vdefault/acme" : "" ,
187
187
"principal.donald_duck.vdefault/acme.hr" : "" ,
@@ -192,14 +192,14 @@ func TestAdminClient(t *testing.T) {
192
192
},
193
193
{
194
194
name : "VersionRegexp" ,
195
- options : []ListPoliciesOption {WithVersionRegexp (`\d+` )},
195
+ options : []FilterOption {WithVersionRegexp (`\d+` )},
196
196
want : map [string ]string {
197
197
"resource.leave_request.v20210210" : "" ,
198
198
},
199
199
},
200
200
{
201
201
name : "AllRegexp" ,
202
- options : []ListPoliciesOption {WithNameRegexp (`.*` ), WithScopeRegexp (`.*` ), WithVersionRegexp ("def" )},
202
+ options : []FilterOption {WithNameRegexp (`.*` ), WithScopeRegexp (`.*` ), WithVersionRegexp ("def" )},
203
203
want : map [string ]string {
204
204
"principal.donald_duck.vdefault" : "" ,
205
205
"principal.donald_duck.vdefault/acme" : "" ,
@@ -225,6 +225,87 @@ func TestAdminClient(t *testing.T) {
225
225
}
226
226
})
227
227
228
+ t .Run ("InspectPolicies" , func (t * testing.T ) {
229
+ testCases := []struct {
230
+ name string
231
+ options []FilterOption
232
+ want map [string ][]string
233
+ }{
234
+ {
235
+ name : "NoFilter" ,
236
+ want : map [string ][]string {
237
+ "principal.donald_duck.vdefault" : {"*" },
238
+ "principal.donald_duck.vdefault/acme" : {"*" },
239
+ "principal.donald_duck.vdefault/acme.hr" : {"view:*" },
240
+ "resource.leave_request.v20210210" : {"*" , "approve" , "create" , "defer" , "delete" , "remind" , "view" , "view:*" , "view:public" },
241
+ "resource.leave_request.vdefault" : {"*" },
242
+ "resource.leave_request.vdefault/acme" : {"create" , "view:public" },
243
+ "resource.leave_request.vdefault/acme.hr" : {"approve" , "defer" , "delete" , "view:*" },
244
+ "resource.leave_request.vdefault/acme.hr.uk" : {"defer" , "delete" },
245
+ },
246
+ },
247
+ {
248
+ name : "NameRegexp" ,
249
+ options : []FilterOption {WithNameRegexp ("leave_req" )},
250
+ want : map [string ][]string {
251
+ "resource.leave_request.v20210210" : {"*" , "approve" , "create" , "defer" , "delete" , "remind" , "view" , "view:*" , "view:public" },
252
+ "resource.leave_request.vdefault" : {"*" },
253
+ "resource.leave_request.vdefault/acme" : {"create" , "view:public" },
254
+ "resource.leave_request.vdefault/acme.hr" : {"approve" , "defer" , "delete" , "view:*" },
255
+ "resource.leave_request.vdefault/acme.hr.uk" : {"defer" , "delete" },
256
+ },
257
+ },
258
+ {
259
+ name : "ScopeRegexp" ,
260
+ options : []FilterOption {WithScopeRegexp ("acme" )},
261
+ want : map [string ][]string {
262
+ "principal.donald_duck.vdefault/acme" : {"*" },
263
+ "principal.donald_duck.vdefault/acme.hr" : {"view:*" },
264
+ "resource.leave_request.vdefault/acme" : {"create" , "view:public" },
265
+ "resource.leave_request.vdefault/acme.hr" : {"approve" , "defer" , "delete" , "view:*" },
266
+ "resource.leave_request.vdefault/acme.hr.uk" : {"defer" , "delete" },
267
+ },
268
+ },
269
+ {
270
+ name : "VersionRegexp" ,
271
+ options : []FilterOption {WithVersionRegexp (`\d+` )},
272
+ want : map [string ][]string {
273
+ "resource.leave_request.v20210210" : {"*" , "approve" , "create" , "defer" , "delete" , "remind" , "view" , "view:*" , "view:public" },
274
+ },
275
+ },
276
+ {
277
+ name : "AllRegexp" ,
278
+ options : []FilterOption {WithNameRegexp (`.*` ), WithScopeRegexp (`.*` ), WithVersionRegexp ("def" )},
279
+ want : map [string ][]string {
280
+ "principal.donald_duck.vdefault" : {"*" },
281
+ "principal.donald_duck.vdefault/acme" : {"*" },
282
+ "principal.donald_duck.vdefault/acme.hr" : {"view:*" },
283
+ "resource.leave_request.vdefault" : {"*" },
284
+ "resource.leave_request.vdefault/acme" : {"create" , "view:public" },
285
+ "resource.leave_request.vdefault/acme.hr" : {"approve" , "defer" , "delete" , "view:*" },
286
+ "resource.leave_request.vdefault/acme.hr.uk" : {"defer" , "delete" },
287
+ },
288
+ },
289
+ }
290
+
291
+ for _ , tc := range testCases {
292
+ tc := tc
293
+ t .Run (tc .name , func (t * testing.T ) {
294
+ have , err := ac .InspectPolicies (context .Background (), tc .options ... )
295
+ require .NoError (t , err )
296
+ require .NotNil (t , have )
297
+ require .NotNil (t , have .Results )
298
+ for fqn , actions := range tc .want {
299
+ t .Run (fqn , func (t * testing.T ) {
300
+ require .NotNil (t , have .Results [fqn ])
301
+ require .Len (t , have .Results [fqn ].Actions , len (actions ))
302
+ require .ElementsMatch (t , have .Results [fqn ].Actions , actions )
303
+ })
304
+ }
305
+ })
306
+ }
307
+ })
308
+
228
309
t .Run ("AddOrUpdateSchema" , func (t * testing.T ) {
229
310
ss := NewSchemaSet ()
230
311
for k , s := range schemas {
0 commit comments