TF-1645 Fix can not parse mail capability

(cherry picked from commit fcbe822f76f73cd237dd27069b5f77a1f6b02ff3)
This commit is contained in:
dab246
2023-03-24 16:53:44 +07:00
committed by Dat Vu
parent a11415ce9c
commit 6ccf0232a7
4 changed files with 126 additions and 102 deletions
+116 -97
View File
@@ -24,17 +24,20 @@ void main() {
test('when session missing one capability exception should throw', () {
final session = Session(
{
CapabilityIdentifier.jmapSubmission:
SubmissionCapability(UnsignedInt(0), {}),
CapabilityIdentifier.jmapSubmission: SubmissionCapability(
maxDelayedSend: UnsignedInt(0),
submissionExtensions: {}
),
CapabilityIdentifier.jmapMail: MailCapability(
UnsignedInt(10000000),
null,
UnsignedInt(200),
UnsignedInt(20000000),
{"receivedAt", "sentAt", "size", "from", "to", "subject"},
true),
CapabilityIdentifier.jmapWebSocket:
WebSocketCapability(true, Uri.parse('ws://domain.com/jmap/ws')),
maxMailboxesPerEmail: UnsignedInt(10000000),
maxSizeAttachmentsPerEmail: UnsignedInt(20000000),
emailQuerySortOptions: {"receivedAt", "sentAt", "size", "from", "to", "subject"},
mayCreateTopLevelMailbox: true
),
CapabilityIdentifier.jmapWebSocket: WebSocketCapability(
supportsPush: true,
url: Uri.parse('ws://domain.com/jmap/ws')
),
CapabilityIdentifier(
Uri.parse('urn:apache:james:params:jmap:mail:quota')):
DefaultCapability(<String, dynamic>{}),
@@ -45,20 +48,21 @@ void main() {
CapabilityIdentifier.jmapMdn: MdnCapability()
},
{
AccountId(Id(
'29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6')):
Account(AccountName('bob@domain.tld'), true, false, {
CapabilityIdentifier.jmapSubmission:
SubmissionCapability(UnsignedInt(0), {}),
AccountId(Id('29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6')): Account(AccountName('bob@domain.tld'), true, false, {
CapabilityIdentifier.jmapSubmission: SubmissionCapability(
maxDelayedSend: UnsignedInt(0),
submissionExtensions: {}
),
CapabilityIdentifier.jmapWebSocket: WebSocketCapability(
true, Uri.parse('ws://domain.com/jmap/ws')),
supportsPush: true,
url: Uri.parse('ws://domain.com/jmap/ws')
),
CapabilityIdentifier.jmapMail: MailCapability(
UnsignedInt(10000000),
null,
UnsignedInt(200),
UnsignedInt(20000000),
{"receivedAt", "sentAt", "size", "from", "to", "subject"},
true),
maxMailboxesPerEmail: UnsignedInt(10000000),
maxSizeAttachmentsPerEmail: UnsignedInt(20000000),
emailQuerySortOptions: {"receivedAt", "sentAt", "size", "from", "to", "subject"},
mayCreateTopLevelMailbox: true
),
CapabilityIdentifier(
Uri.parse('urn:apache:james:params:jmap:mail:quota')):
DefaultCapability(<String, dynamic>{}),
@@ -110,17 +114,20 @@ void main() {
test('when account capabilities is empty exception should throw', () {
final session = Session(
{
CapabilityIdentifier.jmapSubmission:
SubmissionCapability(UnsignedInt(0), {}),
CapabilityIdentifier.jmapSubmission: SubmissionCapability(
maxDelayedSend: UnsignedInt(0),
submissionExtensions: {}
),
CapabilityIdentifier.jmapMail: MailCapability(
UnsignedInt(10000000),
null,
UnsignedInt(200),
UnsignedInt(20000000),
{"receivedAt", "sentAt", "size", "from", "to", "subject"},
true),
CapabilityIdentifier.jmapWebSocket:
WebSocketCapability(true, Uri.parse('ws://domain.com/jmap/ws')),
maxMailboxesPerEmail: UnsignedInt(10000000),
maxSizeAttachmentsPerEmail: UnsignedInt(20000000),
emailQuerySortOptions: {"receivedAt", "sentAt", "size", "from", "to", "subject"},
mayCreateTopLevelMailbox: true
),
CapabilityIdentifier.jmapWebSocket: WebSocketCapability(
supportsPush: true,
url: Uri.parse('ws://domain.com/jmap/ws')
),
CapabilityIdentifier(
Uri.parse('urn:apache:james:params:jmap:mail:quota')):
DefaultCapability(<String, dynamic>{}),
@@ -177,17 +184,20 @@ void main() {
final invalidId = Id("29883977c13473ae7cb7678ef767cbffabfc8a44a6e463d971d23a65c1dc4af6");
final session = Session(
{
CapabilityIdentifier.jmapSubmission:
SubmissionCapability(UnsignedInt(0), {}),
CapabilityIdentifier.jmapSubmission: SubmissionCapability(
maxDelayedSend: UnsignedInt(0),
submissionExtensions: {}
),
CapabilityIdentifier.jmapMail: MailCapability(
UnsignedInt(10000000),
null,
UnsignedInt(200),
UnsignedInt(20000000),
{"receivedAt", "sentAt", "size", "from", "to", "subject"},
true),
CapabilityIdentifier.jmapWebSocket:
WebSocketCapability(true, Uri.parse('ws://domain.com/jmap/ws')),
maxMailboxesPerEmail: UnsignedInt(10000000),
maxSizeAttachmentsPerEmail: UnsignedInt(20000000),
emailQuerySortOptions: {"receivedAt", "sentAt", "size", "from", "to", "subject"},
mayCreateTopLevelMailbox: true
),
CapabilityIdentifier.jmapWebSocket: WebSocketCapability(
supportsPush: true,
url: Uri.parse('ws://domain.com/jmap/ws')
),
CapabilityIdentifier(
Uri.parse('urn:apache:james:params:jmap:mail:quota')):
DefaultCapability(<String, dynamic>{}),
@@ -201,17 +211,20 @@ void main() {
AccountId(Id(
'29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6')):
Account(AccountName('bob@domain.tld'), true, false, {
CapabilityIdentifier.jmapSubmission:
SubmissionCapability(UnsignedInt(0), {}),
CapabilityIdentifier.jmapSubmission: SubmissionCapability(
maxDelayedSend: UnsignedInt(0),
submissionExtensions: {}
),
CapabilityIdentifier.jmapWebSocket: WebSocketCapability(
true, Uri.parse('ws://domain.com/jmap/ws')),
supportsPush: true,
url: Uri.parse('ws://domain.com/jmap/ws')
),
CapabilityIdentifier.jmapMail: MailCapability(
UnsignedInt(10000000),
null,
UnsignedInt(200),
UnsignedInt(20000000),
{"receivedAt", "sentAt", "size", "from", "to", "subject"},
true),
maxMailboxesPerEmail: UnsignedInt(10000000),
maxSizeAttachmentsPerEmail: UnsignedInt(20000000),
emailQuerySortOptions: {"receivedAt", "sentAt", "size", "from", "to", "subject"},
mayCreateTopLevelMailbox: true
),
CapabilityIdentifier(
Uri.parse('urn:apache:james:params:jmap:mail:quota')):
DefaultCapability(<String, dynamic>{}),
@@ -263,17 +276,20 @@ void main() {
test('when accounts empty should throw exception', () {
final session = Session(
{
CapabilityIdentifier.jmapSubmission:
SubmissionCapability(UnsignedInt(0), {}),
CapabilityIdentifier.jmapSubmission: SubmissionCapability(
maxDelayedSend: UnsignedInt(0),
submissionExtensions: {}
),
CapabilityIdentifier.jmapMail: MailCapability(
UnsignedInt(10000000),
null,
UnsignedInt(200),
UnsignedInt(20000000),
{"receivedAt", "sentAt", "size", "from", "to", "subject"},
true),
CapabilityIdentifier.jmapWebSocket:
WebSocketCapability(true, Uri.parse('ws://domain.com/jmap/ws')),
maxMailboxesPerEmail: UnsignedInt(10000000),
maxSizeAttachmentsPerEmail: UnsignedInt(20000000),
emailQuerySortOptions: {"receivedAt", "sentAt", "size", "from", "to", "subject"},
mayCreateTopLevelMailbox: true
),
CapabilityIdentifier.jmapWebSocket: WebSocketCapability(
supportsPush: true,
url: Uri.parse('ws://domain.com/jmap/ws')
),
CapabilityIdentifier(
Uri.parse('urn:apache:james:params:jmap:mail:quota')):
DefaultCapability(<String, dynamic>{}),
@@ -325,27 +341,30 @@ void main() {
test('when session have all required capabilities exception should not throw', () {
final session = Session(
{
CapabilityIdentifier.jmapSubmission:
SubmissionCapability(UnsignedInt(0), {}),
CapabilityIdentifier.jmapSubmission: SubmissionCapability(
maxDelayedSend: UnsignedInt(0),
submissionExtensions: {}
),
CapabilityIdentifier.jmapCore: CoreCapability(
UnsignedInt(20971520),
UnsignedInt(4),
UnsignedInt(10000000),
UnsignedInt(4),
UnsignedInt(16),
UnsignedInt(500),
UnsignedInt(500),
{CollationIdentifier("i;unicode-casemap")}
maxSizeUpload: UnsignedInt(20971520),
maxConcurrentUpload: UnsignedInt(4),
maxSizeRequest: UnsignedInt(10000000),
maxConcurrentRequests: UnsignedInt(4),
maxCallsInRequest: UnsignedInt(16),
maxObjectsInGet: UnsignedInt(500),
maxObjectsInSet: UnsignedInt(500),
collationAlgorithms: {CollationIdentifier("i;unicode-casemap")}
),
CapabilityIdentifier.jmapMail: MailCapability(
UnsignedInt(10000000),
null,
UnsignedInt(200),
UnsignedInt(20000000),
{"receivedAt", "sentAt", "size", "from", "to", "subject"},
true),
CapabilityIdentifier.jmapWebSocket:
WebSocketCapability(true, Uri.parse('ws://domain.com/jmap/ws')),
maxMailboxesPerEmail: UnsignedInt(10000000),
maxSizeAttachmentsPerEmail: UnsignedInt(20000000),
emailQuerySortOptions: {"receivedAt", "sentAt", "size", "from", "to", "subject"},
mayCreateTopLevelMailbox: true
),
CapabilityIdentifier.jmapWebSocket: WebSocketCapability(
supportsPush: true,
url: Uri.parse('ws://domain.com/jmap/ws')
),
CapabilityIdentifier(
Uri.parse('urn:apache:james:params:jmap:mail:quota')):
DefaultCapability(<String, dynamic>{}),
@@ -359,26 +378,26 @@ void main() {
AccountId(Id(
'29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6')):
Account(AccountName('bob@domain.tld'), true, false, {
CapabilityIdentifier.jmapSubmission:
SubmissionCapability(UnsignedInt(0), {}),
CapabilityIdentifier.jmapWebSocket: WebSocketCapability(
true, Uri.parse('ws://domain.com/jmap/ws')),
CapabilityIdentifier.jmapSubmission: SubmissionCapability(
maxDelayedSend: UnsignedInt(0),
submissionExtensions: {}
),
CapabilityIdentifier.jmapCore: CoreCapability(
UnsignedInt(20971520),
UnsignedInt(4),
UnsignedInt(10000000),
UnsignedInt(4),
UnsignedInt(16),
UnsignedInt(500),
UnsignedInt(500),
{CollationIdentifier("i;unicode-casemap")}),
maxSizeUpload: UnsignedInt(20971520),
maxConcurrentUpload: UnsignedInt(4),
maxSizeRequest: UnsignedInt(10000000),
maxConcurrentRequests: UnsignedInt(4),
maxCallsInRequest: UnsignedInt(16),
maxObjectsInGet: UnsignedInt(500),
maxObjectsInSet: UnsignedInt(500),
collationAlgorithms: {CollationIdentifier("i;unicode-casemap")}
),
CapabilityIdentifier.jmapMail: MailCapability(
UnsignedInt(10000000),
null,
UnsignedInt(200),
UnsignedInt(20000000),
{"receivedAt", "sentAt", "size", "from", "to", "subject"},
true),
maxMailboxesPerEmail: UnsignedInt(10000000),
maxSizeAttachmentsPerEmail: UnsignedInt(20000000),
emailQuerySortOptions: {"receivedAt", "sentAt", "size", "from", "to", "subject"},
mayCreateTopLevelMailbox: true
),
CapabilityIdentifier(
Uri.parse('urn:apache:james:params:jmap:mail:quota')):
DefaultCapability(<String, dynamic>{}),