summaryrefslogtreecommitdiffstats
path: root/pigeonhole/tests/extensions/special-use
diff options
context:
space:
mode:
Diffstat (limited to 'pigeonhole/tests/extensions/special-use')
-rw-r--r--pigeonhole/tests/extensions/special-use/errors.svtest38
-rw-r--r--pigeonhole/tests/extensions/special-use/errors/specialuse_exists-bad-utf8.sieve9
-rw-r--r--pigeonhole/tests/extensions/special-use/errors/syntax.sieve38
-rw-r--r--pigeonhole/tests/extensions/special-use/execute.svtest54
4 files changed, 139 insertions, 0 deletions
diff --git a/pigeonhole/tests/extensions/special-use/errors.svtest b/pigeonhole/tests/extensions/special-use/errors.svtest
new file mode 100644
index 0000000..49b1872
--- /dev/null
+++ b/pigeonhole/tests/extensions/special-use/errors.svtest
@@ -0,0 +1,38 @@
+require "vnd.dovecot.testsuite";
+
+require "relational";
+require "comparator-i;ascii-numeric";
+
+/*
+ * Invalid syntax
+ */
+
+test "Invalid Syntax" {
+ if test_script_compile "errors/syntax.sieve" {
+ test_fail "compile should have failed";
+ }
+
+ # FIXME: check warnings
+ if not test_error :count "eq" :comparator "i;ascii-numeric" "15" {
+ test_fail "wrong number of errors reported";
+ }
+}
+
+/*
+ * Specialuse_exists - bad UTF-8 in mailbox name
+ */
+
+test "Specialuse_exists - bad UTF-8 in mailbox name" {
+ if not test_script_compile "errors/specialuse_exists-bad-utf8.sieve" {
+ test_fail "compile failed";
+ }
+
+ if not test_script_run {
+ test_fail "execution failed";
+ }
+
+ # FIXME: check warnings
+ if not test_error :count "eq" :comparator "i;ascii-numeric" "0" {
+ test_fail "wrong number of runtime errors reported";
+ }
+}
diff --git a/pigeonhole/tests/extensions/special-use/errors/specialuse_exists-bad-utf8.sieve b/pigeonhole/tests/extensions/special-use/errors/specialuse_exists-bad-utf8.sieve
new file mode 100644
index 0000000..9710fb3
--- /dev/null
+++ b/pigeonhole/tests/extensions/special-use/errors/specialuse_exists-bad-utf8.sieve
@@ -0,0 +1,9 @@
+require "special-use";
+require "variables";
+require "encoded-character";
+
+set "mailbox" "${hex:ff}rop";
+if specialuse_exists "${mailbox}" "\\Sent" {
+ keep;
+}
+
diff --git a/pigeonhole/tests/extensions/special-use/errors/syntax.sieve b/pigeonhole/tests/extensions/special-use/errors/syntax.sieve
new file mode 100644
index 0000000..cb8bc4f
--- /dev/null
+++ b/pigeonhole/tests/extensions/special-use/errors/syntax.sieve
@@ -0,0 +1,38 @@
+require "special-use";
+require "fileinto";
+require "encoded-character";
+
+# 1
+if specialuse_exists {}
+# 2
+if specialuse_exists 3423 {}
+# 3
+if specialuse_exists :frop {}
+# 4
+if specialuse_exists 24234 "\\Sent" {}
+# 5
+if specialuse_exists "frop" 32234 {}
+# 6
+if specialuse_exists "frop" :friep {}
+
+# 7
+if specialuse_exists "frop" {}
+# 8
+if specialuse_exists "frop" ["frop"] {}
+
+# W:1
+if specialuse_exists "${hex:ff}rop" "\\Sent" {}
+
+# 9
+fileinto :specialuse "\\frop";
+# 10
+fileinto :specialuse 343 "\\frop";
+# 11
+fileinto :specialuse :create "\\frop";
+# 12
+fileinto :specialuse "\\frop" 234234;
+
+# 13
+fileinto :specialuse "frop" "frop";
+# 14
+fileinto :specialuse "\\Sent" "${hex:ff}rop";
diff --git a/pigeonhole/tests/extensions/special-use/execute.svtest b/pigeonhole/tests/extensions/special-use/execute.svtest
new file mode 100644
index 0000000..a2b637e
--- /dev/null
+++ b/pigeonhole/tests/extensions/special-use/execute.svtest
@@ -0,0 +1,54 @@
+require "vnd.dovecot.testsuite";
+require "special-use";
+require "fileinto";
+require "variables";
+
+test "Specialuse_exists - None exist" {
+ if specialuse_exists "\\Sent" {
+ test_fail "specialuse_exists confirms existence of unassigned special-use flag";
+ }
+}
+
+test "Specialuse_exists <MAILBOX> - None exist" {
+ if specialuse_exists "INBOX" "\\Sent" {
+ test_fail "specialuse_exists confirms existence of unassigned special-use flag";
+ }
+}
+
+test_mailbox_create "frop";
+test_mailbox_create "friep";
+
+test ":specialuse" {
+ test_set "message" text:
+From: stephan@example.org
+To: nico@frop.example.org
+Subject: Frop 1
+
+Frop!
+.
+ ;
+
+ fileinto :specialuse "\\Junk" "frop";
+
+ if not test_result_execute {
+ test_fail "execution of result failed";
+ }
+}
+
+test ":specialuse variable" {
+ test_set "message" text:
+From: stephan@example.org
+To: nico@frop.example.org
+Subject: Frop 1
+
+Frop!
+.
+ ;
+
+ set "use" "\\Junk";
+ fileinto :specialuse "${use}" "frop";
+
+ if not test_result_execute {
+ test_fail "execution of result failed";
+ }
+}