@@ -269,3 +269,84 @@ func TestRuleProjects(t *testing.T) {
269269 require .Empty (t , found .Projects )
270270 }
271271}
272+
273+ func TestRuleTeams (t * testing.T ) {
274+ ctx := context .Background ()
275+ client := setUpContainer (t , testContainerOptions {
276+ APIPermissions : []string {
277+ PermissionSystemConfiguration ,
278+ PermissionAccessManagement ,
279+ },
280+ })
281+ publisher , err := client .Notification .CreatePublisher (ctx , NotificationPublisher {
282+ Name : "Test_Rule_Tags_Publisher" ,
283+ Description : "Test_Rule_Description" ,
284+ PublisherClass : "org.dependencytrack.notification.publisher.SendMailPublisher" ,
285+ TemplateMIMEType : "text/plain" ,
286+ Template : "Test_Rule_Template" ,
287+ })
288+ require .NoError (t , err )
289+ rule , err := client .Notification .CreateRule (ctx , NotificationRule {
290+ Name : "Test_Rule_Tags_Name" ,
291+ Scope : NotificationRuleScopePortfolio ,
292+ TriggerType : NotificationRuleTriggerTypeEvent ,
293+ Publisher : publisher ,
294+ })
295+ require .NoError (t , err )
296+ team , err := client .Team .Create (ctx , Team {
297+ Name : "Test_Rule_Teams_Team" ,
298+ })
299+ require .NoError (t , err )
300+ // Add Team
301+ {
302+ updated , err := client .Notification .AddTeamToRule (ctx , rule .UUID , team .UUID )
303+ require .NoError (t , err )
304+
305+ require .Empty (t , team .APIKeys )
306+ require .Empty (t , team .MappedOIDCGroups )
307+ team .APIKeys = nil
308+ team .MappedOIDCGroups = nil
309+
310+ require .Equal (t , updated .Teams , []Team {team })
311+ updated .Teams = []Team {}
312+ require .Equal (t , updated , rule )
313+ }
314+ // Fetch
315+ {
316+ allRules , err := FetchAll (func (po PageOptions ) (Page [NotificationRule ], error ) {
317+ return client .Notification .GetAllRules (ctx , po , SortOptions {}, GetAllRulesFilterOptions {})
318+ })
319+ require .NoError (t , err )
320+ found := NotificationRule {}
321+ for _ , rule_ := range allRules {
322+ if rule_ .UUID == rule .UUID {
323+ found = rule_
324+ break
325+ }
326+ }
327+ require .Empty (t , team .Permissions )
328+ team .Permissions = nil
329+ require .Equal (t , found .Teams , []Team {team })
330+ }
331+ // Remove Team
332+ {
333+ updated , err := client .Notification .RemoveTeamFromRule (ctx , rule .UUID , team .UUID )
334+ require .NoError (t , err )
335+ require .Equal (t , updated , rule )
336+ }
337+ // Check Absence
338+ {
339+ allRules , err := FetchAll (func (po PageOptions ) (Page [NotificationRule ], error ) {
340+ return client .Notification .GetAllRules (ctx , po , SortOptions {}, GetAllRulesFilterOptions {})
341+ })
342+ require .NoError (t , err )
343+ found := NotificationRule {}
344+ for _ , rule_ := range allRules {
345+ if rule_ .UUID == rule .UUID {
346+ found = rule_
347+ break
348+ }
349+ }
350+ require .Empty (t , found .Teams )
351+ }
352+ }
0 commit comments