Skip to content

Commit b829010

Browse files
Added test for adding team to notification rules.
Signed-off-by: SolarFactories <SolarFactories@users.noreply.github.com>
1 parent 6dcb235 commit b829010

1 file changed

Lines changed: 81 additions & 0 deletions

File tree

notification_test.go

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)