@@ -1147,4 +1147,263 @@ void main() {
1147
1147
expect (parsedSession, equals (expectedSession));
1148
1148
});
1149
1149
});
1150
+
1151
+ group ('get session for CYRUS server' , () {
1152
+ test ('get should parsing correctly session' , () {
1153
+ final sessionString = '''
1154
+ {
1155
+ "username": "example",
1156
+ "apiUrl": "/jmap/",
1157
+ "downloadUrl": "/jmap/download/{accountId}/{blobId}/{name}?accept={type}",
1158
+ "uploadUrl": "/jmap/upload/{accountId}/",
1159
+ "eventSourceUrl": "/jmap/eventsource/?types={types}&closeafter={closeafter}&ping={ping}",
1160
+ "state": "0",
1161
+ "capabilities": {
1162
+ "urn:ietf:params:jmap:core": {
1163
+ "maxSizeUpload": 1073741824,
1164
+ "maxConcurrentUpload": 5,
1165
+ "maxSizeRequest": 10485760,
1166
+ "maxConcurrentRequests": 5,
1167
+ "maxCallsInRequest": 50,
1168
+ "maxObjectsInGet": 4096,
1169
+ "maxObjectsInSet": 4096,
1170
+ "collationAlgorithms": []
1171
+ },
1172
+ "urn:ietf:params:jmap:mail": {},
1173
+ "urn:ietf:params:jmap:submission": {},
1174
+ "urn:ietf:params:jmap:vacationresponse": {},
1175
+ "urn:ietf:params:jmap:mdn": {},
1176
+ "https://cyrusimap.org/ns/jmap/sieve": {}
1177
+ },
1178
+ "accounts": {
1179
+ "example": {
1180
+ "name": "example",
1181
+ "isPrimary": true,
1182
+ "isPersonal": true,
1183
+ "isReadOnly": false,
1184
+ "accountCapabilities": {
1185
+ "urn:ietf:params:jmap:core": {},
1186
+ "urn:ietf:params:jmap:mail": {
1187
+ "maxMailboxesPerEmail": 20,
1188
+ "maxKeywordsPerEmail": 100,
1189
+ "maxSizeAttachmentsPerEmail": 10485760,
1190
+ "emailsListSortOptions": [
1191
+ "receivedAt",
1192
+ "sentAt",
1193
+ "from",
1194
+ "id",
1195
+ "emailstate",
1196
+ "size",
1197
+ "subject",
1198
+ "to",
1199
+ "hasKeyword",
1200
+ "someInThreadHaveKeyword"
1201
+ ],
1202
+ "mayCreateTopLevelMailbox": true
1203
+ },
1204
+ "urn:ietf:params:jmap:submission": {
1205
+ "maxDelayedSend": 44236800,
1206
+ "submissionExtensions": {
1207
+ "size": [
1208
+ "10240000"
1209
+ ],
1210
+ "dsn": []
1211
+ }
1212
+ },
1213
+ "urn:ietf:params:jmap:mdn": {},
1214
+ "https://cyrusimap.org/ns/jmap/sieve": {
1215
+ "supportsTest": true,
1216
+ "maxRedirects": null,
1217
+ "maxNumberScripts": 5,
1218
+ "maxSizeScript": 32768,
1219
+ "sieveExtensions": [
1220
+ "encoded-character",
1221
+ "comparator-i;ascii-numeric",
1222
+ "fileinto",
1223
+ "reject",
1224
+ "ereject",
1225
+ "vacation",
1226
+ "vacation-seconds",
1227
+ "notify",
1228
+ "enotify",
1229
+ "include",
1230
+ "editheader",
1231
+ "vnd.cyrus.snooze",
1232
+ "vnd.cyrus.imip",
1233
+ "envelope",
1234
+ "environment",
1235
+ "body",
1236
+ "imap4flags",
1237
+ "date",
1238
+ "ihave",
1239
+ "mailbox",
1240
+ "mboxmetadata",
1241
+ "servermetadata",
1242
+ "duplicate",
1243
+ "vnd.cyrus.jmapquery",
1244
+ "relational",
1245
+ "regex",
1246
+ "extlists",
1247
+ "subaddress",
1248
+ "copy",
1249
+ "index",
1250
+ "variables",
1251
+ "redirect-deliverby",
1252
+ "redirect-dsn",
1253
+ "special-use",
1254
+ "fcc",
1255
+ "mailboxid"
1256
+ ],
1257
+ "notificationMethods": [
1258
+ "mailto"
1259
+ ],
1260
+ "externalLists": [
1261
+ "urn:ietf:params:sieve:addrbook"
1262
+ ]
1263
+ },
1264
+ "urn:ietf:params:jmap:vacationresponse": {}
1265
+ }
1266
+ }
1267
+ },
1268
+ "primaryAccounts": {
1269
+ "urn:ietf:params:jmap:mail": "example",
1270
+ "urn:ietf:params:jmap:submission": "example",
1271
+ "https://cyrusimap.org/ns/jmap/contacts": "example",
1272
+ "https://cyrusimap.org/ns/jmap/calendars": "example",
1273
+ "https://cyrusimap.org/ns/jmap/backup": "example",
1274
+ "urn:ietf:params:jmap:vacationresponse": "example",
1275
+ "https://cyrusimap.org/ns/jmap/sieve": "example"
1276
+ }
1277
+ }
1278
+ ''' ;
1279
+
1280
+ final Session expectedSession = Session (
1281
+ {
1282
+ CapabilityIdentifier .jmapCore: CoreCapability (
1283
+ maxSizeUpload: UnsignedInt (1073741824 ),
1284
+ maxConcurrentUpload: UnsignedInt (5 ),
1285
+ maxSizeRequest: UnsignedInt (10485760 ),
1286
+ maxConcurrentRequests: UnsignedInt (5 ),
1287
+ maxCallsInRequest: UnsignedInt (50 ),
1288
+ maxObjectsInGet: UnsignedInt (4096 ),
1289
+ maxObjectsInSet: UnsignedInt (4096 ),
1290
+ collationAlgorithms: {}
1291
+ ),
1292
+ CapabilityIdentifier .jmapMail: MailCapability (),
1293
+ CapabilityIdentifier .jmapSubmission: SubmissionCapability (),
1294
+ CapabilityIdentifier .jmapVacationResponse: VacationCapability (),
1295
+ CapabilityIdentifier .jmapMdn: MdnCapability (),
1296
+ CapabilityIdentifier (Uri .parse ('https://cyrusimap.org/ns/jmap/sieve' )): DefaultCapability (Map <String , dynamic >()),
1297
+ },
1298
+ {
1299
+ AccountId (Id ('example' )): Account (
1300
+ AccountName ('example' ),
1301
+ true ,
1302
+ false ,
1303
+ {
1304
+ CapabilityIdentifier .jmapCore: CoreCapability (),
1305
+ CapabilityIdentifier .jmapMail: MailCapability (
1306
+ maxMailboxesPerEmail: UnsignedInt (20 ),
1307
+ maxKeywordsPerEmail: UnsignedInt (100 ),
1308
+ maxSizeAttachmentsPerEmail: UnsignedInt (10485760 ),
1309
+ emailsListSortOptions: {
1310
+ "receivedAt" ,
1311
+ "sentAt" ,
1312
+ "from" ,
1313
+ "id" ,
1314
+ "emailstate" ,
1315
+ "size" ,
1316
+ "subject" ,
1317
+ "to" ,
1318
+ "hasKeyword" ,
1319
+ "someInThreadHaveKeyword"
1320
+ },
1321
+ mayCreateTopLevelMailbox: true
1322
+ ),
1323
+ CapabilityIdentifier .jmapSubmission: SubmissionCapability (
1324
+ maxDelayedSend: UnsignedInt (44236800 ),
1325
+ submissionExtensions: {
1326
+ "size" : [
1327
+ "10240000"
1328
+ ],
1329
+ "dsn" : []
1330
+ }
1331
+ ),
1332
+ CapabilityIdentifier .jmapMdn: MdnCapability (),
1333
+ CapabilityIdentifier (Uri .parse ('https://cyrusimap.org/ns/jmap/sieve' )): DefaultCapability ({
1334
+ "supportsTest" : true ,
1335
+ "maxRedirects" : null ,
1336
+ "maxNumberScripts" : 5 ,
1337
+ "maxSizeScript" : 32768 ,
1338
+ "sieveExtensions" : [
1339
+ "encoded-character" ,
1340
+ "comparator-i;ascii-numeric" ,
1341
+ "fileinto" ,
1342
+ "reject" ,
1343
+ "ereject" ,
1344
+ "vacation" ,
1345
+ "vacation-seconds" ,
1346
+ "notify" ,
1347
+ "enotify" ,
1348
+ "include" ,
1349
+ "editheader" ,
1350
+ "vnd.cyrus.snooze" ,
1351
+ "vnd.cyrus.imip" ,
1352
+ "envelope" ,
1353
+ "environment" ,
1354
+ "body" ,
1355
+ "imap4flags" ,
1356
+ "date" ,
1357
+ "ihave" ,
1358
+ "mailbox" ,
1359
+ "mboxmetadata" ,
1360
+ "servermetadata" ,
1361
+ "duplicate" ,
1362
+ "vnd.cyrus.jmapquery" ,
1363
+ "relational" ,
1364
+ "regex" ,
1365
+ "extlists" ,
1366
+ "subaddress" ,
1367
+ "copy" ,
1368
+ "index" ,
1369
+ "variables" ,
1370
+ "redirect-deliverby" ,
1371
+ "redirect-dsn" ,
1372
+ "special-use" ,
1373
+ "fcc" ,
1374
+ "mailboxid"
1375
+ ],
1376
+ "notificationMethods" : [
1377
+ "mailto"
1378
+ ],
1379
+ "externalLists" : [
1380
+ "urn:ietf:params:sieve:addrbook"
1381
+ ]
1382
+ }),
1383
+ CapabilityIdentifier .jmapVacationResponse: VacationCapability ()
1384
+ }
1385
+ )
1386
+ },
1387
+ {
1388
+ CapabilityIdentifier .jmapMail: AccountId (Id ('example' )),
1389
+ CapabilityIdentifier .jmapSubmission: AccountId (Id ('example' )),
1390
+ CapabilityIdentifier (Uri .parse ('https://cyrusimap.org/ns/jmap/contacts' )): AccountId (Id ('example' )),
1391
+ CapabilityIdentifier (Uri .parse ('https://cyrusimap.org/ns/jmap/calendars' )): AccountId (Id ('example' )),
1392
+ CapabilityIdentifier (Uri .parse ('https://cyrusimap.org/ns/jmap/backup' )): AccountId (Id ('example' )),
1393
+ CapabilityIdentifier .jmapVacationResponse: AccountId (Id ('example' )),
1394
+ CapabilityIdentifier (Uri .parse ('https://cyrusimap.org/ns/jmap/sieve' )): AccountId (Id ('example' )),
1395
+ },
1396
+ UserName ('example' ),
1397
+ Uri .parse ('/jmap/' ),
1398
+ Uri .parse ('/jmap/download/{accountId}/{blobId}/{name}?accept={type}' ),
1399
+ Uri .parse ('/jmap/upload/{accountId}/' ),
1400
+ Uri .parse ('/jmap/eventsource/?types={types}&closeafter={closeafter}&ping={ping}' ),
1401
+ State ('0' )
1402
+ );
1403
+
1404
+ final parsedSession = Session .fromJson (json.decode (sessionString));
1405
+
1406
+ expect (parsedSession, equals (expectedSession));
1407
+ });
1408
+ });
1150
1409
}
0 commit comments