package imapserver

import (
	"testing"

	"github.com/mjl-/mox/imapclient"
)

func TestLsub(t *testing.T) {
	tc := start(t)
	defer tc.close()

	tc.client.Login("mjl@mox.example", "testtest")

	tc.transactf("bad", "lsub")       // Missing params.
	tc.transactf("bad", `lsub ""`)    // Missing param.
	tc.transactf("bad", `lsub "" x `) // Leftover data.

	tc.transactf("ok", `lsub "" x*`)
	tc.xuntagged()

	tc.transactf("ok", "create a/b/c")
	tc.transactf("ok", `lsub "" a/*`)
	tc.xuntagged(imapclient.UntaggedLsub{Separator: '/', Mailbox: "a/b"}, imapclient.UntaggedLsub{Separator: '/', Mailbox: "a/b/c"})

	// ../rfc/3501:2394
	tc.transactf("ok", "unsubscribe a")
	tc.transactf("ok", "unsubscribe a/b")
	tc.transactf("ok", `lsub "" a/%%`)
	tc.xuntagged(imapclient.UntaggedLsub{Flags: []string{`\NoSelect`}, Separator: '/', Mailbox: "a/b"})

	tc.transactf("ok", "unsubscribe a/b/c")
	tc.transactf("ok", `lsub "" a/%%`)
	tc.xuntagged()
}