|
64 | 64 | (define (server-message-contains? content) |
65 | 65 | (string-contains? (server-message-data server) content)) |
66 | 66 |
|
| 67 | + (define (assert-server-message-contains? content message-property-description) |
| 68 | + (assert |
| 69 | + (server-message-contains? content) |
| 70 | + (string-append "Expected server to receive message with " message-property-description ", but received: " (server-message-data server)))) |
| 71 | + |
| 72 | + (define (assert-server-message-contains-ci? content message-property-description) |
| 73 | + (assert |
| 74 | + (server-message-contains-ci? content) |
| 75 | + (string-append "Expected server to receive message with " message-property-description ", but received: " (server-message-data server)))) |
| 76 | + |
67 | 77 | (define (server-message-contains-ci? content) |
68 | 78 | (string-contains-ci? (server-message-data server) content)) |
69 | 79 |
|
|
180 | 190 | (let |
181 | 191 | ((responses (sendmail-send-message-full smtp-connection "message content" "sender@sender.to" '() '("user1@recipient.to") '() (make-hash-table) (make-hash-table) '() '()))) |
182 | 192 | (assert (all? send-success? responses)) |
183 | | - (assert (server-message-contains? "user1@recipient.to")) |
| 193 | + (assert-server-message-contains? "user1@recipient.to" "cc recipient") |
184 | 194 | (assert |
185 | 195 | (any? |
186 | 196 | (lambda (request) |
|
279 | 289 |
|
280 | 290 | (test "set basic header" (lambda () |
281 | 291 | (sendmail-send-with-headers '(("x-my-header" "some value"))) |
282 | | - (assert (server-message-contains? "x-my-header: some value") (string-append "Expected x-my-header to be present, but instead got " (server-message-data server))))) |
| 292 | + (assert-server-message-contains? "x-my-header" "x-my-header present"))) |
283 | 293 |
|
284 | 294 | (test "set header with unicode value" (lambda () |
285 | 295 | (sendmail-send-with-headers '(("x-my-header" "¡some value"))) |
286 | | - (assert |
287 | | - (server-message-contains-ci? "x-my-header: =?utf-8?q?=C2=A1some?= value") |
288 | | - (string-append "Expected x-my-header to contain encoded ¡, but instead got " (server-message-data server))) |
289 | | - (assert |
290 | | - (server-message-contains? "message content") |
291 | | - (string-append "Expected message content to be unaltered by unicode header value, but instead got" (server-message-data server))))) |
| 296 | + (assert-server-message-contains? "x-my-header: =?utf-8?q?=C2=A1some?= value" "x-my-header containing encoded ¡") |
| 297 | + (assert-server-message-contains? "message content" "unaltered message content despite unicode header value"))) |
292 | 298 |
|
293 | 299 | (test "set override standard header" (lambda () |
294 | 300 | (sendmail-send-with-headers '(("To" "another-user@recipient.to"))) |
295 | | - (assert (server-message-contains? "To: another-user@recipient.to") (string-append "Expected To header field to include another-user..., but instead got " (server-message-data server))))) |
| 301 | + (assert-server-message-contains? "To: another-user@recipient.to" "header field that includes another-user@recipient.to"))) |
296 | 302 |
|
297 | 303 | (capability 'crlf-injection (list |
298 | 304 |
|
|
426 | 432 | (sendmail-send-with-attachments |
427 | 433 | '(("data" "info.txt") |
428 | 434 | ("content-type" "text/plain"))) |
429 | | - (assert |
430 | | - (server-message-contains-ci? "content-disposition: attachment") |
431 | | - (string-append "Expected server to receive a message with an attachment, but received: " (server-message-data server))) |
| 435 | + (assert-server-message-contains-ci? "content-disposition: attachment" "an attachment") |
432 | 436 | (assert |
433 | 437 | (not (server-message-contains-ci? "info.txt")) |
434 | 438 | (string-append "Expected server to receive a message with an attachment without a name, but received: " (server-message-data server))))) |
|
439 | 443 | ("file-name" "test.png") |
440 | 444 | ("content-type" "image/png") |
441 | 445 | ("content-disposition" "inline"))) |
442 | | - (assert |
443 | | - (server-message-contains-ci? "content-disposition: inline") |
444 | | - (string-append "Expected server to receive a message with an inline attachment, but received: " (server-message-data server))))) |
| 446 | + (assert-server-message-contains-ci? "content-disposition: inline" "inline attachment"))) |
445 | 447 |
|
446 | 448 | (test "text attachment with inline disposition" (lambda () |
447 | 449 | (sendmail-send-with-attachments |
448 | 450 | '(("data" "info.txt") |
449 | 451 | ("file-name" "info.txt") |
450 | 452 | ("content-type" "text/plain") |
451 | 453 | ("content-disposition" "inline"))) |
452 | | - (assert |
453 | | - (server-message-contains-ci? "content-disposition: inline") |
454 | | - (string-append "Expected server to receive a message with an inline attachment, but received: " (server-message-data server))))) |
| 454 | + (assert-server-message-contains-ci? "content-disposition: inline" "inline attachment"))) |
455 | 455 |
|
456 | 456 | ; - inline attachment with cid? https://www.rfc-editor.org/rfc/rfc2392 |
457 | 457 | ; => non-trivial as we either need to do it completely manually or use a template engine. A template engine has |
|
471 | 471 | '(("data" "info.txt") |
472 | 472 | ("file-name" "info¡.txt") |
473 | 473 | ("content-type" "text/plain"))) |
474 | | - (assert |
475 | | - (server-message-contains-ci? "utf-8''info%C2%A1.txt") |
476 | | - (string-append "Expected server to receive a message with an inline attachment, but received: " (server-message-data server))))) |
| 474 | + (assert-server-message-contains-ci? "utf-8''info%C2%A1.txt" "unicode file name"))) |
477 | 475 |
|
478 | 476 |
|
479 | 477 | )) |
|
605 | 603 | smtp-connection "¡a test message containing unicode!" "sender@sender.com" '("user@recipient.com") '("BODY=8BITMIME") '()))) |
606 | 604 | (assert (all? send-success? send-message-responses)) |
607 | 605 | (assert-any-request server "MAIL FROM:<sender@sender.com> BODY=8BITMIME") |
608 | | - (assert |
609 | | - (server-message-contains? "¡a test message containing unicode!") |
610 | | - (string-append |
611 | | - "Expected server to receive message with unicode content directly, but received: " (server-message-data server)))))) |
| 606 | + (assert-server-message-contains? "¡a test message containing unicode!" "unicode content")))) |
612 | 607 |
|
613 | 608 | )) |
614 | 609 |
|
|
632 | 627 | smtp-connection "¡a test message containing unicode!" "sender@sender.com" '("user@recipient.com") '() '()))) |
633 | 628 | (assert (all? send-success? send-message-responses)) |
634 | 629 | (assert-any-request server "MAIL FROM:<sender@sender.com> BODY=8BITMIME") |
635 | | - (assert |
636 | | - (server-message-contains? "¡a test message containing unicode!") |
637 | | - (string-append |
638 | | - "Expected server to receive message with unicode content directly, but received: " (server-message-data server)))))) |
| 630 | + (assert-server-message-contains? "¡a test message containing unicode!" "unicode content directly")))) |
639 | 631 |
|
640 | 632 | )) |
641 | 633 | )) |
|
0 commit comments