aboutsummaryrefslogtreecommitdiffstats
path: root/dashboard/app/main_test.go
diff options
context:
space:
mode:
authorAleksandr Nogikh <nogikh@google.com>2023-05-09 18:25:02 +0200
committerAleksandr Nogikh <wp32pw@gmail.com>2023-05-10 09:02:53 +0200
commitdfd5a9acc134f1ea849a49efee7dd7f50c836e75 (patch)
treeac41d021e09d5b8ac2c70938d59432092415e798 /dashboard/app/main_test.go
parent1964022bd4ae3c35688b98f6a4db45076c7d002c (diff)
dashboard: support filtering over multiple labels
For each label, allow only one value to be specified. At the same time, allow multiple different labels (subsystem, origin, prio, etc) be specified together.
Diffstat (limited to 'dashboard/app/main_test.go')
-rw-r--r--dashboard/app/main_test.go48
1 files changed, 48 insertions, 0 deletions
diff --git a/dashboard/app/main_test.go b/dashboard/app/main_test.go
index be1b3e847..fff94d7f9 100644
--- a/dashboard/app/main_test.go
+++ b/dashboard/app/main_test.go
@@ -247,3 +247,51 @@ func TestSubsystemPage(t *testing.T) {
assert.Contains(t, string(reply), crash1.Title)
assert.NotContains(t, string(reply), crash2.Title)
}
+
+func TestMultiLabelFilter(t *testing.T) {
+ c := NewCtx(t)
+ defer c.Close()
+
+ client := c.makeClient(clientPublicEmail, keyPublicEmail, true)
+ mailingList := config.Namespaces["access-public-email"].Reporting[0].Config.(*EmailConfig).Email
+
+ build1 := testBuild(1)
+ build1.Manager = "manager-name-123"
+ client.UploadBuild(build1)
+
+ crash1 := testCrash(build1, 1)
+ crash1.GuiltyFiles = []string{"a.c"}
+ crash1.Title = "crash-with-subsystem-A"
+ client.ReportCrash(crash1)
+ c.pollEmailBug()
+
+ crash2 := testCrash(build1, 2)
+ crash2.GuiltyFiles = []string{"a.c"}
+ crash2.Title = "prio-crash-subsystem-A"
+ client.ReportCrash(crash2)
+
+ c.incomingEmail(c.pollEmailBug().Sender, "#syz set prio: low\n",
+ EmailOptFrom("test@requester.com"), EmailOptCC([]string{mailingList}))
+
+ // The normal main page.
+ reply, err := c.AuthGET(AccessAdmin, "/access-public-email")
+ c.expectOK(err)
+ assert.Contains(t, string(reply), build1.Manager)
+ assert.NotContains(t, string(reply), "Applied filters")
+
+ reply, err = c.AuthGET(AccessAdmin, "/access-public-email?label=subsystems:subsystemA")
+ c.expectOK(err)
+ assert.Contains(t, string(reply), "Applied filters") // we're seeing a prompt to disable the filter
+ assert.Contains(t, string(reply), crash1.Title)
+ assert.Contains(t, string(reply), crash2.Title)
+
+ // Test filters together.
+ reply, err = c.AuthGET(AccessAdmin, "/access-public-email?label=subsystems:subsystemA&&label=prio:low")
+ c.expectOK(err)
+ assert.NotContains(t, string(reply), crash1.Title)
+ assert.Contains(t, string(reply), crash2.Title)
+
+ // Ensure we provide links that drop labels.
+ assert.NotContains(t, string(reply), "/access-public-email?label=subsystems:subsystemA\"")
+ assert.NotContains(t, string(reply), "/access-public-email?label=prop:low\"")
+}