dovecot-2.2-pigeonhole: test suite: Repeated normal header tests...

pigeonhole at rename-it.nl pigeonhole at rename-it.nl
Sat Jan 2 15:14:49 UTC 2016


details:   http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/224a8335ad20
changeset: 2187:224a8335ad20
user:      Stephan Bosch <stephan at rename-it.nl>
date:      Sat Jan 02 16:14:27 2016 +0100
description:
test suite: Repeated normal header tests for the mime extension.

diffstat:

 Makefile.am                         |    1 +
 tests/extensions/mime/header.svtest |  224 ++++++++++++++++++++++++++++++++++++
 2 files changed, 225 insertions(+), 0 deletions(-)

diffs (239 lines):

diff -r 10951146f74f -r 224a8335ad20 Makefile.am
--- a/Makefile.am	Wed Dec 30 21:38:16 2015 +0100
+++ b/Makefile.am	Sat Jan 02 16:14:27 2016 +0100
@@ -167,6 +167,7 @@
 	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 \
diff -r 10951146f74f -r 224a8335ad20 tests/extensions/mime/header.svtest
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/extensions/mime/header.svtest	Sat Jan 02 16:14:27 2016 +0100
@@ -0,0 +1,224 @@
+require "vnd.dovecot.testsuite";
+require "variables";
+require "mime";
+
+/*
+ * Basic functionality
+ */
+
+test_set "message" text:
+From: stephan at example.com
+To: nico at nl.example.com, harry at 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 at example.org
+To: nico at 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 at example.org
+To: nico at 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 at example.org
+To: nico at frop.example.com
+CC: harry at 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 at example.org
+To: nico at 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 at example.org
+To: nico at 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.";
+	}
+}


More information about the dovecot-cvs mailing list