diff --git a/Makefile.am b/Makefile.am index 6c1b79827331ef362c41057cd23e51dedba9f3e2..14312cb79865091563e78212910ec4db645c417a 100644 --- a/Makefile.am +++ b/Makefile.am @@ -64,6 +64,7 @@ test_cases = \ tests/extensions/imap4flags/hasflag.svtest \ tests/extensions/imap4flags/errors.svtest \ tests/extensions/imap4flags/execute.svtest \ + tests/extensions/imap4flags/flagstore.svtest \ tests/extensions/body/basic.svtest \ tests/extensions/body/match-values.svtest \ tests/extensions/regex/basic.svtest \ diff --git a/TODO b/TODO index 9e793c3d518979e2406792eb21fa17e21951aef3..590af2b69618a8027a073c778d481a3f46234b54 100644 --- a/TODO +++ b/TODO @@ -6,7 +6,6 @@ Current activities: - Write manual page * Testsuite: - add support for testing binary load/save - - add execution tests for imap4flags extensions. Next (in order of descending priority/precedence): diff --git a/tests/extensions/imap4flags/flagstore.svtest b/tests/extensions/imap4flags/flagstore.svtest new file mode 100644 index 0000000000000000000000000000000000000000..127d56015bc32c65b3494ff56f153d8e78fc1223 --- /dev/null +++ b/tests/extensions/imap4flags/flagstore.svtest @@ -0,0 +1,83 @@ +require "vnd.dovecot.testsuite"; +require "fileinto"; +require "imap4flags"; +require "relational"; +require "comparator-i;ascii-numeric"; +require "mailbox"; + +test_set "message" text: +From: Henry von Flockenstoffen <henry@example.com> +To: Dieter von Ausburg <dieter@example.com> +Subject: Test message. + +Test message. +. +; + +test "Before" { + if hasflag :comparator "i;ascii-numeric" :count "ge" "1" { + test_fail "some flags or keywords are already set"; + } + + setflag "$label1 \\answered"; + + fileinto :create "Uninteresting"; + + if not test_result_execute { + test_fail "failed to execute first result"; + } + + test_result_reset; + + setflag "\\draft \\seen Junk"; + + fileinto "Uninteresting"; + + if not test_result_execute { + test_fail "failed to execute second result"; + } + + test_result_reset; + + fileinto :flags "\\flagged" "Uninteresting"; + + if not test_result_execute { + test_fail "failed to execute third result"; + } + + test_result_reset; + + test_message :folder "Uninteresting" 0; + + if not hasflag "$label1 \\answered" { + test_fail "flags not stored for first message"; + } + + if not hasflag :comparator "i;ascii-numeric" :count "eq" "2" { + test_fail "invalid number of flags set for first message"; + } + + test_result_reset; + + test_message :folder "Uninteresting" 1; + + if not hasflag "\\draft \\seen Junk" { + test_fail "flags not stored for second message"; + } + + if not hasflag :comparator "i;ascii-numeric" :count "eq" "3" { + test_fail "invalid number of flags set for second message"; + } + + test_result_reset; + + test_message :folder "Uninteresting" 2; + + if not hasflag "\\flagged" { + test_fail "flags not stored for second message"; + } + + if not hasflag :comparator "i;ascii-numeric" :count "eq" "1" { + test_fail "invalid number of flags set for third message"; + } +}