Skip to content
Snippets Groups Projects
Commit 93024df1 authored by Stephan Bosch's avatar Stephan Bosch
Browse files

test suite: Repeated normal header tests for the mime extension.

parent 57a7d70e
No related branches found
No related tags found
No related merge requests found
......@@ -167,6 +167,7 @@ test_cases = \
tests/extensions/metadata/execute.svtest \
tests/extensions/metadata/errors.svtest \
tests/extensions/mime/errors.svtest \
tests/extensions/mime/header.svtest \
tests/extensions/mime/execute.svtest \
tests/extensions/mime/content-header.svtest \
tests/extensions/mime/foreverypart.svtest \
......
require "vnd.dovecot.testsuite";
require "variables";
require "mime";
/*
* Basic functionality
*/
test_set "message" text:
From: stephan@example.com
To: nico@nl.example.com, harry@de.example.com
Subject: Frobnitzm
Comments: This is nonsense.
Keywords: nonsense, strange, testing
X-Spam: Yes
Test.
.
;
test "Basic functionality" {
/* Must match */
if not header :mime :anychild :contains ["Subject", "Comments"] "Frobnitzm" {
test_fail "failed to match header (1)";
}
if not header :mime :anychild :contains ["Subject", "Comments"] "nonsense" {
test_fail "failed to match header(2)";
}
if not header :mime :anychild :matches "Keywords" "*, strange, *" {
test_fail "failed to match header (3)";
}
if not header :mime :anychild :is "Comments" "This is nonsense." {
test_fail "failed to match header (4)";
}
/* Must not match */
if header :mime :anychild ["subject", "comments", "keywords"] "idiotic" {
test_fail "matched nonsense";
}
/* Match first key */
if not header :mime :anychild :contains ["keywords"] ["strange", "snot", "vreemd"] {
test_fail "failed to match first key";
}
/* Match second key */
if not header :mime :anychild :contains ["keywords"] ["raar", "strange", "vreemd"] {
test_fail "failed to match second key";
}
/* Match last key */
if not header :mime :anychild :contains ["keywords"] ["raar", "snot", "strange"] {
test_fail "failed to match last key";
}
/* First header */
if not header :mime :anychild :contains ["keywords", "subject"]
["raar", "strange", "vreemd"] {
test_fail "failed to match first header";
}
/* Second header */
if not header :mime :anychild :contains ["subject", "keywords"]
["raar", "strange", "vreemd"] {
test_fail "failed to match second header";
}
}
/*
* Matching empty key
*/
test_set "message" text:
From: stephan@example.org
To: nico@frop.example.com
X-Caffeine: C8H10N4O2
Subject: I need coffee!
Comments:
Text
.
;
test "Matching empty key" {
if header :mime :anychild :is "X-Caffeine" "" {
test_fail ":is-matched non-empty header with empty string";
}
if not header :mime :anychild :contains "X-Caffeine" "" {
test_fail "failed to match existing header with empty string";
}
if not header :mime :anychild :is "comments" "" {
test_fail "failed to match empty header :mime :anychild with empty string";
}
if header :mime :anychild :contains "X-Nonsense" "" {
test_fail ":contains-matched non-existent header with empty string";
}
}
/*
* Ignoring whitespace
*/
test_set "message" text:
From: stephan@example.org
To: nico@frop.example.com
Subject: Help
X-A: Text
X-B: Text
Text
.
;
test "Ignoring whitespace" {
if not header :mime :anychild :is "x-a" "Text" {
if header :mime :anychild :matches "x-a" "*" {
set "header" "${1}";
}
test_fail "header :mime :anychild test does not strip leading whitespace (header=`${header}`)";
}
if not header :mime :anychild :is "x-b" "Text" {
if header :mime :anychild :matches "x-b" "*" {
set "header" "${1}";
}
test_fail "header :mime :anychild test does not strip trailing whitespace (header=`${header}`)";
}
if not header :mime :anychild :is "subject" "Help" {
if header :mime :anychild :matches "subject" "*" {
set "header" "${1}";
}
test_fail "header :mime :anychild test does not strip both leading and trailing whitespace (header=`${header}`)";
}
}
/*
* Absent or empty header
*/
test_set "message" text:
From: stephan@example.org
To: nico@frop.example.com
CC: harry@nonsense.ex
Subject:
Comments:
Text
.
;
test "Absent or empty header" {
if not header :mime :anychild :matches "Cc" "?*" {
test_fail "CC header is not absent or empty";
}
if header :mime :anychild :matches "Subject" "?*" {
test_fail "Subject header is empty, but matched otherwise";
}
if header :mime :anychild :matches "Comment" "?*" {
test_fail "Comment header is empty, but matched otherwise";
}
}
/*
* Invalid header name
*/
test_set "message" text:
From: stephan@example.org
To: nico@frop.example.com
Subject: Valid message
X-Multiline: This is a multi-line
header body, which should be
unfolded correctly.
Text
.
;
test "Invalid header name" {
if header :mime :anychild :contains "subject:" "" {
test_fail "matched invalid header name";
}
if header :mime :anychild :contains "to!" "" {
test_fail "matched invalid header name";
}
}
/*
* Folded headers
*/
/* "Header lines are unfolded as described in [RFC 2822] section 2.2.3.
* ...
* "
*/
test_set "message" text:
From: stephan@example.org
To: nico@frop.example.com
Subject: Not enough space on a line!
X-Multiline: This is a multi-line
header body, which should be
unfolded correctly.
Text
.
;
test "Folded header" {
if not header :mime :anychild :is "x-multiline"
"This is a multi-line header body, which should be unfolded correctly." {
test_fail "failed to properly unfold folded header.";
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment

Consent

On this website, we use the web analytics service Matomo to analyze and review the use of our website. Through the collected statistics, we can improve our offerings and make them more appealing for you. Here, you can decide whether to allow us to process your data and set corresponding cookies for these purposes, in addition to technically necessary cookies. Further information on data protection—especially regarding "cookies" and "Matomo"—can be found in our privacy policy. You can withdraw your consent at any time.