mox/imapserver/quota_test.go

55 lines
1.9 KiB
Go
Raw Permalink Normal View History

2024-03-11 16:02:35 +03:00
package imapserver
import (
"testing"
"github.com/mjl-/mox/imapclient"
)
func TestQuota1(t *testing.T) {
tc := start(t)
defer tc.close()
tc.client.Login("mjl@mox.example", password0)
// We don't implement setquota.
tc.transactf("bad", `setquota "" (STORAGE 123)`)
tc.transactf("bad", "getquotaroot") // Missing param.
tc.transactf("bad", "getquotaroot inbox bogus") // Too many params.
tc.transactf("bad", "getquota") // Missing param.
tc.transactf("bad", "getquota a b") // Too many params.
// tc does not have a limit.
tc.transactf("ok", "getquotaroot inbox")
tc.xuntagged(imapclient.UntaggedQuotaroot([]string{""}))
tc.transactf("no", "getquota bogusroot")
tc.transactf("ok", `getquota ""`)
tc.xuntagged()
// Check that we get a DELETED-STORAGE status attribute with value 0, also if
// messages are marked deleted. We don't go through the trouble.
tc.transactf("ok", "status inbox (DELETED-STORAGE)")
tc.xuntagged(imapclient.UntaggedStatus{Mailbox: "Inbox", Attrs: map[imapclient.StatusAttr]int64{imapclient.StatusDeletedStorage: 0}})
2024-03-11 16:02:35 +03:00
// tclimit does have a limit.
tclimit := startArgs(t, false, false, true, true, "limit")
defer tclimit.close()
tclimit.client.Login("limit@mox.example", password0)
tclimit.transactf("ok", "getquotaroot inbox")
tclimit.xuntagged(
imapclient.UntaggedQuotaroot([]string{""}),
imapclient.UntaggedQuota{Root: "", Resources: []imapclient.QuotaResource{{Name: imapclient.QuotaResourceStorage, Usage: 0, Limit: 1}}},
)
tclimit.transactf("ok", `getquota ""`)
tclimit.xuntagged(imapclient.UntaggedQuota{Root: "", Resources: []imapclient.QuotaResource{{Name: imapclient.QuotaResourceStorage, Usage: 0, Limit: 1}}})
tclimit.transactf("ok", "status inbox (DELETED-STORAGE)")
tclimit.xuntagged(imapclient.UntaggedStatus{Mailbox: "Inbox", Attrs: map[imapclient.StatusAttr]int64{imapclient.StatusDeletedStorage: 0}})
2024-03-11 16:02:35 +03:00
}