diff --git a/tests/extensions/metadata/errors.svtest b/tests/extensions/metadata/errors.svtest index e0cffaafc5f67a518556bd72b0d5ec9044d13c01..36024843944824c2ba48f67630b252fb3c5aab9e 100644 --- a/tests/extensions/metadata/errors.svtest +++ b/tests/extensions/metadata/errors.svtest @@ -16,3 +16,41 @@ test "Invalid Syntax" { test_fail "wrong number of errors reported"; } } + +/* + * Metadataexists - bad UTF-8 in mailbox name + */ + +test "Metadataexists - bad UTF-8 in mailbox name" { + if not test_script_compile "errors/metadataexists-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"; + } +} + +/* + * Metadata - bad UTF-8 in mailbox name + */ + +test "Metadata - bad UTF-8 in mailbox name" { + if not test_script_compile "errors/metadata-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/tests/extensions/metadata/errors/metadata-bad-utf8.sieve b/tests/extensions/metadata/errors/metadata-bad-utf8.sieve new file mode 100644 index 0000000000000000000000000000000000000000..fd093a3e60e9d3edc2945268ced71b2aaf0f72e9 --- /dev/null +++ b/tests/extensions/metadata/errors/metadata-bad-utf8.sieve @@ -0,0 +1,9 @@ +require "mboxmetadata"; +require "variables"; +require "encoded-character"; + +set "mailbox" "${hex:ff}rop"; +if metadata "${mailbox}" "/private/frop" "friep" { + keep; +} + diff --git a/tests/extensions/metadata/errors/metadataexists-bad-utf8.sieve b/tests/extensions/metadata/errors/metadataexists-bad-utf8.sieve new file mode 100644 index 0000000000000000000000000000000000000000..dbb50239739ed29bbca6d9a47690860503bd495a --- /dev/null +++ b/tests/extensions/metadata/errors/metadataexists-bad-utf8.sieve @@ -0,0 +1,9 @@ +require "mboxmetadata"; +require "variables"; +require "encoded-character"; + +set "mailbox" "${hex:ff}rop"; +if metadataexists "${mailbox}" ["/private/frop", "/shared/friep"] { + keep; +} + diff --git a/tests/extensions/metadata/errors/syntax.sieve b/tests/extensions/metadata/errors/syntax.sieve index 4b488d13658f79ad213815f880137c37ed98ba60..c719d94f8adf7d2495ac84d4c013121619a86752 100644 --- a/tests/extensions/metadata/errors/syntax.sieve +++ b/tests/extensions/metadata/errors/syntax.sieve @@ -1,5 +1,6 @@ require "mboxmetadata"; require "servermetadata"; +require "encoded-character"; # 1-4: Used as a command metadata; @@ -13,36 +14,40 @@ if metadataexists {} if servermetadata {} if servermetadataexists {} -# 9-10: Used with one string argument +# 9-11: Used with one string argument if metadata "frop" { } if servermetadata "frop" { } if metadataexists "frop" { } -# Used with one number argument +# 12-15: Used with one number argument if metadata 13123123 { } if servermetadata 123123 { } if metadataexists 123123 { } if servermetadataexists 123123 {} -# Used with one string list argument +# 16-18: Used with one string list argument if metadata ["frop"] { } if servermetadata ["frop"] { } if metadataexists ["frop"] { } -# Used with unknown tag +# 19-22: Used with unknown tag if metadata :frop "frop" { } if servermetadata :frop "frop" { } if metadataexists :frop "frop" { } if servermetadataexists :frop "frop" {} -# Invalid arguments +# 23-26: Invalid arguments if metadata "/private/frop" "friep" {} if servermetadata "INBOX" "/private/frop" "friep" {} if metadataexists 23 "/private/frop" {} if servermetadataexists "INBOX" "/private/frop" {} -# Invalid annotations +# W1-W4: Invalid annotations if metadata "INBOX" "frop" "friep" {} if servermetadata "frop" "friep" {} if metadataexists "INBOX" ["/private/frop", "/friep"] { } if servermetadataexists ["/private/frop", "/friep", "/private/friep"] { } + +# W5-W6: Invalid mailbox name +if metadata "${hex:ff}rop" "/private/frop" "friep" {} +if metadataexists "${hex:ff}rop" ["/private/frop", "/shared/friep"] { }