1package imapserver
2
3import (
4 "testing"
5
6 "github.com/mjl-/mox/imapclient"
7)
8
9func TestLsub(t *testing.T) {
10 testLsub(t, false)
11}
12
13func TestLsubUIDOnly(t *testing.T) {
14 testLsub(t, true)
15}
16
17func testLsub(t *testing.T, uidonly bool) {
18 tc := start(t, uidonly)
19 defer tc.close()
20
21 tc.login("mjl@mox.example", password0)
22
23 tc.transactf("bad", "lsub") // Missing params.
24 tc.transactf("bad", `lsub ""`) // Missing param.
25 tc.transactf("bad", `lsub "" x `) // Leftover data.
26
27 tc.transactf("ok", `lsub "" x*`)
28 tc.xuntagged()
29
30 tc.transactf("ok", `lsub "" expungebox`)
31 tc.xuntagged(imapclient.UntaggedLsub{Separator: '/', Mailbox: "expungebox"})
32
33 tc.transactf("ok", "create a/b/c")
34 tc.transactf("ok", `lsub "" a/*`)
35 tc.xuntagged(imapclient.UntaggedLsub{Separator: '/', Mailbox: "a/b"}, imapclient.UntaggedLsub{Separator: '/', Mailbox: "a/b/c"})
36
37 // ../rfc/3501:2394
38 tc.transactf("ok", "unsubscribe a")
39 tc.transactf("ok", "unsubscribe a/b")
40 tc.transactf("ok", `lsub "" a/%%`)
41 tc.xuntagged(imapclient.UntaggedLsub{Flags: []string{`\NoSelect`}, Separator: '/', Mailbox: "a/b"})
42
43 tc.transactf("ok", "unsubscribe a/b/c")
44 tc.transactf("ok", `lsub "" a/%%`)
45 tc.xuntagged()
46}
47