diff options
author | Eric Wong <e@yhbt.net> | 2020-06-10 07:04:13 +0000 |
---|---|---|
committer | Eric Wong <e@yhbt.net> | 2020-06-13 07:55:45 +0000 |
commit | 499af0138412496c2a0c84035d5d398fac178624 (patch) | |
tree | 6313a46f7aaeb2ea8903097a125fc23980ed8c28 /t/imap.t | |
parent | c3787e5344ee0cdf2542c6c8998807ed9d1453e5 (diff) | |
download | public-inbox-499af0138412496c2a0c84035d5d398fac178624.tar.gz |
This makes the test code easier-to-manage and allows us to run faster unit tests which don't involve loading Mail::IMAPClient.
Diffstat (limited to 't/imap.t')
-rw-r--r-- | t/imap.t | 20 |
1 files changed, 20 insertions, 0 deletions
@@ -1,9 +1,29 @@ #!perl -w # Copyright (C) 2020 all contributors <meta@public-inbox.org> # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt> +# unit tests (no network) for IMAP, see t/imapd.t for end-to-end tests use strict; use Test::More; use PublicInbox::IMAP; +use PublicInbox::IMAPD; + +{ # make sure we get '%' globbing right + my @n = map { { newsgroup => $_ } } (qw(x.y.z x.z.y)); + my $self = { imapd => { grouplist => \@n } }; + PublicInbox::IMAPD::refresh_inboxlist($self->{imapd}); + my $res = PublicInbox::IMAP::cmd_list($self, 'tag', 'x', '%'); + is(scalar($$res =~ tr/\n/\n/), 2, 'only one result'); + like($$res, qr/ x\r\ntag OK/, 'saw expected'); + $res = PublicInbox::IMAP::cmd_list($self, 'tag', 'x.', '%'); + is(scalar($$res =~ tr/\n/\n/), 3, 'only one result'); + is(scalar(my @x = ($$res =~ m/ x\.[zy]\r\n/g)), 2, 'match expected'); + + $res = PublicInbox::IMAP::cmd_list($self, 't', 'x.(?{die "RCE"})', '%'); + like($$res, qr/\At OK /, 'refname does not match attempted RCE'); + $res = PublicInbox::IMAP::cmd_list($self, 't', '', '(?{die "RCE"})%'); + like($$res, qr/\At OK /, 'wildcard does not match attempted RCE'); +} + { my $partial_prepare = \&PublicInbox::IMAP::partial_prepare; my $x = {}; |