Skip to content

Commit 432a50d

Browse files
committed
Tests: mail max_errors tests.
1 parent e46c2d2 commit 432a50d

File tree

1 file changed

+128
-0
lines changed

1 file changed

+128
-0
lines changed

mail_max_errors.t

Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
#!/usr/bin/perl
2+
3+
# (C) Maxim Dounin
4+
# (C) Nginx, Inc.
5+
6+
# Tests for mail max_errors.
7+
8+
###############################################################################
9+
10+
use warnings;
11+
use strict;
12+
13+
use Test::More;
14+
use Socket qw/ CRLF /;
15+
16+
BEGIN { use FindBin; chdir($FindBin::Bin); }
17+
18+
use lib 'lib';
19+
use Test::Nginx;
20+
use Test::Nginx::IMAP;
21+
use Test::Nginx::POP3;
22+
use Test::Nginx::SMTP;
23+
24+
###############################################################################
25+
26+
select STDERR; $| = 1;
27+
select STDOUT; $| = 1;
28+
29+
local $SIG{PIPE} = 'IGNORE';
30+
31+
my $t = Test::Nginx->new()->has(qw/mail imap pop3 smtp/)
32+
->write_file_expand('nginx.conf', <<'EOF');
33+
34+
%%TEST_GLOBALS%%
35+
36+
daemon off;
37+
38+
events {
39+
}
40+
41+
mail {
42+
auth_http http://127.0.0.1:8080; # unused
43+
44+
max_errors 2;
45+
46+
server {
47+
listen 127.0.0.1:8143;
48+
protocol imap;
49+
}
50+
51+
server {
52+
listen 127.0.0.1:8110;
53+
protocol pop3;
54+
}
55+
56+
server {
57+
listen 127.0.0.1:8025;
58+
protocol smtp;
59+
}
60+
}
61+
62+
EOF
63+
64+
$t->try_run('no max_errors')->plan(18);
65+
66+
###############################################################################
67+
68+
# imap
69+
70+
my $s = Test::Nginx::IMAP->new();
71+
$s->read();
72+
73+
$s->send('a01 FOO');
74+
$s->check(qr/^a01 BAD/, 'imap first error');
75+
$s->send('a02 BAR');
76+
$s->check(qr/^a02 BAD/, 'imap second error');
77+
$s->send('a03 BAZZ');
78+
$s->check(qr/^$/, 'imap max errors');
79+
80+
$s = Test::Nginx::IMAP->new();
81+
$s->read();
82+
83+
$s->send('a01 FOO' . CRLF . 'a02 BAR' . CRLF . 'a03 BAZZ');
84+
$s->check(qr/^a01 BAD/, 'imap pipelined first error');
85+
$s->check(qr/^a02 BAD/, 'imap pipelined second error');
86+
$s->check(qr/^$/, 'imap pipelined max errors');
87+
88+
# pop3
89+
90+
$s = Test::Nginx::POP3->new();
91+
$s->read();
92+
93+
$s->send('FOO');
94+
$s->check(qr/^-ERR/, 'pop3 first error');
95+
$s->send('BAR');
96+
$s->check(qr/^-ERR/, 'pop3 second error');
97+
$s->send('BAZZ');
98+
$s->check(qr/^$/, 'pop3 max errors');
99+
100+
$s = Test::Nginx::POP3->new();
101+
$s->read();
102+
103+
$s->send('FOO' . CRLF . 'BAR' . CRLF . 'BAZZ');
104+
$s->check(qr/^-ERR/, 'pop3 pipelined first error');
105+
$s->check(qr/^-ERR/, 'pop3 pipelined second error');
106+
$s->check(qr/^$/, 'pop3 pipelined max errors');
107+
108+
# smtp
109+
110+
$s = Test::Nginx::SMTP->new();
111+
$s->read();
112+
113+
$s->send('FOO');
114+
$s->check(qr/^5.. /, 'smtp first error');
115+
$s->send('BAR');
116+
$s->check(qr/^5.. /, 'smtp second error');
117+
$s->send('BAZZ');
118+
$s->check(qr/^$/, 'smtp max errors');
119+
120+
$s = Test::Nginx::SMTP->new();
121+
$s->read();
122+
123+
$s->send('FOO' . CRLF . 'BAR' . CRLF . 'BAZZ');
124+
$s->check(qr/^5.. /, 'smtp pipelined first error');
125+
$s->check(qr/^5.. /, 'smtp pipelined second error');
126+
$s->check(qr/^$/, 'smtp pipelined max errors');
127+
128+
###############################################################################

0 commit comments

Comments
 (0)