summaryrefslogtreecommitdiffstats
path: root/pigeonhole/tests/execute/errors.svtest
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 09:51:24 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 09:51:24 +0000
commitf7548d6d28c313cf80e6f3ef89aed16a19815df1 (patch)
treea3f6f2a3f247293bee59ecd28e8cd8ceb6ca064a /pigeonhole/tests/execute/errors.svtest
parentInitial commit. (diff)
downloaddovecot-f7548d6d28c313cf80e6f3ef89aed16a19815df1.tar.xz
dovecot-f7548d6d28c313cf80e6f3ef89aed16a19815df1.zip
Adding upstream version 1:2.3.19.1+dfsg1.upstream/1%2.3.19.1+dfsg1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'pigeonhole/tests/execute/errors.svtest')
-rw-r--r--pigeonhole/tests/execute/errors.svtest152
1 files changed, 152 insertions, 0 deletions
diff --git a/pigeonhole/tests/execute/errors.svtest b/pigeonhole/tests/execute/errors.svtest
new file mode 100644
index 0000000..45bc39c
--- /dev/null
+++ b/pigeonhole/tests/execute/errors.svtest
@@ -0,0 +1,152 @@
+require "vnd.dovecot.testsuite";
+
+require "relational";
+require "comparator-i;ascii-numeric";
+require "fileinto";
+
+test "Action conflicts: reject <-> fileinto" {
+ if not test_script_compile "errors/conflict-reject-fileinto.sieve" {
+ test_fail "compile failed";
+ }
+
+ if test_script_run {
+ test_fail "execution should have failed";
+ }
+
+ if test_error :count "gt" :comparator "i;ascii-numeric" "1" {
+ test_fail "too many runtime errors reported";
+ }
+}
+
+test "Action conflicts: reject <-> keep" {
+ if not test_script_compile "errors/conflict-reject-keep.sieve" {
+ test_fail "compile failed";
+ }
+
+ if test_script_run {
+ test_fail "execution should have failed";
+ }
+
+ if test_error :count "gt" :comparator "i;ascii-numeric" "1" {
+ test_fail "too many runtime errors reported";
+ }
+}
+
+test "Action conflicts: reject <-> redirect" {
+ if not test_script_compile "errors/conflict-reject-redirect.sieve" {
+ test_fail "compile failed";
+ }
+
+ if test_script_run {
+ test_fail "execution should have failed";
+ }
+
+ if test_error :count "gt" :comparator "i;ascii-numeric" "1" {
+ test_fail "too many runtime errors reported";
+ }
+}
+
+test "Action limit" {
+ if not test_script_compile "errors/actions-limit.sieve" {
+ test_fail "compile failed";
+ }
+
+ if test_script_run {
+ test_fail "execution should have failed";
+ }
+
+ if test_error :count "gt" :comparator "i;ascii-numeric" "1" {
+ test_fail "too many runtime errors reported";
+ }
+
+ if not test_error :index 1 :contains "total number of actions exceeds policy limit"{
+ test_fail "unexpected error reported";
+ }
+}
+
+test "Redirect limit" {
+ if not test_script_compile "errors/redirect-limit.sieve" {
+ test_fail "compile failed";
+ }
+
+ if test_script_run {
+ test_fail "execution should have failed";
+ }
+
+ if test_error :count "gt" :comparator "i;ascii-numeric" "1" {
+ test_fail "too many runtime errors reported";
+ }
+
+ if not test_error :index 1 :contains "number of redirect actions exceeds policy limit"{
+ test_fail "unexpected error reported";
+ }
+}
+
+test "Fileinto missing folder" {
+ if not test_script_compile "errors/fileinto.sieve" {
+ test_fail "compile failed";
+ }
+
+ test_mailbox_create "INBOX";
+
+ if not test_script_run {
+ test_fail "execution failed";
+ }
+
+ if test_result_execute {
+ test_fail "execution of result should have failed";
+ }
+
+ if test_error :count "gt" :comparator "i;ascii-numeric" "1" {
+ test_fail "too many runtime errors reported";
+ }
+
+ if not allof (
+ test_error :index 1 :contains "failed to store into mailbox",
+ test_error :index 1 :contains "exist",
+ test_error :index 1 :contains "FROP") {
+ test_fail "unexpected error reported";
+ }
+}
+
+test "Fileinto invalid folder name" {
+ if not test_script_compile "errors/fileinto-invalid-name.sieve" {
+ test_fail "compile failed";
+ }
+
+ if not test_script_run {
+ test_fail "execution failed";
+ }
+
+ if test_result_execute {
+ test_fail "execution of result should have failed";
+ }
+
+ if not test_error :count "eq" :comparator "i;ascii-numeric" "1" {
+ test_fail "wrong number of runtime errors reported";
+ }
+
+ if not allof (
+ test_error :index 1 :contains "failed to store into mailbox",
+ test_error :index 1 :contains "name") {
+ test_fail "unexpected error reported";
+ }
+}
+
+test "Fileinto bad UTF-8 in folder name" {
+ if not test_script_compile "errors/fileinto-bad-utf8.sieve" {
+ test_fail "compile failed";
+ }
+
+ if test_script_run {
+ test_fail "execution should have failed";
+ }
+
+ if not test_error :count "eq" :comparator "i;ascii-numeric" "1" {
+ test_fail "wrong number of runtime errors reported";
+ }
+
+ if not test_error :index 1 :contains "invalid folder name" {
+ test_fail "unexpected error reported";
+ }
+}