1
require "vnd.dovecot.testsuite";
2
require "vnd.dovecot.filter";
3
require "vnd.dovecot.debug";
10
test_set "message" text:
11
From: stephan@example.com
19
test_config_set "sieve_filter_bin_dir" "${tst.path}/../bin";
20
test_config_reload :extension "vnd.dovecot.filter";
25
if header :contains "subject" "replacement" {
26
test_fail "message already replaced";
31
if not header :contains "subject" "replacement" {
32
test_fail "message not replaced";
38
if filter "nonsense" {
39
test_fail "filter action indicated success with invalid program";
42
if not filter "replace" {
43
test_fail "filter action indicated failure with valid program";
46
if not header :contains "subject" "replacement" {
47
test_fail "message not replaced; filter not actually executed";
54
body :contains "extra",
56
test_fail "message already modified";
59
if not header "subject" "Frop!" {
60
test_fail "message is wrong";
65
if not header "subject" "Frop!" {
66
test_fail "message replaced erroneously";
69
if not header :contains "x-frop" "extra" {
70
test_fail "message header not modified";
73
if not body :contains "Extra" {
74
test_fail "message body not modified";
80
if anyof ( exists "X-A", exists "X-B", exists "X-C", exists "X-D",
82
test_fail "message already modified";
86
if not header "X-A" "1" {
87
test_fail "X-A header missing";
92
filter "addheader" ["X-B", "2"];
93
if not header "X-B" "2" {
94
test_fail "X-B header missing";
100
if not header "X-C" "3" {
101
test_fail "X-C header missing";
104
fileinto :create "C";
106
filter "addheader" ["X-D", "4"];
107
if not header "X-D" "4" {
108
test_fail "X-D header missing";
111
fileinto :create "D";
114
if not header "X-E" "5" {
115
test_fail "X-E header missing";
118
fileinto :create "E";
120
if not test_result_execute {
121
test_fail "failed to execute result";
124
test_message :folder "A" 0;
126
if not header "X-A" "1" {
127
test_fail "X-A header missing";
130
header "X-B" "2", header "X-C" "3",
131
header "X-D" "4", header "X-E" "5") {
132
test_fail "X-B, X-C, X-D or X-E header found";
135
test_message :folder "B" 0;
137
if not header "X-B" "2" {
138
test_fail "X-B header missing";
141
header "X-C" "3", header "X-D" "4", header "X-E" "5") {
142
test_fail "X-C, X-D or X-E header found";
145
test_message :folder "C" 0;
147
if not header "X-C" "3" {
148
test_fail "X-C header missing";
150
if anyof (header "X-D" "4", header "X-E" "5") {
151
test_fail "X-D or X-E header found";
154
test_message :folder "D" 0;
156
if not header "X-D" "4" {
157
test_fail "X-D header missing";
159
if anyof (header "X-E" "5") {
160
test_fail "X-E header found";
163
test_message :folder "E" 0;
165
if not header "X-A" "1" {
166
test_fail "X-A header missing in final message";
168
if not header "X-B" "2" {
169
test_fail "X-B header missing in final message";
171
if not header "X-C" "3" {
172
test_fail "X-C header missing in final message";
174
if not header "X-D" "4" {
175
test_fail "X-D header missing in final message";
177
if not header "X-E" "5" {
178
test_fail "X-E header missing in final message";