JMAP Compliance Report

Generated 2026-02-06 06:16:20 UTC

fastmail Fastmail

268
Pass
21
Fail
Required: 264/284 · Recommended: 4/5

stalwart Stalwart v0.15.4

234
Pass
65
Fail
Required: 231/294 · Recommended: 3/5
Test ID Name RFC Type fastmail stalwart
binary (13)
binary/blob-copy-cross-account Blob/copy copies blob to another account RFC8620 §6.3 Required SKIP SKIP
fastmail: SKIP
No cross-account access available
0ms
stalwart: SKIP
No cross-account access available
0ms
src/tests/binary/blob-copy.test.ts

  
binary/blob-copy-not-found Blob/copy returns notCopied for invalid blobId RFC8620 §6.3 Required SKIP SKIP
fastmail: SKIP
No cross-account access available
0ms
stalwart: SKIP
No cross-account access available
0ms
src/tests/binary/blob-copy.test.ts

  
binary/blob-copy-response-structure Blob/copy response has required properties RFC8620 §6.3 Required SKIP SKIP
fastmail: SKIP
No cross-account access available
0ms
stalwart: SKIP
No cross-account access available
0ms
src/tests/binary/blob-copy.test.ts

  
binary/blob-copy-same-account-error Blob/copy rejects same-account copy RFC8620 §6.3 Required FAIL PASS
fastmail: FAIL
Same-account copy must return invalidArguments
282ms
stalwart: PASS
2ms
src/tests/binary/blob-copy.test.ts

  
binary/download-email-blob Download an email's blob by blobId RFC8620 §6.2 Required PASS PASS
fastmail: PASS
603ms
stalwart: PASS
4ms
src/tests/binary/download.test.ts

  
binary/download-nonexistent-blob Download nonexistent blobId returns 404 RFC8620 §6.2 Required PASS PASS
fastmail: PASS
323ms
stalwart: PASS
2ms
src/tests/binary/download.test.ts

  
binary/download-respects-type-param Download URL type parameter affects Content-Type header RFC8620 §6.2 Required PASS PASS
fastmail: PASS
576ms
stalwart: PASS
3ms
src/tests/binary/download.test.ts

  
binary/download-uploaded-blob Download a previously uploaded blob returns same data RFC8620 §6.2 Required PASS PASS
fastmail: PASS
1231ms
stalwart: PASS
3ms
src/tests/binary/download.test.ts

  
binary/upload-basic Upload binary data returns blobId, type, and size RFC8620 §6.1 Required PASS PASS
fastmail: PASS
1229ms
stalwart: PASS
3ms
src/tests/binary/upload.test.ts

  
binary/upload-binary-content Upload binary (non-text) data preserves content RFC8620 §6.1 Required PASS PASS
fastmail: PASS
306ms
stalwart: PASS
2ms
src/tests/binary/upload.test.ts

  
binary/upload-large-data Upload moderately large data succeeds RFC8620 §6.1 Required PASS PASS
fastmail: PASS
922ms
stalwart: PASS
3ms
src/tests/binary/upload.test.ts

  
binary/upload-preserves-content-type Upload preserves specified content type (server may normalize with params) RFC8620 §6.1 Required PASS PASS
fastmail: PASS
305ms
stalwart: PASS
2ms
src/tests/binary/upload.test.ts

  
binary/upload-returns-valid-blob-id Uploaded blobId is a valid JMAP Id RFC8620 §6.1 Required PASS PASS
fastmail: PASS
308ms
stalwart: PASS
2ms
src/tests/binary/upload.test.ts

  
core (38)
core/echo-basic Core/echo returns same arguments RFC8620 §4 Required PASS PASS
fastmail: PASS
347ms
stalwart: PASS
2ms
src/tests/core/echo.test.ts

  
core/echo-empty Core/echo with empty arguments RFC8620 §4 Required PASS PASS
fastmail: PASS
310ms
stalwart: PASS
2ms
src/tests/core/echo.test.ts

  
core/echo-nested Core/echo with nested complex arguments RFC8620 §4 Required PASS PASS
fastmail: PASS
307ms
stalwart: PASS
2ms
src/tests/core/echo.test.ts

  
core/error-account-not-found Server returns accountNotFound for fake account ID RFC8620 §3.6.2 Required PASS FAIL
fastmail: PASS
281ms
stalwart: FAIL
Expected "accountNotFound", got "invalidArguments"
2ms
src/tests/core/method-errors.test.ts

  
core/error-empty-using Server processes request with empty using but rejects each method with unknownMethod RFC8620 §3.6.1 Required PASS FAIL
fastmail: PASS
308ms
stalwart: FAIL
With empty using, method call must return error
2ms
src/tests/core/request-errors.test.ts

  
core/error-invalid-arguments-bad-type Server returns invalidArguments for wrong argument types RFC8620 §3.6.2 Required PASS PASS
fastmail: PASS
280ms
stalwart: PASS
2ms
src/tests/core/method-errors.test.ts

  
core/error-invalid-arguments-missing-account Server returns invalidArguments for missing accountId on Mailbox/get RFC8620 §3.6.2 Required FAIL FAIL
fastmail: FAIL
Missing accountId must return invalidArguments
312ms
stalwart: FAIL
Expected "error", got "Mailbox/get"
2ms
src/tests/core/method-errors.test.ts

  
core/error-method-calls-not-array Server returns error when methodCalls is not an array RFC8620 §3.6.1 Required PASS PASS
fastmail: PASS
303ms
stalwart: PASS
2ms
src/tests/core/request-errors.test.ts

  
core/error-method-level-has-type Method-level errors include 'type' property RFC8620 §3.6.2 Required PASS PASS
fastmail: PASS
285ms
stalwart: PASS
2ms
src/tests/core/method-errors.test.ts

  
core/error-multiple-method-responses Server returns one response per method call, in order RFC8620 §3.6.2 Required PASS PASS
fastmail: PASS
308ms
stalwart: PASS
2ms
src/tests/core/method-errors.test.ts

  
core/error-not-json Server returns error for non-JSON body RFC8620 §3.6.1 Required PASS PASS
fastmail: PASS
1022ms
stalwart: PASS
2ms
src/tests/core/request-errors.test.ts

  
core/error-not-request Server MUST return 400 for JSON that is not a valid Request RFC8620 §3.6.1 Required PASS FAIL
fastmail: PASS
1049ms
stalwart: FAIL
Expected 4xx client error, got 200
2ms
src/tests/core/request-errors.test.ts

  
core/error-response-has-session-state API response includes sessionState property RFC8620 §3.6.2 Required PASS PASS
fastmail: PASS
306ms
stalwart: PASS
2ms
src/tests/core/method-errors.test.ts

  
core/error-state-mismatch Server MUST return stateMismatch for incorrect ifInState RFC8620 §3.6.2 Required PASS PASS
fastmail: PASS
376ms
stalwart: PASS
2ms
src/tests/core/method-errors.test.ts

  
core/error-unknown-capability Server MUST return HTTP-level error for unknown capability in using RFC8620 §3.6.1 Required PASS PASS
fastmail: PASS
278ms
stalwart: PASS
2ms
src/tests/core/request-errors.test.ts

  
core/error-unknown-method Server returns unknownMethod for nonexistent method RFC8620 §3.6.2 Required PASS PASS
fastmail: PASS
307ms
stalwart: PASS
2ms
src/tests/core/method-errors.test.ts

  
core/error-wrong-content-type Server returns error for wrong Content-Type RFC8620 §3.6.1 Required PASS FAIL
fastmail: PASS
312ms
stalwart: FAIL
Expected 4xx client error for wrong content type, got 200
2ms
src/tests/core/request-errors.test.ts

  
core/result-ref-call-id-preserved Call IDs are preserved in responses for result references RFC8620 §3.7 Required PASS PASS
fastmail: PASS
307ms
stalwart: PASS
2ms
src/tests/core/result-references.test.ts

  
core/result-ref-chained Chained result references across multiple calls RFC8620 §3.7 Required PASS PASS
fastmail: PASS
303ms
stalwart: PASS
2ms
src/tests/core/result-references.test.ts

  
core/result-ref-invalid-result-of Invalid resultOf returns invalidResultReference error RFC8620 §3.7 Required PASS PASS
fastmail: PASS
279ms
stalwart: PASS
2ms
src/tests/core/result-references.test.ts

  
core/result-ref-path-single-value Result reference with path to single value RFC8620 §3.7 Required PASS PASS
fastmail: PASS
393ms
stalwart: PASS
2ms
src/tests/core/result-references.test.ts

  
core/result-ref-simple Simple result reference resolves correctly RFC8620 §3.7 Required PASS PASS
fastmail: PASS
1235ms
stalwart: PASS
2ms
src/tests/core/result-references.test.ts

  
core/result-ref-wrong-method-name Result reference with wrong method name returns error RFC8620 §3.7 Required PASS PASS
fastmail: PASS
349ms
stalwart: PASS
2ms
src/tests/core/result-references.test.ts

  
core/session-account-capabilities-mail Mail account has urn:ietf:params:jmap:mail capability RFC8620 §2 Required PASS PASS
fastmail: PASS
0ms
stalwart: PASS
0ms
src/tests/core/session.test.ts

  
core/session-account-properties Account objects have required properties RFC8620 §2 Required PASS PASS
fastmail: PASS
0ms
stalwart: PASS
0ms
src/tests/core/session.test.ts

  
core/session-accounts-present Session has accounts object with at least one account RFC8620 §2 Required PASS PASS
fastmail: PASS
0ms
stalwart: PASS
0ms
src/tests/core/session.test.ts

  
core/session-api-url Session has apiUrl string RFC8620 §2 Required PASS PASS
fastmail: PASS
0ms
stalwart: PASS
0ms
src/tests/core/session.test.ts

  
core/session-core-capability-properties Core capability has required properties RFC8620 §2 Required PASS PASS
fastmail: PASS
0ms
stalwart: PASS
0ms
src/tests/core/session.test.ts

  
core/session-download-url-template Session downloadUrl contains template variables RFC8620 §2 Required PASS PASS
fastmail: PASS
0ms
stalwart: PASS
0ms
src/tests/core/session.test.ts

  
core/session-event-source-url Session has eventSourceUrl RFC8620 §2 Required PASS PASS
fastmail: PASS
0ms
stalwart: PASS
0ms
src/tests/core/session.test.ts

  
core/session-has-capabilities Session resource has capabilities object RFC8620 §2 Required PASS PASS
fastmail: PASS
1ms
stalwart: PASS
0ms
src/tests/core/session.test.ts

  
core/session-has-core-capability Session advertises urn:ietf:params:jmap:core RFC8620 §2 Required PASS PASS
fastmail: PASS
0ms
stalwart: PASS
0ms
src/tests/core/session.test.ts

  
core/session-has-mail-capability Session advertises urn:ietf:params:jmap:mail RFC8620 §2 Required PASS PASS
fastmail: PASS
0ms
stalwart: PASS
0ms
src/tests/core/session.test.ts

  
core/session-mail-capability-properties Mail capability has required properties RFC8620 §2 Required PASS PASS
fastmail: PASS
0ms
stalwart: PASS
0ms
src/tests/core/session.test.ts

  
core/session-primary-accounts Session has primaryAccounts with mail account RFC8620 §2 Required PASS PASS
fastmail: PASS
0ms
stalwart: PASS
0ms
src/tests/core/session.test.ts

  
core/session-state Session has state string RFC8620 §2 Required PASS PASS
fastmail: PASS
0ms
stalwart: PASS
0ms
src/tests/core/session.test.ts

  
core/session-upload-url Session has uploadUrl with accountId template RFC8620 §2 Required PASS PASS
fastmail: PASS
0ms
stalwart: PASS
0ms
src/tests/core/session.test.ts

  
core/session-username Session has username string RFC8620 §2 Required PASS PASS
fastmail: PASS
0ms
stalwart: PASS
0ms
src/tests/core/session.test.ts

  
email (148)
email/body-attachment-blob-id Email/get attachment parts have blobId for download RFC8621 §4.1.4 Required PASS PASS
fastmail: PASS
306ms
stalwart: PASS
2ms
src/tests/email/email-get-body.test.ts

  
email/body-attachments Email/get attachments returns non-inline attachment parts RFC8621 §4.1.4 Required PASS PASS
fastmail: PASS
717ms
stalwart: PASS
2ms
src/tests/email/email-get-body.test.ts

  
email/body-html-body Email/get htmlBody returns HTML parts for multipart/alternative RFC8621 §4.1.4 Required PASS PASS
fastmail: PASS
304ms
stalwart: PASS
2ms
src/tests/email/email-get-body.test.ts

  
email/body-inline-attachment-cid Email/get inline attachment has Content-ID (cid) RFC8621 §4.1.4 Required PASS PASS
fastmail: PASS
1126ms
stalwart: PASS
2ms
src/tests/email/email-get-body.test.ts

  
email/body-invalid-ascii-handling Email/get handles malformed ASCII email gracefully RFC8621 §4.1.4 Required PASS PASS
fastmail: PASS
306ms
stalwart: PASS
2ms
src/tests/email/email-get-body.test.ts

  
email/body-max-body-value-bytes Email/get maxBodyValueBytes truncates large bodies RFC8621 §4.1.4 Required PASS PASS
fastmail: PASS
329ms
stalwart: PASS
2ms
src/tests/email/email-get-body.test.ts

  
email/body-multipart-alternative-text-and-html Email/get textBody and htmlBody differ for multipart/alternative RFC8621 §4.1.4 Required PASS PASS
fastmail: PASS
326ms
stalwart: PASS
2ms
src/tests/email/email-get-body.test.ts

  
email/body-non-utf8-charset Email/get handles non-UTF8 charset (EUC-KR) RFC8621 §4.1.4 Required PASS PASS
fastmail: PASS
309ms
stalwart: PASS
2ms
src/tests/email/email-get-body.test.ts

  
email/body-properties-filter Email/get bodyProperties limits returned body part properties RFC8621 §4.1.4 Required PASS PASS
fastmail: PASS
288ms
stalwart: PASS
2ms
src/tests/email/email-get-body.test.ts

  
email/body-structure Email/get bodyStructure returns MIME tree RFC8621 §4.1.4 Required PASS PASS
fastmail: PASS
282ms
stalwart: PASS
2ms
src/tests/email/email-get-body.test.ts

  
email/body-text-body Email/get textBody returns plain text parts RFC8621 §4.1.4 Required PASS PASS
fastmail: PASS
355ms
stalwart: PASS
2ms
src/tests/email/email-get-body.test.ts

  
email/body-values-all Email/get fetchAllBodyValues returns all body values RFC8621 §4.1.4 Required PASS PASS
fastmail: PASS
284ms
stalwart: PASS
2ms
src/tests/email/email-get-body.test.ts

  
email/body-values-html Email/get fetchHTMLBodyValues returns HTML content RFC8621 §4.1.4 Required PASS PASS
fastmail: PASS
304ms
stalwart: PASS
2ms
src/tests/email/email-get-body.test.ts

  
email/body-values-text Email/get fetchTextBodyValues returns body content RFC8621 §4.1.4 Required PASS PASS
fastmail: PASS
312ms
stalwart: PASS
2ms
src/tests/email/email-get-body.test.ts

  
email/changes-after-create-and-destroy Email/changes tracks creation and destruction RFC8621 §4.3 Required PASS PASS
fastmail: PASS
1822ms
stalwart: PASS
9ms
src/tests/email/email-changes.test.ts

  
email/changes-after-keyword-change Email/changes reflects keyword update RFC8621 §4.3 Required PASS PASS
fastmail: PASS
1463ms
stalwart: PASS
7ms
src/tests/email/email-changes.test.ts

  
email/changes-no-changes Email/changes with current state returns empty arrays RFC8621 §4.3 Required PASS PASS
fastmail: PASS
614ms
stalwart: PASS
3ms
src/tests/email/email-changes.test.ts

  
email/changes-response-structure Email/changes response has required properties RFC8621 §4.3 Required PASS PASS
fastmail: PASS
1632ms
stalwart: PASS
3ms
src/tests/email/email-changes.test.ts

  
email/collapse-threads-basic Email/query collapseThreads=true returns one per thread RFC8621 §4.4.3 Required PASS FAIL
fastmail: PASS
680ms
stalwart: FAIL
HTTP 400: Bad Request
2ms
src/tests/email/email-query-thread-collapse.test.ts

  
email/collapse-threads-calculate-total Email/query collapseThreads total counts unique threads RFC8621 §4.4.3 Required PASS FAIL
fastmail: PASS
311ms
stalwart: FAIL
HTTP 400: Bad Request
2ms
src/tests/email/email-query-thread-collapse.test.ts

  
email/collapse-threads-one-per-thread Email/query collapseThreads returns exactly one email per thread RFC8621 §4.4.3 Required PASS FAIL
fastmail: PASS
613ms
stalwart: FAIL
HTTP 400: Bad Request
2ms
src/tests/email/email-query-thread-collapse.test.ts

  
email/collapse-threads-sort-determines-representative Email/query collapseThreads uses sort to pick thread representative RFC8621 §4.4.3 Required PASS FAIL
fastmail: PASS
306ms
stalwart: FAIL
HTTP 400: Bad Request
2ms
src/tests/email/email-query-thread-collapse.test.ts

  
email/collapse-threads-with-filter Email/query collapseThreads interacts correctly with filter RFC8621 §4.4.3 Required PASS PASS
fastmail: PASS
307ms
stalwart: PASS
2ms
src/tests/email/email-query-thread-collapse.test.ts

  
email/copy-cross-account Email/copy copies email to another account RFC8621 §4.7 Required SKIP SKIP
fastmail: SKIP
No cross-account access available
0ms
stalwart: SKIP
No cross-account access available
0ms
src/tests/email/email-copy.test.ts

  
email/copy-not-found Email/copy returns notCreated for invalid source id RFC8621 §4.7 Required SKIP SKIP
fastmail: SKIP
No cross-account access available
0ms
stalwart: SKIP
No cross-account access available
0ms
src/tests/email/email-copy.test.ts

  
email/copy-same-account-error Email/copy rejects same-account copy RFC8621 §4.7 Required PASS PASS
fastmail: PASS
1204ms
stalwart: PASS
2ms
src/tests/email/email-copy.test.ts

  
email/filter-after Email/query filter after returns emails after date RFC8621 §4.4.1 Required PASS PASS
fastmail: PASS
379ms
stalwart: PASS
2ms
src/tests/email/email-query-filters.test.ts

  
email/filter-before Email/query filter before returns emails before date RFC8621 §4.4.1 Required PASS PASS
fastmail: PASS
442ms
stalwart: PASS
2ms
src/tests/email/email-query-filters.test.ts

  
email/filter-before-and-after Email/query filter with both before and after (date range) RFC8621 §4.4.1 Required PASS PASS
fastmail: PASS
285ms
stalwart: PASS
2ms
src/tests/email/email-query-filters.test.ts

  
email/filter-body Email/query filter body matches body text RFC8621 §4.4.1 Required PASS PASS
fastmail: PASS
289ms
stalwart: PASS
2ms
src/tests/email/email-query-filters.test.ts

  
email/filter-cc Email/query filter cc matches CC recipient RFC8621 §4.4.1 Required PASS PASS
fastmail: PASS
305ms
stalwart: PASS
2ms
src/tests/email/email-query-filters.test.ts

  
email/filter-custom-keyword Email/query filter hasKeyword with custom keyword RFC8621 §4.4.1 Required PASS PASS
fastmail: PASS
284ms
stalwart: PASS
2ms
src/tests/email/email-query-filters.test.ts

  
email/filter-empty-matches-all Email/query with null filter returns all emails RFC8621 §4.4.1 Required PASS FAIL
fastmail: PASS
304ms
stalwart: FAIL
HTTP 400: Bad Request
2ms
src/tests/email/email-query-filters.test.ts

  
email/filter-from Email/query filter from matches sender RFC8621 §4.4.1 Required PASS PASS
fastmail: PASS
379ms
stalwart: PASS
2ms
src/tests/email/email-query-filters.test.ts

  
email/filter-from-display-name Email/query filter from matches display name RFC8621 §4.4.1 Required PASS PASS
fastmail: PASS
286ms
stalwart: PASS
2ms
src/tests/email/email-query-filters.test.ts

  
email/filter-has-attachment-false Email/query filter hasAttachment=false returns emails without attachments RFC8621 §4.4.1 Required PASS FAIL
fastmail: PASS
291ms
stalwart: FAIL
Expected array to NOT include "geiaaabrc"
2ms
src/tests/email/email-query-filters.test.ts

  
email/filter-has-attachment-true Email/query filter hasAttachment=true returns emails with attachments RFC8621 §4.4.1 Required PASS FAIL
fastmail: PASS
1010ms
stalwart: FAIL
Expected array to include "geiaaabrc", got []
2ms
src/tests/email/email-query-filters.test.ts

  
email/filter-has-keyword Email/query filter hasKeyword returns emails with that keyword RFC8621 §4.4.1 Required PASS PASS
fastmail: PASS
305ms
stalwart: PASS
2ms
src/tests/email/email-query-filters.test.ts

  
email/filter-header-name-only Email/query filter header [name] checks header existence RFC8621 §4.4.1 Required PASS FAIL
fastmail: PASS
284ms
stalwart: FAIL
Expected array to include "gfuaaabrn", got []
2ms
src/tests/email/email-query-filters.test.ts

  
email/filter-header-name-value Email/query filter header [name, value] checks header value RFC8621 §4.4.1 Required PASS FAIL
fastmail: PASS
286ms
stalwart: FAIL
Expected array to include "gfuaaabrn", got []
2ms
src/tests/email/email-query-filters.test.ts

  
email/filter-in-child-mailbox Email/query filter inMailbox with child mailbox RFC8621 §4.4.1 Required PASS PASS
fastmail: PASS
284ms
stalwart: PASS
2ms
src/tests/email/email-query-filters.test.ts

  
email/filter-in-mailbox Email/query filter inMailbox returns emails in that mailbox RFC8621 §4.4.1 Required PASS PASS
fastmail: PASS
284ms
stalwart: PASS
2ms
src/tests/email/email-query-filters.test.ts

  
email/filter-in-mailbox-other-than Email/query filter inMailboxOtherThan excludes specified mailboxes RFC8621 §4.4.1 Required PASS PASS
fastmail: PASS
1150ms
stalwart: PASS
2ms
src/tests/email/email-query-filters.test.ts

  
email/filter-max-size Email/query filter maxSize returns emails at most that size RFC8621 §4.4.1 Required PASS PASS
fastmail: PASS
309ms
stalwart: PASS
2ms
src/tests/email/email-query-filters.test.ts

  
email/filter-min-size Email/query filter minSize returns emails at least that size RFC8621 §4.4.1 Required PASS PASS
fastmail: PASS
303ms
stalwart: PASS
2ms
src/tests/email/email-query-filters.test.ts

  
email/filter-multiple-conditions-on-one-filter Email/query with multiple conditions on single FilterCondition RFC8621 §4.4.1 Required PASS PASS
fastmail: PASS
905ms
stalwart: PASS
2ms
src/tests/email/email-query-filters.test.ts

  
email/filter-nested-operators Email/query nested FilterOperators work correctly RFC8621 §4.4.1 Required PASS PASS
fastmail: PASS
356ms
stalwart: PASS
2ms
src/tests/email/email-query-filters.test.ts

  
email/filter-none-in-thread-have-keyword Email/query filter noneInThreadHaveKeyword excludes threads with keyword RFC8621 §4.4.1 Required PASS PASS
fastmail: PASS
290ms
stalwart: PASS
2ms
src/tests/email/email-query-filters.test.ts

  
email/filter-not-keyword Email/query filter notKeyword excludes emails with keyword RFC8621 §4.4.1 Required PASS PASS
fastmail: PASS
309ms
stalwart: PASS
2ms
src/tests/email/email-query-filters.test.ts

  
email/filter-operator-and Email/query FilterOperator AND combines conditions RFC8621 §4.4.1 Required PASS PASS
fastmail: PASS
326ms
stalwart: PASS
2ms
src/tests/email/email-query-filters.test.ts

  
email/filter-operator-not Email/query FilterOperator NOT negates condition RFC8621 §4.4.1 Required PASS PASS
fastmail: PASS
284ms
stalwart: PASS
2ms
src/tests/email/email-query-filters.test.ts

  
email/filter-operator-or Email/query FilterOperator OR combines conditions RFC8621 §4.4.1 Required PASS PASS
fastmail: PASS
284ms
stalwart: PASS
2ms
src/tests/email/email-query-filters.test.ts

  
email/filter-some-in-thread-have-keyword Email/query filter someInThreadHaveKeyword matches RFC8621 §4.4.1 Required PASS PASS
fastmail: PASS
393ms
stalwart: PASS
2ms
src/tests/email/email-query-filters.test.ts

  
email/filter-subject Email/query filter subject matches subject text RFC8621 §4.4.1 Required PASS PASS
fastmail: PASS
284ms
stalwart: PASS
2ms
src/tests/email/email-query-filters.test.ts

  
email/filter-text-search-body Email/query filter text SHOULD search body content RFC8621 §4.4.1 Recommended PASS PASS
fastmail: PASS
286ms
stalwart: PASS
2ms
src/tests/email/email-query-filters.test.ts

  
email/filter-text-search-headers Email/query filter text MUST search from/to/cc/bcc/subject RFC8621 §4.4.1 Required PASS PASS
fastmail: PASS
284ms
stalwart: PASS
2ms
src/tests/email/email-query-filters.test.ts

  
email/filter-to Email/query filter to matches recipient RFC8621 §4.4.1 Required PASS PASS
fastmail: PASS
310ms
stalwart: PASS
2ms
src/tests/email/email-query-filters.test.ts

  
email/get-by-id Email/get returns email by id RFC8621 §4.1 Required PASS PASS
fastmail: PASS
297ms
stalwart: PASS
2ms
src/tests/email/email-get.test.ts

  
email/get-has-attachment-false Email/get hasAttachment is false for plain email RFC8621 §4.1 Required PASS PASS
fastmail: PASS
307ms
stalwart: PASS
2ms
src/tests/email/email-get.test.ts

  
email/get-has-attachment-true Email/get hasAttachment is true for email with attachment RFC8621 §4.1 Required PASS PASS
fastmail: PASS
307ms
stalwart: PASS
2ms
src/tests/email/email-get.test.ts

  
email/get-keywords Email/get keywords reflect set keywords RFC8621 §4.1 Required PASS PASS
fastmail: PASS
374ms
stalwart: PASS
2ms
src/tests/email/email-get.test.ts

  
email/get-mailbox-ids Email/get mailboxIds reflects correct mailbox membership RFC8621 §4.1 Required PASS PASS
fastmail: PASS
327ms
stalwart: PASS
2ms
src/tests/email/email-get.test.ts

  
email/get-metadata-properties Email/get returns all metadata properties RFC8621 §4.1 Required PASS PASS
fastmail: PASS
331ms
stalwart: PASS
2ms
src/tests/email/email-get.test.ts

  
email/get-multiple-emails Email/get with multiple ids returns all RFC8621 §4.1 Required PASS PASS
fastmail: PASS
306ms
stalwart: PASS
2ms
src/tests/email/email-get.test.ts

  
email/get-not-found Email/get returns notFound for unknown ids RFC8621 §4.1 Required PASS FAIL
fastmail: PASS
307ms
stalwart: FAIL
Expected array to include "nonexistent-email-xyz", got []
2ms
src/tests/email/email-get.test.ts

  
email/get-preview-is-text Email/get preview is plain text summary RFC8621 §4.1 Required PASS PASS
fastmail: PASS
334ms
stalwart: PASS
2ms
src/tests/email/email-get.test.ts

  
email/get-properties-filter Email/get properties filter limits returned properties RFC8621 §4.1 Required PASS PASS
fastmail: PASS
284ms
stalwart: PASS
2ms
src/tests/email/email-get.test.ts

  
email/get-received-at-is-utc-date Email/get receivedAt is a valid UTC date string RFC8621 §4.1 Required PASS PASS
fastmail: PASS
303ms
stalwart: PASS
2ms
src/tests/email/email-get.test.ts

  
email/get-state-returned Email/get returns state string RFC8621 §4.1 Required PASS PASS
fastmail: PASS
307ms
stalwart: PASS
2ms
src/tests/email/email-get.test.ts

  
email/get-thread-id-consistent Email/get threadId is consistent for threaded emails RFC8621 §4.1 Required PASS PASS
fastmail: PASS
308ms
stalwart: PASS
2ms
src/tests/email/email-get.test.ts

  
email/header-as-addresses Email/get header:From:asAddresses returns parsed addresses RFC8621 §4.1.2 Required PASS PASS
fastmail: PASS
991ms
stalwart: PASS
2ms
src/tests/email/email-get-headers.test.ts

  
email/header-as-date Email/get header:Date:asDate returns parsed date RFC8621 §4.1.2 Required PASS PASS
fastmail: PASS
318ms
stalwart: PASS
2ms
src/tests/email/email-get-headers.test.ts

  
email/header-as-grouped-addresses Email/get header:From:asGroupedAddresses returns grouped format RFC8621 §4.1.2 Required PASS PASS
fastmail: PASS
284ms
stalwart: PASS
2ms
src/tests/email/email-get-headers.test.ts

  
email/header-as-message-ids Email/get header:Message-ID:asMessageIds returns parsed IDs RFC8621 §4.1.2 Required PASS PASS
fastmail: PASS
1013ms
stalwart: PASS
2ms
src/tests/email/email-get-headers.test.ts

  
email/header-as-urls Email/get header:List-Unsubscribe:asURLs returns URL array RFC8621 §4.1.2 Required PASS PASS
fastmail: PASS
282ms
stalwart: PASS
2ms
src/tests/email/email-get-headers.test.ts

  
email/header-bcc Email/get 'bcc' returns BCC addresses when available RFC8621 §4.1.2 Required PASS PASS
fastmail: PASS
282ms
stalwart: PASS
2ms
src/tests/email/email-get-headers.test.ts

  
email/header-case-insensitive Email/get header names are case-insensitive RFC8621 §4.1.2 Required PASS PASS
fastmail: PASS
282ms
stalwart: PASS
2ms
src/tests/email/email-get-headers.test.ts

  
email/header-cc Email/get 'cc' returns CC addresses RFC8621 §4.1.2 Required PASS PASS
fastmail: PASS
307ms
stalwart: PASS
2ms
src/tests/email/email-get-headers.test.ts

  
email/header-custom-header Email/get header:X-Custom-Header returns custom header value RFC8621 §4.1.2 Required PASS PASS
fastmail: PASS
332ms
stalwart: PASS
2ms
src/tests/email/email-get-headers.test.ts

  
email/header-from Email/get 'from' returns sender address RFC8621 §4.1.2 Required PASS PASS
fastmail: PASS
307ms
stalwart: PASS
2ms
src/tests/email/email-get-headers.test.ts

  
email/header-in-reply-to Email/get 'inReplyTo' returns referenced message IDs RFC8621 §4.1.2 Required PASS PASS
fastmail: PASS
283ms
stalwart: PASS
2ms
src/tests/email/email-get-headers.test.ts

  
email/header-intl-from-decoded Email/get decodes RFC 2047 encoded From header RFC8621 §4.1.2 Required PASS PASS
fastmail: PASS
282ms
stalwart: PASS
3ms
src/tests/email/email-get-headers.test.ts

  
email/header-message-id Email/get 'messageId' returns array of message IDs RFC8621 §4.1.2 Required PASS PASS
fastmail: PASS
309ms
stalwart: PASS
2ms
src/tests/email/email-get-headers.test.ts

  
email/header-raw-access Email/get header:Subject:asText returns raw header value RFC8621 §4.1.2 Required PASS PASS
fastmail: PASS
283ms
stalwart: PASS
2ms
src/tests/email/email-get-headers.test.ts

  
email/header-raw-form Email/get header:Subject (raw) returns raw header value RFC8621 §4.1.2 Required PASS PASS
fastmail: PASS
282ms
stalwart: PASS
2ms
src/tests/email/email-get-headers.test.ts

  
email/header-references Email/get 'references' returns full reference chain RFC8621 §4.1.2 Required PASS PASS
fastmail: PASS
284ms
stalwart: PASS
2ms
src/tests/email/email-get-headers.test.ts

  
email/header-sent-at Email/get 'sentAt' returns Date header as date string RFC8621 §4.1.2 Required PASS PASS
fastmail: PASS
304ms
stalwart: PASS
2ms
src/tests/email/email-get-headers.test.ts

  
email/header-subject Email/get 'subject' returns subject string RFC8621 §4.1.2 Required PASS PASS
fastmail: PASS
281ms
stalwart: PASS
2ms
src/tests/email/email-get-headers.test.ts

  
email/header-subject-empty Email/get 'subject' for email with no subject RFC8621 §4.1.2 Required PASS PASS
fastmail: PASS
336ms
stalwart: PASS
2ms
src/tests/email/email-get-headers.test.ts

  
email/header-to Email/get 'to' returns recipient addresses RFC8621 §4.1.2 Required PASS PASS
fastmail: PASS
307ms
stalwart: PASS
2ms
src/tests/email/email-get-headers.test.ts

  
email/import-invalid-blob Email/import rejects non-message blob RFC8621 §4.8 Recommended PASS
fastmail: PASS
634ms
stalwart: FAIL
Server MUST reject import of non-RFC5322 blob
4ms
src/tests/email/email-import.test.ts

  
email/import-multiple Email/import can import multiple emails at once RFC8621 §4.8 Required PASS PASS
fastmail: PASS
3053ms
stalwart: PASS
8ms
src/tests/email/email-import.test.ts

  
email/import-not-found-blob Email/import returns error for nonexistent blobId RFC8621 §4.8 Required FAIL FAIL
fastmail: FAIL
Expected "blobNotFound", got "invalidProperties"
308ms
stalwart: FAIL
Expected "blobNotFound", got "invalidProperties"
2ms
src/tests/email/email-import.test.ts

  
email/import-sets-keywords Email/import sets specified keywords RFC8621 §4.8 Required PASS PASS
fastmail: PASS
1229ms
stalwart: PASS
8ms
src/tests/email/email-import.test.ts

  
email/import-sets-mailbox Email/import places email in specified mailbox RFC8621 §4.8 Required PASS PASS
fastmail: PASS
1229ms
stalwart: PASS
8ms
src/tests/email/email-import.test.ts

  
email/import-sets-received-at Email/import sets specified receivedAt date RFC8621 §4.8 Required PASS PASS
fastmail: PASS
1208ms
stalwart: PASS
7ms
src/tests/email/email-import.test.ts

  
email/import-state-changes Email/import returns oldState and newState RFC8621 §4.8 Required PASS PASS
fastmail: PASS
923ms
stalwart: PASS
6ms
src/tests/email/email-import.test.ts

  
email/import-valid-message Email/import imports a valid RFC 5322 message RFC8621 §4.8 Required PASS PASS
fastmail: PASS
1967ms
stalwart: PASS
7ms
src/tests/email/email-import.test.ts

  
email/paging-anchor Email/query anchor returns results starting from anchored email RFC8621 §4.4 Required PASS FAIL
fastmail: PASS
586ms
stalwart: FAIL
HTTP 400: Bad Request
2ms
src/tests/email/email-query-paging.test.ts

  
email/paging-anchor-not-found Email/query MUST return anchorNotFound for invalid anchor RFC8621 §4.4 Required PASS FAIL
fastmail: PASS
283ms
stalwart: FAIL
Expected "anchorNotFound", got "invalidArguments"
2ms
src/tests/email/email-query-paging.test.ts

  
email/paging-anchor-offset Email/query anchor with anchorOffset shifts start RFC8621 §4.4 Required PASS FAIL
fastmail: PASS
641ms
stalwart: FAIL
HTTP 400: Bad Request
2ms
src/tests/email/email-query-paging.test.ts

  
email/paging-calculate-total Email/query calculateTotal returns total count RFC8621 §4.4 Required PASS FAIL
fastmail: PASS
307ms
stalwart: FAIL
HTTP 400: Bad Request
2ms
src/tests/email/email-query-paging.test.ts

  
email/paging-limit Email/query limit restricts result count RFC8621 §4.4 Required PASS FAIL
fastmail: PASS
308ms
stalwart: FAIL
HTTP 400: Bad Request
2ms
src/tests/email/email-query-paging.test.ts

  
email/paging-negative-position Email/query with negative position counts from end RFC8621 §4.4 Required PASS FAIL
fastmail: PASS
801ms
stalwart: FAIL
HTTP 400: Bad Request
2ms
src/tests/email/email-query-paging.test.ts

  
email/paging-position-beyond-total Email/query with position >= total returns empty RFC8621 §4.4 Required PASS FAIL
fastmail: PASS
284ms
stalwart: FAIL
HTTP 400: Bad Request
2ms
src/tests/email/email-query-paging.test.ts

  
email/paging-position-zero Email/query position=0 starts from beginning RFC8621 §4.4 Required PASS FAIL
fastmail: PASS
290ms
stalwart: FAIL
HTTP 400: Bad Request
2ms
src/tests/email/email-query-paging.test.ts

  
email/paging-positive-position Email/query with positive position skips results RFC8621 §4.4 Required PASS FAIL
fastmail: PASS
572ms
stalwart: FAIL
HTTP 400: Bad Request
2ms
src/tests/email/email-query-paging.test.ts

  
email/paging-response-position Email/query response position reflects actual start position RFC8621 §4.4 Required PASS FAIL
fastmail: PASS
290ms
stalwart: FAIL
HTTP 400: Bad Request
2ms
src/tests/email/email-query-paging.test.ts

  
email/parse-body-values Email/parse returns body values when requested RFC8621 §4.9 Required PASS PASS
fastmail: PASS
599ms
stalwart: PASS
3ms
src/tests/email/email-parse.test.ts

  
email/parse-not-found Email/parse returns notFound for invalid blobId RFC8621 §4.9 Required PASS FAIL
fastmail: PASS
304ms
stalwart: FAIL
undefined is not an object (evaluating 'arr.includes')
2ms
src/tests/email/email-parse.test.ts

  
email/parse-not-parsable Email/parse returns notParsable for non-email blob RFC8621 §4.9 Recommended
fastmail: FAIL
Server MUST return notParsable for non-email blob
1550ms
stalwart: FAIL
Server MUST return notParsable for non-email blob
3ms
src/tests/email/email-parse.test.ts

  
email/parse-null-metadata Email/parse returns null for metadata properties (id, mailboxIds, etc) RFC8621 §4.9 Required FAIL PASS
fastmail: FAIL
Expected null, got {}
638ms
stalwart: PASS
3ms
src/tests/email/email-parse.test.ts

  
email/parse-response-structure Email/parse response has required properties RFC8621 §4.9 Required PASS PASS
fastmail: PASS
614ms
stalwart: PASS
3ms
src/tests/email/email-parse.test.ts

  
email/parse-valid-message Email/parse parses uploaded RFC 5322 message RFC8621 §4.9 Required PASS PASS
fastmail: PASS
1533ms
stalwart: PASS
4ms
src/tests/email/email-parse.test.ts

  
email/query-changes-after-add Email/queryChanges reflects newly added email RFC8621 §4.5 Required PASS PASS
fastmail: PASS
1213ms
stalwart: PASS
8ms
src/tests/email/email-query-changes.test.ts

  
email/query-changes-after-remove Email/queryChanges reflects removed email RFC8621 §4.5 Required PASS PASS
fastmail: PASS
1246ms
stalwart: PASS
8ms
src/tests/email/email-query-changes.test.ts

  
email/query-changes-no-changes Email/queryChanges with current state returns empty changes RFC8621 §4.5 Required PASS PASS
fastmail: PASS
609ms
stalwart: PASS
3ms
src/tests/email/email-query-changes.test.ts

  
email/query-changes-response-structure Email/queryChanges response has required properties RFC8621 §4.5 Required PASS FAIL
fastmail: PASS
612ms
stalwart: FAIL
JMAP method error: invalidArguments - invalid type: null, expected a filter object at line 1 column 201
2ms
src/tests/email/email-query-changes.test.ts

  
email/set-create-creation-id-reference Email/set create uses creation id reference for mailbox RFC8621 §4.6 Required PASS PASS
fastmail: PASS
1100ms
stalwart: PASS
6ms
src/tests/email/email-set-create.test.ts

  
email/set-create-html Email/set create HTML email RFC8621 §4.6 Required PASS PASS
fastmail: PASS
598ms
stalwart: PASS
4ms
src/tests/email/email-set-create.test.ts

  
email/set-create-multipart-alternative Email/set create multipart/alternative email RFC8621 §4.6 Required PASS PASS
fastmail: PASS
1860ms
stalwart: PASS
6ms
src/tests/email/email-set-create.test.ts

  
email/set-create-plain-text Email/set create plain text email RFC8621 §4.6 Required PASS PASS
fastmail: PASS
615ms
stalwart: PASS
4ms
src/tests/email/email-set-create.test.ts

  
email/set-create-server-set-properties Email/set create returns server-set properties RFC8621 §4.6 Required PASS PASS
fastmail: PASS
581ms
stalwart: PASS
4ms
src/tests/email/email-set-create.test.ts

  
email/set-create-state-changes Email/set create changes state RFC8621 §4.6 Required PASS PASS
fastmail: PASS
576ms
stalwart: PASS
4ms
src/tests/email/email-set-create.test.ts

  
email/set-create-with-attachment Email/set create email with attachment via blobId RFC8621 §4.6 Required PASS PASS
fastmail: PASS
868ms
stalwart: PASS
6ms
src/tests/email/email-set-create.test.ts

  
email/set-create-with-keywords Email/set create with keywords (draft, seen) RFC8621 §4.6 Required PASS PASS
fastmail: PASS
860ms
stalwart: PASS
5ms
src/tests/email/email-set-create.test.ts

  
email/set-destroy-multiple Email/set destroy multiple emails at once RFC8621 §4.6 Required PASS PASS
fastmail: PASS
598ms
stalwart: PASS
4ms
src/tests/email/email-set-destroy.test.ts

  
email/set-destroy-not-found Email/set destroy returns notDestroyed for unknown id RFC8621 §4.6 Required PASS FAIL
fastmail: PASS
1290ms
stalwart: FAIL
undefined is not an object (evaluating 'notDestroyed["nonexistent-email-xyz"]')
2ms
src/tests/email/email-set-destroy.test.ts

  
email/set-destroy-removes-from-all-mailboxes Email/set destroy removes email from all mailboxes RFC8621 §4.6 Required PASS PASS
fastmail: PASS
1491ms
stalwart: PASS
7ms
src/tests/email/email-set-destroy.test.ts

  
email/set-destroy-single Email/set destroy single email RFC8621 §4.6 Required PASS PASS
fastmail: PASS
921ms
stalwart: PASS
6ms
src/tests/email/email-set-destroy.test.ts

  
email/set-update-add-keyword Email/set update adds keyword RFC8621 §4.6 Required PASS PASS
fastmail: PASS
908ms
stalwart: PASS
6ms
src/tests/email/email-set-update.test.ts

  
email/set-update-add-mailbox Email/set update adds email to additional mailbox RFC8621 §4.6 Required PASS PASS
fastmail: PASS
1286ms
stalwart: PASS
7ms
src/tests/email/email-set-update.test.ts

  
email/set-update-if-in-state Email/set update with ifInState succeeds with correct state RFC8621 §4.6 Required PASS PASS
fastmail: PASS
920ms
stalwart: PASS
5ms
src/tests/email/email-set-update.test.ts

  
email/set-update-move-mailbox Email/set update moves email to different mailbox RFC8621 §4.6 Required PASS PASS
fastmail: PASS
1154ms
stalwart: PASS
7ms
src/tests/email/email-set-update.test.ts

  
email/set-update-not-found Email/set update returns notUpdated for unknown id RFC8621 §4.6 Required PASS FAIL
fastmail: PASS
309ms
stalwart: FAIL
undefined is not an object (evaluating 'notUpdated["nonexistent-email-xyz"]')
2ms
src/tests/email/email-set-update.test.ts

  
email/set-update-remove-keyword Email/set update removes keyword via patch null RFC8621 §4.6 Required PASS PASS
fastmail: PASS
1869ms
stalwart: PASS
5ms
src/tests/email/email-set-update.test.ts

  
email/set-update-remove-mailbox Email/set update removes email from a mailbox via patch null RFC8621 §4.6 Required PASS PASS
fastmail: PASS
2272ms
stalwart: PASS
8ms
src/tests/email/email-set-update.test.ts

  
email/set-update-replace-keywords Email/set update replaces all keywords at once RFC8621 §4.6 Required PASS PASS
fastmail: PASS
1839ms
stalwart: PASS
5ms
src/tests/email/email-set-update.test.ts

  
email/sort-default-no-sort Email/query with no sort returns results in server-determined order RFC8621 §4.4.2 Required PASS PASS
fastmail: PASS
1050ms
stalwart: PASS
2ms
src/tests/email/email-query-sort.test.ts

  
email/sort-from Email/query sort by from RFC8621 §4.4.2 Required PASS PASS
fastmail: PASS
281ms
stalwart: PASS
2ms
src/tests/email/email-query-sort.test.ts

  
email/sort-has-keyword Email/query sort by hasKeyword RFC8621 §4.4.2 Required PASS PASS
fastmail: PASS
308ms
stalwart: PASS
2ms
src/tests/email/email-query-sort.test.ts

  
email/sort-multi-property Email/query sort by multiple properties RFC8621 §4.4.2 Required PASS FAIL
fastmail: PASS
972ms
stalwart: FAIL
HTTP 400: Bad Request
2ms
src/tests/email/email-query-sort.test.ts

  
email/sort-received-at-asc Email/query sort by receivedAt ascending (oldest first) RFC8621 §4.4.2 Required PASS PASS
fastmail: PASS
668ms
stalwart: PASS
4ms
src/tests/email/email-query-sort.test.ts

  
email/sort-received-at-desc Email/query sort by receivedAt descending (newest first) RFC8621 §4.4.2 Required PASS PASS
fastmail: PASS
564ms
stalwart: PASS
3ms
src/tests/email/email-query-sort.test.ts

  
email/sort-sent-at Email/query sort by sentAt RFC8621 §4.4.2 Required PASS PASS
fastmail: PASS
659ms
stalwart: PASS
4ms
src/tests/email/email-query-sort.test.ts

  
email/sort-size Email/query sort by size RFC8621 §4.4.2 Required PASS PASS
fastmail: PASS
1509ms
stalwart: PASS
4ms
src/tests/email/email-query-sort.test.ts

  
email/sort-subject Email/query sort by subject RFC8621 §4.4.2 Recommended PASS PASS
fastmail: PASS
849ms
stalwart: PASS
5ms
src/tests/email/email-query-sort.test.ts

  
email/sort-to Email/query sort by to RFC8621 §4.4.2 Required PASS FAIL
fastmail: PASS
283ms
stalwart: FAIL
HTTP 400: Bad Request
2ms
src/tests/email/email-query-sort.test.ts

  
identity (13)
identity/changes-after-update Identity/changes reflects updated identity RFC8621 §6.2 Required FAIL PASS
fastmail: FAIL
JMAP method error: cannotCalculateChanges - Not currently supported for this object type
1617ms
stalwart: PASS
8ms
src/tests/identity/identity-changes.test.ts

  
identity/changes-no-changes Identity/changes with current state returns empty RFC8621 §6.2 Required FAIL PASS
fastmail: FAIL
JMAP method error: cannotCalculateChanges - Not currently supported for this object type
561ms
stalwart: PASS
3ms
src/tests/identity/identity-changes.test.ts

  
identity/changes-response-structure Identity/changes response has required properties RFC8621 §6.2 Required FAIL PASS
fastmail: FAIL
JMAP method error: cannotCalculateChanges - Not currently supported for this object type
563ms
stalwart: PASS
3ms
src/tests/identity/identity-changes.test.ts

  
identity/get-all-identities Identity/get with ids=null returns all identities RFC8621 §6.1 Required PASS PASS
fastmail: PASS
293ms
stalwart: PASS
2ms
src/tests/identity/identity-get.test.ts

  
identity/get-identity-by-id Identity/get returns specific identity by id RFC8621 §6.1 Required PASS PASS
fastmail: PASS
293ms
stalwart: PASS
2ms
src/tests/identity/identity-get.test.ts

  
identity/get-identity-email-matches Identity email address is valid RFC8621 §6.1 Required PASS PASS
fastmail: PASS
296ms
stalwart: PASS
2ms
src/tests/identity/identity-get.test.ts

  
identity/get-identity-not-found Identity/get returns notFound for unknown id RFC8621 §6.1 Required FAIL FAIL
fastmail: FAIL
JMAP method error: invalidArguments - ids contains an invalid id: nonexistent-identity-xyz
280ms
stalwart: FAIL
Expected array to include "nonexistent-identity-xyz", got []
2ms
src/tests/identity/identity-get.test.ts

  
identity/get-identity-properties Identity object has required properties RFC8621 §6.1 Required PASS PASS
fastmail: PASS
297ms
stalwart: PASS
2ms
src/tests/identity/identity-get.test.ts

  
identity/set-not-found Identity/set update returns notUpdated for unknown id RFC8621 §6.3 Required PASS FAIL
fastmail: PASS
364ms
stalwart: FAIL
undefined is not an object (evaluating 'notUpdated["nonexistent-identity-xyz"]')
2ms
src/tests/identity/identity-set.test.ts

  
identity/set-update-html-signature Identity/set update htmlSignature RFC8621 §6.3 Required PASS PASS
fastmail: PASS
1283ms
stalwart: PASS
7ms
src/tests/identity/identity-set.test.ts

  
identity/set-update-name Identity/set update name RFC8621 §6.3 Required PASS PASS
fastmail: PASS
1457ms
stalwart: PASS
7ms
src/tests/identity/identity-set.test.ts

  
identity/set-update-reply-to Identity/set update replyTo RFC8621 §6.3 Required PASS PASS
fastmail: PASS
1826ms
stalwart: PASS
5ms
src/tests/identity/identity-set.test.ts

  
identity/set-update-text-signature Identity/set update textSignature RFC8621 §6.3 Required PASS PASS
fastmail: PASS
2645ms
stalwart: PASS
6ms
src/tests/identity/identity-set.test.ts

  
mailbox (43)
mailbox/changes-after-create Mailbox/changes reflects newly created mailbox RFC8621 §2.2 Required PASS PASS
fastmail: PASS
1349ms
stalwart: PASS
6ms
src/tests/mailbox/mailbox-changes.test.ts

  
mailbox/changes-after-rename Mailbox/changes reflects renamed mailbox as updated RFC8621 §2.2 Required PASS PASS
fastmail: PASS
2756ms
stalwart: PASS
8ms
src/tests/mailbox/mailbox-changes.test.ts

  
mailbox/changes-has-more-changes Mailbox/changes hasMoreChanges is boolean RFC8621 §2.2 Required PASS PASS
fastmail: PASS
563ms
stalwart: PASS
3ms
src/tests/mailbox/mailbox-changes.test.ts

  
mailbox/changes-no-changes Mailbox/changes with current state returns empty arrays RFC8621 §2.2 Required PASS PASS
fastmail: PASS
639ms
stalwart: PASS
3ms
src/tests/mailbox/mailbox-changes.test.ts

  
mailbox/changes-response-structure Mailbox/changes response has all required properties RFC8621 §2.2 Required PASS PASS
fastmail: PASS
758ms
stalwart: PASS
4ms
src/tests/mailbox/mailbox-changes.test.ts

  
mailbox/get-account-id-returned Mailbox/get returns accountId in response RFC8621 §2.1 Required PASS PASS
fastmail: PASS
282ms
stalwart: PASS
2ms
src/tests/mailbox/mailbox-get.test.ts

  
mailbox/get-all Mailbox/get with ids=null returns all mailboxes RFC8621 §2.1 Required PASS PASS
fastmail: PASS
365ms
stalwart: PASS
2ms
src/tests/mailbox/mailbox-get.test.ts

  
mailbox/get-by-ids Mailbox/get with specific ids returns requested mailboxes RFC8621 §2.1 Required PASS PASS
fastmail: PASS
1124ms
stalwart: PASS
2ms
src/tests/mailbox/mailbox-get.test.ts

  
mailbox/get-inbox-exists Inbox mailbox exists with role 'inbox' RFC8621 §2.1 Required PASS PASS
fastmail: PASS
311ms
stalwart: PASS
2ms
src/tests/mailbox/mailbox-get.test.ts

  
mailbox/get-mailbox-properties Mailbox object has all required properties RFC8621 §2.1 Required PASS PASS
fastmail: PASS
406ms
stalwart: PASS
2ms
src/tests/mailbox/mailbox-get.test.ts

  
mailbox/get-not-found Mailbox/get returns notFound for unknown ids RFC8621 §2.1 Required PASS FAIL
fastmail: PASS
305ms
stalwart: FAIL
Expected array to include "nonexistent-mailbox-xyz", got []
2ms
src/tests/mailbox/mailbox-get.test.ts

  
mailbox/get-parent-id-correct Child mailbox parentId references parent correctly RFC8621 §2.1 Required PASS PASS
fastmail: PASS
291ms
stalwart: PASS
2ms
src/tests/mailbox/mailbox-get.test.ts

  
mailbox/get-properties-filter Mailbox/get with properties filter returns only requested properties RFC8621 §2.1 Required PASS PASS
fastmail: PASS
409ms
stalwart: PASS
2ms
src/tests/mailbox/mailbox-get.test.ts

  
mailbox/get-state-returned Mailbox/get returns state string RFC8621 §2.1 Required PASS PASS
fastmail: PASS
307ms
stalwart: PASS
2ms
src/tests/mailbox/mailbox-get.test.ts

  
mailbox/get-total-emails-accurate Mailbox totalEmails reflects actual email count RFC8621 §2.1 Required PASS PASS
fastmail: PASS
629ms
stalwart: PASS
3ms
src/tests/mailbox/mailbox-get.test.ts

  
mailbox/query-all Mailbox/query with no filter returns all mailboxes RFC8621 §2.3 Required PASS FAIL
fastmail: PASS
320ms
stalwart: FAIL
HTTP 400: Bad Request
2ms
src/tests/mailbox/mailbox-query.test.ts

  
mailbox/query-changes-after-create Mailbox/queryChanges reflects new mailbox creation RFC8621 §2.4 Required PASS FAIL
fastmail: PASS
1348ms
stalwart: FAIL
HTTP 400: Bad Request
2ms
src/tests/mailbox/mailbox-query-changes.test.ts

  
mailbox/query-changes-no-changes Mailbox/queryChanges with current state returns empty changes RFC8621 §2.4 Required FAIL FAIL
fastmail: FAIL
Expected array length 0, got 2
599ms
stalwart: FAIL
HTTP 400: Bad Request
2ms
src/tests/mailbox/mailbox-query-changes.test.ts

  
mailbox/query-changes-response-structure Mailbox/queryChanges response has required properties RFC8621 §2.4 Required PASS FAIL
fastmail: PASS
612ms
stalwart: FAIL
JMAP method error: invalidArguments - invalid type: null, expected a filter object at line 1 column 203
2ms
src/tests/mailbox/mailbox-query-changes.test.ts

  
mailbox/query-filter-by-name Mailbox/query filter by name matches RFC8621 §2.3 Required PASS PASS
fastmail: PASS
307ms
stalwart: PASS
2ms
src/tests/mailbox/mailbox-query.test.ts

  
mailbox/query-filter-by-parent-id Mailbox/query filter by parentId returns children RFC8621 §2.3 Required PASS PASS
fastmail: PASS
305ms
stalwart: PASS
2ms
src/tests/mailbox/mailbox-query.test.ts

  
mailbox/query-filter-by-parent-id-null Mailbox/query filter by parentId=null returns top-level mailboxes RFC8621 §2.3 Required PASS PASS
fastmail: PASS
296ms
stalwart: PASS
2ms
src/tests/mailbox/mailbox-query.test.ts

  
mailbox/query-filter-by-role Mailbox/query filter by role returns correct mailbox RFC8621 §2.3 Required PASS PASS
fastmail: PASS
307ms
stalwart: PASS
2ms
src/tests/mailbox/mailbox-query.test.ts

  
mailbox/query-filter-has-any-role Mailbox/query filter hasAnyRole=true returns only role mailboxes RFC8621 §2.3 Required PASS PASS
fastmail: PASS
616ms
stalwart: PASS
3ms
src/tests/mailbox/mailbox-query.test.ts

  
mailbox/query-filter-has-any-role-false Mailbox/query filter hasAnyRole=false returns non-role mailboxes RFC8621 §2.3 Required PASS PASS
fastmail: PASS
306ms
stalwart: PASS
2ms
src/tests/mailbox/mailbox-query.test.ts

  
mailbox/query-limit Mailbox/query with limit returns at most limit results RFC8621 §2.3 Required PASS FAIL
fastmail: PASS
282ms
stalwart: FAIL
HTTP 400: Bad Request
2ms
src/tests/mailbox/mailbox-query.test.ts

  
mailbox/query-position Mailbox/query with position skips results RFC8621 §2.3 Required PASS FAIL
fastmail: PASS
639ms
stalwart: FAIL
HTTP 400: Bad Request
2ms
src/tests/mailbox/mailbox-query.test.ts

  
mailbox/query-response-structure Mailbox/query response has required properties RFC8621 §2.3 Required PASS FAIL
fastmail: PASS
307ms
stalwart: FAIL
JMAP method error: invalidArguments - invalid type: null, expected a filter object at line 1 column 203
2ms
src/tests/mailbox/mailbox-query.test.ts

  
mailbox/query-sort-by-name Mailbox/query sorted by name returns alphabetical order RFC8621 §2.3 Required PASS FAIL
fastmail: PASS
619ms
stalwart: FAIL
HTTP 400: Bad Request
2ms
src/tests/mailbox/mailbox-query.test.ts

  
mailbox/query-sort-by-sort-order Mailbox/query sorted by sortOrder RFC8621 §2.3 Required PASS FAIL
fastmail: PASS
302ms
stalwart: FAIL
HTTP 400: Bad Request
2ms
src/tests/mailbox/mailbox-query.test.ts

  
mailbox/set-cannot-destroy-with-children Mailbox/set MUST fail to destroy mailbox with children RFC8621 §2.5 Required PASS PASS
fastmail: PASS
3293ms
stalwart: PASS
9ms
src/tests/mailbox/mailbox-set.test.ts

  
mailbox/set-change-sort-order Mailbox/set update sortOrder RFC8621 §2.5 Required PASS PASS
fastmail: PASS
2332ms
stalwart: PASS
7ms
src/tests/mailbox/mailbox-set.test.ts

  
mailbox/set-create-child Mailbox/set create child mailbox RFC8621 §2.5 Required PASS PASS
fastmail: PASS
1962ms
stalwart: PASS
5ms
src/tests/mailbox/mailbox-set.test.ts

  
mailbox/set-create-returns-server-set-props Mailbox/set create returns server-set properties RFC8621 §2.5 Required PASS PASS
fastmail: PASS
670ms
stalwart: PASS
3ms
src/tests/mailbox/mailbox-set.test.ts

  
mailbox/set-create-top-level Mailbox/set create top-level mailbox RFC8621 §2.5 Required PASS PASS
fastmail: PASS
743ms
stalwart: PASS
3ms
src/tests/mailbox/mailbox-set.test.ts

  
mailbox/set-destroy-empty Mailbox/set destroy empty mailbox RFC8621 §2.5 Required PASS PASS
fastmail: PASS
683ms
stalwart: PASS
4ms
src/tests/mailbox/mailbox-set.test.ts

  
mailbox/set-destroy-not-found Mailbox/set destroy returns notDestroyed for unknown id RFC8621 §2.5 Required PASS FAIL
fastmail: PASS
1265ms
stalwart: FAIL
undefined is not an object (evaluating 'notDestroyed["nonexistent-mailbox-xyz"]')
2ms
src/tests/mailbox/mailbox-set.test.ts

  
mailbox/set-duplicate-name-same-parent Mailbox/set MUST reject duplicate name under same parent RFC8621 §2.5 Required FAIL FAIL
fastmail: FAIL
Expected "alreadyExists", got "invalidProperties"
1320ms
stalwart: FAIL
Expected "alreadyExists", got "invalidProperties"
5ms
src/tests/mailbox/mailbox-set.test.ts

  
mailbox/set-move-parent Mailbox/set change parent (move mailbox) RFC8621 §2.5 Required PASS PASS
fastmail: PASS
1843ms
stalwart: PASS
7ms
src/tests/mailbox/mailbox-set.test.ts

  
mailbox/set-on-destroy-remove-emails Mailbox/set destroy with onDestroyRemoveEmails removes emails RFC8621 §2.5 Required PASS PASS
fastmail: PASS
1091ms
stalwart: PASS
6ms
src/tests/mailbox/mailbox-set.test.ts

  
mailbox/set-on-destroy-remove-emails-with-children Mailbox/set destroy with onDestroyRemoveEmails MUST fail if mailbox has children RFC8621 §2.5 Required PASS PASS
fastmail: PASS
3208ms
stalwart: PASS
17ms
src/tests/mailbox/mailbox-set.test.ts

  
mailbox/set-rename Mailbox/set rename mailbox RFC8621 §2.5 Required PASS PASS
fastmail: PASS
2208ms
stalwart: PASS
7ms
src/tests/mailbox/mailbox-set.test.ts

  
mailbox/set-state-changes Mailbox/set returns oldState and newState RFC8621 §2.5 Required PASS PASS
fastmail: PASS
1614ms
stalwart: PASS
3ms
src/tests/mailbox/mailbox-set.test.ts

  
push-eventsource (4)
push-eventsource/eventsource-closeafter EventSource closeafter=state closes after first event RFC8620 §7.3 Required PASS PASS
fastmail: PASS
927ms
stalwart: PASS
2ms
src/tests/push/event-source.test.ts

  
push-eventsource/eventsource-connect EventSource URL is connectable RFC8620 §7.3 Required PASS PASS
fastmail: PASS
304ms
stalwart: PASS
3ms
src/tests/push/event-source.test.ts

  
push-eventsource/eventsource-receives-state-change EventSource receives StateChange event after modification RFC8620 §7.3 Required FAIL PASS
fastmail: FAIL
Expected "StateChange", got undefined
2458ms
stalwart: PASS
508ms
src/tests/push/event-source.test.ts

  
push-eventsource/eventsource-types-filter EventSource types parameter filters event types RFC8620 §7.3 Required PASS PASS
fastmail: PASS
307ms
stalwart: PASS
2ms
src/tests/push/event-source.test.ts

  
push-subscription (7)
push-subscription/push-subscription-create PushSubscription/set creates a subscription RFC8620 §7.2 Required FAIL PASS
fastmail: FAIL
JMAP method error: unknownMethod - Unknown method 'set'
406ms
stalwart: PASS
3ms
src/tests/push/push-subscription.test.ts

  
push-subscription/push-subscription-destroy PushSubscription/set destroy removes subscription RFC8620 §7.2 Required FAIL PASS
fastmail: FAIL
JMAP method error: unknownMethod - Unknown method 'set'
308ms
stalwart: PASS
5ms
src/tests/push/push-subscription.test.ts

  
push-subscription/push-subscription-get PushSubscription/get returns created subscriptions RFC8620 §7.2 Required FAIL PASS
fastmail: FAIL
JMAP method error: unknownMethod - Unknown method 'set'
308ms
stalwart: PASS
5ms
src/tests/push/push-subscription.test.ts

  
push-subscription/push-subscription-receives-notification PushSubscription MUST receive push notification after change RFC8620 §7.2 Required FAIL FAIL
fastmail: FAIL
JMAP method error: unknownMethod - Unknown method 'set'
1845ms
stalwart: FAIL
Server MUST send push notification after state change
15007ms
src/tests/push/push-subscription.test.ts

  
push-subscription/push-subscription-reject-non-https PushSubscription/set MUST reject non-https URL RFC8620 §7.2 Required FAIL PASS
fastmail: FAIL
JMAP method error: unknownMethod - Unknown method 'set'
1087ms
stalwart: PASS
2ms
src/tests/push/push-subscription.test.ts

  
push-subscription/push-subscription-types-filter PushSubscription/set can set types filter RFC8620 §7.2 Required FAIL PASS
fastmail: FAIL
JMAP method error: unknownMethod - Unknown method 'set'
407ms
stalwart: PASS
3ms
src/tests/push/push-subscription.test.ts

  
push-subscription/push-subscription-verification PushSubscription supports verification code RFC8620 §7.2 Required FAIL PASS
fastmail: FAIL
JMAP method error: unknownMethod - Unknown method 'set'
310ms
stalwart: PASS
6ms
src/tests/push/push-subscription.test.ts

  
search-snippet (6)
search-snippet/snippet-body-match SearchSnippet/get returns snippet for body text match RFC8621 §5 Required PASS PASS
fastmail: PASS
615ms
stalwart: PASS
4ms
src/tests/search-snippet/search-snippet-get.test.ts

  
search-snippet/snippet-mark-tags SearchSnippet/get SHOULD use <mark> tags for highlighting RFC8621 §5 Recommended PASS PASS
fastmail: PASS
677ms
stalwart: PASS
4ms
src/tests/search-snippet/search-snippet-get.test.ts

  
search-snippet/snippet-not-found SearchSnippet/get returns notFound for invalid emailId RFC8621 §5 Required PASS FAIL
fastmail: PASS
283ms
stalwart: FAIL
undefined is not an object (evaluating 'arr.includes')
2ms
src/tests/search-snippet/search-snippet-get.test.ts

  
search-snippet/snippet-null-when-no-match SearchSnippet/get returns null fields when no text match in snippet RFC8621 §5 Required PASS FAIL
fastmail: PASS
1127ms
stalwart: FAIL
Expected null, got undefined
2ms
src/tests/search-snippet/search-snippet-get.test.ts

  
search-snippet/snippet-response-structure SearchSnippet/get response has required properties RFC8621 §5 Required FAIL FAIL
fastmail: FAIL
notFound must be array
956ms
stalwart: FAIL
notFound must be array
2ms
src/tests/search-snippet/search-snippet-get.test.ts

  
search-snippet/snippet-subject-match SearchSnippet/get returns snippet for subject match RFC8621 §5 Required PASS PASS
fastmail: PASS
1741ms
stalwart: PASS
4ms
src/tests/search-snippet/search-snippet-get.test.ts

  
submission (13)
submission/changes-no-changes EmailSubmission/changes with current state returns empty RFC8621 §7.2 Required PASS PASS
fastmail: PASS
564ms
stalwart: PASS
3ms
src/tests/submission/submission-changes.test.ts

  
submission/changes-response-structure EmailSubmission/changes response has required properties RFC8621 §7.2 Required PASS PASS
fastmail: PASS
1509ms
stalwart: PASS
3ms
src/tests/submission/submission-changes.test.ts

  
submission/get-empty EmailSubmission/get with ids=null returns submissions RFC8621 §7.1 Required PASS PASS
fastmail: PASS
1050ms
stalwart: PASS
2ms
src/tests/submission/submission-get.test.ts

  
submission/get-not-found EmailSubmission/get returns notFound for unknown id RFC8621 §7.1 Required PASS FAIL
fastmail: PASS
307ms
stalwart: FAIL
Expected array to include "nonexistent-submission-xyz", got []
2ms
src/tests/submission/submission-get.test.ts

  
submission/get-response-structure EmailSubmission/get response has required properties RFC8621 §7.1 Required PASS PASS
fastmail: PASS
281ms
stalwart: PASS
2ms
src/tests/submission/submission-get.test.ts

  
submission/query-all EmailSubmission/query with no filter returns all submissions RFC8621 §7.3 Required PASS FAIL
fastmail: PASS
306ms
stalwart: FAIL
JMAP method error: invalidArguments - invalid type: null, expected a filter object at line 1 column 211
2ms
src/tests/submission/submission-query.test.ts

  
submission/query-filter-undo-status EmailSubmission/query filter by undoStatus RFC8621 §7.3 Required PASS PASS
fastmail: PASS
283ms
stalwart: PASS
2ms
src/tests/submission/submission-query.test.ts

  
submission/query-response-structure EmailSubmission/query response has required properties RFC8621 §7.3 Required PASS FAIL
fastmail: PASS
331ms
stalwart: FAIL
JMAP method error: invalidArguments - invalid type: null, expected a filter object at line 1 column 211
2ms
src/tests/submission/submission-query.test.ts

  
submission/set-create-submission EmailSubmission/set creates a submission (sends email) RFC8621 §7.5 Required PASS FAIL
fastmail: PASS
1229ms
stalwart: FAIL
Expected truthy value, got undefined
6ms
src/tests/submission/submission-set.test.ts

  
submission/set-create-with-envelope EmailSubmission/set with explicit envelope RFC8621 §7.5 Required PASS PASS
fastmail: PASS
2253ms
stalwart: PASS
6ms
src/tests/submission/submission-set.test.ts

  
submission/set-no-recipients-error EmailSubmission/set MUST reject email with no recipients RFC8621 §7.5 Required PASS PASS
fastmail: PASS
864ms
stalwart: PASS
6ms
src/tests/submission/submission-set.test.ts

  
submission/set-on-success-update-email EmailSubmission/set onSuccessUpdateEmail moves to sent and removes $draft RFC8621 §7.5 Required PASS PASS
fastmail: PASS
1431ms
stalwart: PASS
8ms
src/tests/submission/submission-set.test.ts

  
submission/set-submission-properties EmailSubmission object has required properties RFC8621 §7.5 Required FAIL PASS
fastmail: FAIL
undefined is not an object (evaluating 'fetchedSub.identityId')
1429ms
stalwart: PASS
8ms
src/tests/submission/submission-set.test.ts

  
thread (9)
thread/changes-after-email-destroy Thread/changes reflects destroyed thread after last email removed RFC8621 §3.2 Required PASS FAIL
fastmail: PASS
2047ms
stalwart: FAIL
Expected array to include "br7", got []
10ms
src/tests/thread/thread-changes.test.ts

  
thread/changes-after-new-email Thread/changes reflects new thread after email creation RFC8621 §3.2 Required PASS PASS
fastmail: PASS
2151ms
stalwart: PASS
8ms
src/tests/thread/thread-changes.test.ts

  
thread/changes-no-changes Thread/changes with current state returns empty RFC8621 §3.2 Required PASS PASS
fastmail: PASS
1119ms
stalwart: PASS
4ms
src/tests/thread/thread-changes.test.ts

  
thread/changes-response-structure Thread/changes response has required properties RFC8621 §3.2 Required PASS PASS
fastmail: PASS
614ms
stalwart: PASS
4ms
src/tests/thread/thread-changes.test.ts

  
thread/get-single-email-thread Thread/get for single-email thread has one emailId RFC8621 §3.1 Required PASS PASS
fastmail: PASS
1172ms
stalwart: PASS
4ms
src/tests/thread/thread-get.test.ts

  
thread/get-thread-by-id Thread/get returns thread with emailIds RFC8621 §3.1 Required PASS PASS
fastmail: PASS
573ms
stalwart: PASS
4ms
src/tests/thread/thread-get.test.ts

  
thread/get-thread-email-ids-order Thread/get emailIds are ordered by receivedAt RFC8621 §3.1 Required PASS PASS
fastmail: PASS
851ms
stalwart: PASS
5ms
src/tests/thread/thread-get.test.ts

  
thread/get-thread-not-found Thread/get returns notFound for unknown thread id RFC8621 §3.1 Required PASS FAIL
fastmail: PASS
281ms
stalwart: FAIL
Expected array to include "nonexistent-thread-xyz", got []
2ms
src/tests/thread/thread-get.test.ts

  
thread/get-thread-response-structure Thread/get response has required properties RFC8621 §3.1 Required PASS PASS
fastmail: PASS
388ms
stalwart: PASS
2ms
src/tests/thread/thread-get.test.ts

  
vacation (10)
vacation/get-not-found-invalid-id VacationResponse/get returns notFound for non-singleton id RFC8621 §8.1 Required SKIP FAIL
fastmail: SKIP
Server does not support vacationresponse
0ms
stalwart: FAIL
Expected array to include "not-singleton", got []
2ms
src/tests/vacation/vacation-get.test.ts

  
vacation/get-singleton VacationResponse/get returns singleton with id='singleton' RFC8621 §8.1 Required SKIP FAIL
fastmail: SKIP
Server does not support vacationresponse
0ms
stalwart: FAIL
Expected array length 1, got 0
2ms
src/tests/vacation/vacation-get.test.ts

  
vacation/get-singleton-null-ids VacationResponse/get with ids=null returns singleton RFC8621 §8.1 Required SKIP FAIL
fastmail: SKIP
Server does not support vacationresponse
0ms
stalwart: FAIL
Expected array length 1, got 0
2ms
src/tests/vacation/vacation-get.test.ts

  
vacation/get-singleton-properties VacationResponse has all required properties RFC8621 §8.1 Required SKIP FAIL
fastmail: SKIP
Server does not support vacationresponse
0ms
stalwart: FAIL
undefined is not an object (evaluating 'vr.id')
2ms
src/tests/vacation/vacation-get.test.ts

  
vacation/set-cannot-create VacationResponse/set rejects create (singleton) RFC8621 §8.2 Required SKIP FAIL
fastmail: SKIP
Server does not support vacationresponse
0ms
stalwart: FAIL
Should not allow creating new VacationResponse
2ms
src/tests/vacation/vacation-set.test.ts

  
vacation/set-cannot-destroy VacationResponse/set rejects destroy (singleton) RFC8621 §8.2 Required SKIP FAIL
fastmail: SKIP
Server does not support vacationresponse
0ms
stalwart: FAIL
Should not allow destroying VacationResponse singleton
2ms
src/tests/vacation/vacation-set.test.ts

  
vacation/set-dates VacationResponse/set can set fromDate and toDate RFC8621 §8.2 Required SKIP PASS
fastmail: SKIP
Server does not support vacationresponse
0ms
stalwart: PASS
5ms
src/tests/vacation/vacation-set.test.ts

  
vacation/set-disable-vacation VacationResponse/set can disable vacation response RFC8621 §8.2 Required SKIP PASS
fastmail: SKIP
Server does not support vacationresponse
0ms
stalwart: PASS
3ms
src/tests/vacation/vacation-set.test.ts

  
vacation/set-enable-vacation VacationResponse/set can enable vacation response RFC8621 §8.2 Required SKIP FAIL
fastmail: SKIP
Server does not support vacationresponse
1ms
stalwart: FAIL
undefined is not an object (evaluating 'original.isEnabled')
5ms
src/tests/vacation/vacation-set.test.ts

  
vacation/set-html-body VacationResponse/set can set htmlBody RFC8621 §8.2 Required SKIP PASS
fastmail: SKIP
Server does not support vacationresponse
0ms
stalwart: PASS
5ms
src/tests/vacation/vacation-set.test.ts