aboutsummaryrefslogtreecommitdiff
path: root/t/tests/sietima/role/subscriberonly/moderate.t
diff options
context:
space:
mode:
Diffstat (limited to 't/tests/sietima/role/subscriberonly/moderate.t')
-rw-r--r--t/tests/sietima/role/subscriberonly/moderate.t56
1 files changed, 53 insertions, 3 deletions
diff --git a/t/tests/sietima/role/subscriberonly/moderate.t b/t/tests/sietima/role/subscriberonly/moderate.t
index a641a55..be996e3 100644
--- a/t/tests/sietima/role/subscriberonly/moderate.t
+++ b/t/tests/sietima/role/subscriberonly/moderate.t
@@ -29,8 +29,7 @@ subtest 'from subscriber' => sub {
);
};
-subtest 'from non-subscriber' => sub {
- $ms->clear;
+sub test_from_non_sub() {
test_sending(
sietima => $s,
mail => { from=>'someone@users.example.com' },
@@ -51,6 +50,11 @@ subtest 'from non-subscriber' => sub {
to => [$admin],
}],
);
+}
+
+subtest 'from non-subscriber' => sub {
+ $ms->clear;
+ test_from_non_sub;
is(
my $to_moderate = $ms->retrieve_by_tags('moderation'),
@@ -66,12 +70,58 @@ subtest 'from non-subscriber' => sub {
'mails was held for moderation',
);
- transport->clear_deliveries;
+ like(
+ run_cmdline_sub($s, 'list_mails_in_moderation_queue'),
+ hash {
+ field exit => 0;
+ field error => DNE;
+ field output => qr{\A
+ ^\N+\b1 \s+ message\N+$ \n
+ ^\* \s+ \w+ \s+ someone\@users\.example\.com
+ \s+ "Test[ ]Message"
+ \s+ \(\N+?\)$
+ }smx;
+ },
+ 'mails in queue should be listed from command line',
+ );
+
my $msg_id = $to_moderate->[0]->{id};
+
+ like(
+ run_cmdline_sub(
+ $s, 'show_mail_from_moderation_queue',
+ {}, { 'mail-id' => $msg_id },
+ ),
+ hash {
+ field exit => 0;
+ field error => DNE;
+ field output => qr{\A
+ ^Message \s+ \w+:$
+ .*?
+ ^From: \s+ someone\@users\.example\.com \s*$
+ }smx;
+ },
+ 'mail in queue should be shown from command line',
+ );
+
+ transport->clear_deliveries;
$s->resume($msg_id);
deliveries_are(
to => \@subscriber_addresses,
);
};
+subtest 'from non-subscriber, drop' => sub {
+ $ms->clear;
+ test_from_non_sub;
+
+ my $msg_id = $ms->retrieve_by_tags('moderation')->[0]{id};
+ $s->drop($msg_id);
+ is(
+ $ms->retrieve_by_tags('moderation'),
+ [],
+ 'message should be dropped',
+ );
+};
+
done_testing;