annotate mail_smtp.t @ 1728:6d5ecf445e57

Tests: added HTTP/2 test with big request body. Notably, it is useful with body buffering in filters, in which case the stream window is flow controlled based on the preread buffer.
author Sergey Kandaurov <pluknet@nginx.com>
date Sat, 04 Sep 2021 14:50:02 +0300
parents dbd19195df8a
children 2a0a6035a1af
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
1 #!/usr/bin/perl
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
2
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
3 # (C) Maxim Dounin
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
4
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
5 # Tests for nginx mail smtp module.
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
6
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
7 ###############################################################################
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
8
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
9 use warnings;
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
10 use strict;
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
11
27
fb94a224fef2 Tests: add has() functions for feature testing.
Maxim Dounin <mdounin@mdounin.ru>
parents: 26
diff changeset
12 use Test::More;
0
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
13
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
14 use MIME::Base64;
7
9eb509695651 Tests: drop our own CRLF constant, use Socket's one instead.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5
diff changeset
15 use Socket qw/ CRLF /;
0
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
16
9
f772e2a1a13f Tests: change directory to allow runing from outside.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7
diff changeset
17 BEGIN { use FindBin; chdir($FindBin::Bin); }
f772e2a1a13f Tests: change directory to allow runing from outside.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7
diff changeset
18
14
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9
diff changeset
19 use lib 'lib';
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9
diff changeset
20 use Test::Nginx;
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9
diff changeset
21 use Test::Nginx::SMTP;
5
4d75bdb05ecf Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4
diff changeset
22
4d75bdb05ecf Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4
diff changeset
23 ###############################################################################
0
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
24
2
33cb557f69d4 Tests: smtp pipelining is here, remove todo flags.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1
diff changeset
25 select STDERR; $| = 1;
33cb557f69d4 Tests: smtp pipelining is here, remove todo flags.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1
diff changeset
26 select STDOUT; $| = 1;
0
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
27
96
ecff5407867c Tests: better handle unexpected connection close from nginx.
Maxim Dounin <mdounin@mdounin.ru>
parents: 72
diff changeset
28 local $SIG{PIPE} = 'IGNORE';
ecff5407867c Tests: better handle unexpected connection close from nginx.
Maxim Dounin <mdounin@mdounin.ru>
parents: 72
diff changeset
29
1111
6c2538ad642d Tests: auth external in mail is explicitly enabled since 1.11.9.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1110
diff changeset
30 my $t = Test::Nginx->new()->has(qw/mail smtp http rewrite/)
976
a8b8dd6e8ae1 Tests: changed startup order in mail tests for consistency.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 970
diff changeset
31 ->write_file_expand('nginx.conf', <<'EOF');
17
7e28c64edf55 Tests: reorganize smtp tests (no real changes).
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
32
107
1c0ec30614c6 Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents: 96
diff changeset
33 %%TEST_GLOBALS%%
1c0ec30614c6 Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents: 96
diff changeset
34
249
6a0d934950bc Tests: remove extra spaces in "daemon off".
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
35 daemon off;
17
7e28c64edf55 Tests: reorganize smtp tests (no real changes).
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
36
7e28c64edf55 Tests: reorganize smtp tests (no real changes).
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
37 events {
7e28c64edf55 Tests: reorganize smtp tests (no real changes).
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
38 }
7e28c64edf55 Tests: reorganize smtp tests (no real changes).
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
39
7e28c64edf55 Tests: reorganize smtp tests (no real changes).
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
40 mail {
7e28c64edf55 Tests: reorganize smtp tests (no real changes).
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
41 proxy_pass_error_message on;
1679
74986ebee2fd Tests: added proxy_timeout in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1673
diff changeset
42 proxy_timeout 15s;
970
c227348453db Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 952
diff changeset
43 auth_http http://127.0.0.1:8080/mail/auth;
17
7e28c64edf55 Tests: reorganize smtp tests (no real changes).
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
44 xclient off;
7e28c64edf55 Tests: reorganize smtp tests (no real changes).
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
45
7e28c64edf55 Tests: reorganize smtp tests (no real changes).
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
46 server {
970
c227348453db Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 952
diff changeset
47 listen 127.0.0.1:8025;
17
7e28c64edf55 Tests: reorganize smtp tests (no real changes).
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
48 protocol smtp;
1111
6c2538ad642d Tests: auth external in mail is explicitly enabled since 1.11.9.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1110
diff changeset
49 smtp_auth login plain none cram-md5 external;
17
7e28c64edf55 Tests: reorganize smtp tests (no real changes).
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
50 }
1673
7d40f2557a45 Tests: added smtp_client_buffer test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
51
7d40f2557a45 Tests: added smtp_client_buffer test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
52 server {
7d40f2557a45 Tests: added smtp_client_buffer test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
53 listen 127.0.0.1:8027;
7d40f2557a45 Tests: added smtp_client_buffer test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
54 protocol smtp;
1689
dbd19195df8a Tests: adjusted mail_smtp.t "long pipelined" TODO.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1682
diff changeset
55 smtp_auth none;
1673
7d40f2557a45 Tests: added smtp_client_buffer test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
56 smtp_client_buffer 128;
7d40f2557a45 Tests: added smtp_client_buffer test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
57 }
17
7e28c64edf55 Tests: reorganize smtp tests (no real changes).
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
58 }
7e28c64edf55 Tests: reorganize smtp tests (no real changes).
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
59
7e28c64edf55 Tests: reorganize smtp tests (no real changes).
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
60 http {
107
1c0ec30614c6 Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents: 96
diff changeset
61 %%TEST_GLOBALS_HTTP%%
35
7bf0e8a1d66c Tests: always define temp paths.
Maxim Dounin <mdounin@mdounin.ru>
parents: 28
diff changeset
62
17
7e28c64edf55 Tests: reorganize smtp tests (no real changes).
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
63 server {
970
c227348453db Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 952
diff changeset
64 listen 127.0.0.1:8080;
17
7e28c64edf55 Tests: reorganize smtp tests (no real changes).
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
65 server_name localhost;
7e28c64edf55 Tests: reorganize smtp tests (no real changes).
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
66
7e28c64edf55 Tests: reorganize smtp tests (no real changes).
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
67 location = /mail/auth {
7e28c64edf55 Tests: reorganize smtp tests (no real changes).
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
68 set $reply ERROR;
7e28c64edf55 Tests: reorganize smtp tests (no real changes).
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
69
7e28c64edf55 Tests: reorganize smtp tests (no real changes).
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
70 if ($http_auth_smtp_to ~ example.com) {
7e28c64edf55 Tests: reorganize smtp tests (no real changes).
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
71 set $reply OK;
7e28c64edf55 Tests: reorganize smtp tests (no real changes).
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
72 }
56
573c8293ac38 Tests: fix smtp auth plain tests to check username.
Maxim Dounin <mdounin@mdounin.ru>
parents: 45
diff changeset
73
573c8293ac38 Tests: fix smtp auth plain tests to check username.
Maxim Dounin <mdounin@mdounin.ru>
parents: 45
diff changeset
74 set $userpass "$http_auth_user:$http_auth_pass";
573c8293ac38 Tests: fix smtp auth plain tests to check username.
Maxim Dounin <mdounin@mdounin.ru>
parents: 45
diff changeset
75 if ($userpass ~ '^test@example.com:secret$') {
17
7e28c64edf55 Tests: reorganize smtp tests (no real changes).
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
76 set $reply OK;
7e28c64edf55 Tests: reorganize smtp tests (no real changes).
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
77 }
7e28c64edf55 Tests: reorganize smtp tests (no real changes).
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
78
1109
59d5c8ca7e4d Tests: auth cram-md5 mail tests, pop3 user/pass and apop tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 976
diff changeset
79 set $userpass "$http_auth_user:$http_auth_salt:$http_auth_pass";
59d5c8ca7e4d Tests: auth cram-md5 mail tests, pop3 user/pass and apop tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 976
diff changeset
80 if ($userpass ~ '^test@example.com:<.*@.*>:0{32}$') {
59d5c8ca7e4d Tests: auth cram-md5 mail tests, pop3 user/pass and apop tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 976
diff changeset
81 set $reply OK;
59d5c8ca7e4d Tests: auth cram-md5 mail tests, pop3 user/pass and apop tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 976
diff changeset
82 }
59d5c8ca7e4d Tests: auth cram-md5 mail tests, pop3 user/pass and apop tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 976
diff changeset
83
1110
b9b115a2a28d Tests: auth external mail tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1109
diff changeset
84 set $userpass "$http_auth_method:$http_auth_user:$http_auth_pass";
b9b115a2a28d Tests: auth external mail tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1109
diff changeset
85 if ($userpass ~ '^external:test@example.com:$') {
b9b115a2a28d Tests: auth external mail tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1109
diff changeset
86 set $reply OK;
b9b115a2a28d Tests: auth external mail tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1109
diff changeset
87 }
b9b115a2a28d Tests: auth external mail tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1109
diff changeset
88
17
7e28c64edf55 Tests: reorganize smtp tests (no real changes).
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
89 add_header Auth-Status $reply;
7e28c64edf55 Tests: reorganize smtp tests (no real changes).
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
90 add_header Auth-Server 127.0.0.1;
970
c227348453db Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 952
diff changeset
91 add_header Auth-Port %%PORT_8026%%;
17
7e28c64edf55 Tests: reorganize smtp tests (no real changes).
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
92 add_header Auth-Wait 1;
7e28c64edf55 Tests: reorganize smtp tests (no real changes).
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
93 return 204;
7e28c64edf55 Tests: reorganize smtp tests (no real changes).
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
94 }
7e28c64edf55 Tests: reorganize smtp tests (no real changes).
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
95 }
7e28c64edf55 Tests: reorganize smtp tests (no real changes).
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
96 }
7e28c64edf55 Tests: reorganize smtp tests (no real changes).
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
97
7e28c64edf55 Tests: reorganize smtp tests (no real changes).
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
98 EOF
4
6c41dbb2954f Tests: run nginx with appropriate config from test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents: 3
diff changeset
99
976
a8b8dd6e8ae1 Tests: changed startup order in mail tests for consistency.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 970
diff changeset
100 $t->run_daemon(\&Test::Nginx::SMTP::smtp_test_daemon);
1682
57ff83315818 Tests: test for invalid SMTP commands split between packets.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1681
diff changeset
101 $t->run()->plan(41);
1111
6c2538ad642d Tests: auth external in mail is explicitly enabled since 1.11.9.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1110
diff changeset
102
6c2538ad642d Tests: auth external in mail is explicitly enabled since 1.11.9.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1110
diff changeset
103 $t->waitforsocket('127.0.0.1:' . port(8026));
976
a8b8dd6e8ae1 Tests: changed startup order in mail tests for consistency.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 970
diff changeset
104
4
6c41dbb2954f Tests: run nginx with appropriate config from test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents: 3
diff changeset
105 ###############################################################################
6c41dbb2954f Tests: run nginx with appropriate config from test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents: 3
diff changeset
106
970
c227348453db Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 952
diff changeset
107 my $s = Test::Nginx::SMTP->new();
14
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9
diff changeset
108 $s->check(qr/^220 /, "greeting");
0
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
109
14
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9
diff changeset
110 $s->send('EHLO example.com');
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9
diff changeset
111 $s->check(qr/^250 /, "ehlo");
0
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
112
56
573c8293ac38 Tests: fix smtp auth plain tests to check username.
Maxim Dounin <mdounin@mdounin.ru>
parents: 45
diff changeset
113 $s->send('AUTH PLAIN ' . encode_base64("\0test\@example.com\0bad", ''));
14
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9
diff changeset
114 $s->check(qr/^5.. /, 'auth plain with bad password');
0
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
115
56
573c8293ac38 Tests: fix smtp auth plain tests to check username.
Maxim Dounin <mdounin@mdounin.ru>
parents: 45
diff changeset
116 $s->send('AUTH PLAIN ' . encode_base64("\0test\@example.com\0secret", ''));
69
30d6cce3f0bd Tests: more checks for 235 code on successful smtp auth.
Maxim Dounin <mdounin@mdounin.ru>
parents: 64
diff changeset
117 $s->authok('auth plain');
0
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
118
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
119 # We are talking to backend from this point
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
120
14
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9
diff changeset
121 $s->send('MAIL FROM:<test@example.com> SIZE=100');
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9
diff changeset
122 $s->ok('mail from after auth');
0
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
123
14
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9
diff changeset
124 $s->send('RSET');
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9
diff changeset
125 $s->ok('rset');
0
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
126
14
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9
diff changeset
127 $s->send('MAIL FROM:<test@xn--e1afmkfd.xn--80akhbyknj4f> SIZE=100');
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9
diff changeset
128 $s->ok("idn mail from (example.test in russian)");
0
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
129
14
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9
diff changeset
130 $s->send('QUIT');
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9
diff changeset
131 $s->ok("quit");
0
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
132
58
d053b4bf6ec6 Tests: add smtp auth login tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 57
diff changeset
133 # Try auth login in simple form
d053b4bf6ec6 Tests: add smtp auth login tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 57
diff changeset
134
970
c227348453db Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 952
diff changeset
135 $s = Test::Nginx::SMTP->new();
58
d053b4bf6ec6 Tests: add smtp auth login tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 57
diff changeset
136 $s->read();
d053b4bf6ec6 Tests: add smtp auth login tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 57
diff changeset
137 $s->send('EHLO example.com');
d053b4bf6ec6 Tests: add smtp auth login tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 57
diff changeset
138 $s->read();
d053b4bf6ec6 Tests: add smtp auth login tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 57
diff changeset
139
d053b4bf6ec6 Tests: add smtp auth login tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 57
diff changeset
140 $s->send('AUTH LOGIN');
d053b4bf6ec6 Tests: add smtp auth login tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 57
diff changeset
141 $s->check(qr/^334 VXNlcm5hbWU6/, 'auth login simple username challenge');
d053b4bf6ec6 Tests: add smtp auth login tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 57
diff changeset
142 $s->send(encode_base64('test@example.com', ''));
d053b4bf6ec6 Tests: add smtp auth login tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 57
diff changeset
143 $s->check(qr/^334 UGFzc3dvcmQ6/, 'auth login simple password challenge');
d053b4bf6ec6 Tests: add smtp auth login tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 57
diff changeset
144 $s->send(encode_base64('secret', ''));
69
30d6cce3f0bd Tests: more checks for 235 code on successful smtp auth.
Maxim Dounin <mdounin@mdounin.ru>
parents: 64
diff changeset
145 $s->authok('auth login simple');
58
d053b4bf6ec6 Tests: add smtp auth login tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 57
diff changeset
146
d053b4bf6ec6 Tests: add smtp auth login tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 57
diff changeset
147 # Try auth plain with username. Details:
d053b4bf6ec6 Tests: add smtp auth login tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 57
diff changeset
148 #
d053b4bf6ec6 Tests: add smtp auth login tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 57
diff changeset
149 # [MS-XLOGIN]: SMTP Protocol AUTH LOGIN Extension Specification
d053b4bf6ec6 Tests: add smtp auth login tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 57
diff changeset
150 # http://download.microsoft.com/download/5/D/D/5DD33FDF-91F5-496D-9884-0A0B0EE698BB/%5BMS-XLOGIN%5D.pdf
d053b4bf6ec6 Tests: add smtp auth login tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 57
diff changeset
151
970
c227348453db Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 952
diff changeset
152 $s = Test::Nginx::SMTP->new();
58
d053b4bf6ec6 Tests: add smtp auth login tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 57
diff changeset
153 $s->read();
d053b4bf6ec6 Tests: add smtp auth login tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 57
diff changeset
154 $s->send('EHLO example.com');
d053b4bf6ec6 Tests: add smtp auth login tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 57
diff changeset
155 $s->read();
d053b4bf6ec6 Tests: add smtp auth login tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 57
diff changeset
156
d053b4bf6ec6 Tests: add smtp auth login tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 57
diff changeset
157 $s->send('AUTH LOGIN ' . encode_base64('test@example.com', ''));
d053b4bf6ec6 Tests: add smtp auth login tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 57
diff changeset
158 $s->check(qr/^334 UGFzc3dvcmQ6/, 'auth login with username password challenge');
d053b4bf6ec6 Tests: add smtp auth login tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 57
diff changeset
159 $s->send(encode_base64('secret', ''));
60
11e33ba0656a Tests: check for 235 code on successful smtp auth.
Maxim Dounin <mdounin@mdounin.ru>
parents: 58
diff changeset
160 $s->authok('auth login with username');
58
d053b4bf6ec6 Tests: add smtp auth login tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 57
diff changeset
161
1109
59d5c8ca7e4d Tests: auth cram-md5 mail tests, pop3 user/pass and apop tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 976
diff changeset
162 # Try auth cram-md5
59d5c8ca7e4d Tests: auth cram-md5 mail tests, pop3 user/pass and apop tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 976
diff changeset
163
59d5c8ca7e4d Tests: auth cram-md5 mail tests, pop3 user/pass and apop tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 976
diff changeset
164 $s = Test::Nginx::SMTP->new();
59d5c8ca7e4d Tests: auth cram-md5 mail tests, pop3 user/pass and apop tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 976
diff changeset
165 $s->read();
59d5c8ca7e4d Tests: auth cram-md5 mail tests, pop3 user/pass and apop tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 976
diff changeset
166 $s->send('EHLO example.com');
59d5c8ca7e4d Tests: auth cram-md5 mail tests, pop3 user/pass and apop tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 976
diff changeset
167 $s->read();
59d5c8ca7e4d Tests: auth cram-md5 mail tests, pop3 user/pass and apop tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 976
diff changeset
168
59d5c8ca7e4d Tests: auth cram-md5 mail tests, pop3 user/pass and apop tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 976
diff changeset
169 $s->send('AUTH CRAM-MD5');
59d5c8ca7e4d Tests: auth cram-md5 mail tests, pop3 user/pass and apop tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 976
diff changeset
170 $s->check(qr/^334 /, 'auth cram-md5 challenge');
59d5c8ca7e4d Tests: auth cram-md5 mail tests, pop3 user/pass and apop tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 976
diff changeset
171 $s->send(encode_base64('test@example.com ' . ('0' x 32), ''));
59d5c8ca7e4d Tests: auth cram-md5 mail tests, pop3 user/pass and apop tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 976
diff changeset
172 $s->authok('auth cram-md5');
59d5c8ca7e4d Tests: auth cram-md5 mail tests, pop3 user/pass and apop tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 976
diff changeset
173
1110
b9b115a2a28d Tests: auth external mail tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1109
diff changeset
174 # Try auth external
b9b115a2a28d Tests: auth external mail tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1109
diff changeset
175
b9b115a2a28d Tests: auth external mail tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1109
diff changeset
176 $s = Test::Nginx::SMTP->new();
b9b115a2a28d Tests: auth external mail tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1109
diff changeset
177 $s->read();
b9b115a2a28d Tests: auth external mail tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1109
diff changeset
178 $s->send('EHLO example.com');
b9b115a2a28d Tests: auth external mail tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1109
diff changeset
179 $s->read();
b9b115a2a28d Tests: auth external mail tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1109
diff changeset
180
b9b115a2a28d Tests: auth external mail tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1109
diff changeset
181 $s->send('AUTH EXTERNAL');
b9b115a2a28d Tests: auth external mail tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1109
diff changeset
182 $s->check(qr/^334 VXNlcm5hbWU6/, 'auth external challenge');
b9b115a2a28d Tests: auth external mail tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1109
diff changeset
183 $s->send(encode_base64('test@example.com', ''));
b9b115a2a28d Tests: auth external mail tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1109
diff changeset
184 $s->ok('auth external');
b9b115a2a28d Tests: auth external mail tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1109
diff changeset
185
b9b115a2a28d Tests: auth external mail tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1109
diff changeset
186 # Try auth external with username
b9b115a2a28d Tests: auth external mail tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1109
diff changeset
187
b9b115a2a28d Tests: auth external mail tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1109
diff changeset
188 $s = Test::Nginx::SMTP->new();
b9b115a2a28d Tests: auth external mail tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1109
diff changeset
189 $s->read();
b9b115a2a28d Tests: auth external mail tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1109
diff changeset
190 $s->send('EHLO example.com');
b9b115a2a28d Tests: auth external mail tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1109
diff changeset
191 $s->read();
b9b115a2a28d Tests: auth external mail tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1109
diff changeset
192
b9b115a2a28d Tests: auth external mail tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1109
diff changeset
193 $s->send('AUTH EXTERNAL ' . encode_base64('test@example.com', ''));
b9b115a2a28d Tests: auth external mail tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1109
diff changeset
194 $s->ok('auth external with username');
b9b115a2a28d Tests: auth external mail tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1109
diff changeset
195
0
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
196 # Try auth plain with pipelining
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
197
970
c227348453db Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 952
diff changeset
198 $s = Test::Nginx::SMTP->new();
57
b5b4271554b0 Test: use TODO for smtp pipelining tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 56
diff changeset
199 $s->read();
14
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9
diff changeset
200 $s->send('EHLO example.com');
57
b5b4271554b0 Test: use TODO for smtp pipelining tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 56
diff changeset
201 $s->read();
0
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
202
14
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9
diff changeset
203 $s->send('INVALID COMMAND WITH ARGUMENTS' . CRLF
2
33cb557f69d4 Tests: smtp pipelining is here, remove todo flags.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1
diff changeset
204 . 'RSET');
14
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9
diff changeset
205 $s->read();
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9
diff changeset
206 $s->ok('pipelined rset after invalid command');
1
c731d50dd6b1 Tests: check pipelining after invalid command.
Maxim Dounin <mdounin@mdounin.ru>
parents: 0
diff changeset
207
14
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9
diff changeset
208 $s->send('AUTH PLAIN '
56
573c8293ac38 Tests: fix smtp auth plain tests to check username.
Maxim Dounin <mdounin@mdounin.ru>
parents: 45
diff changeset
209 . encode_base64("\0test\@example.com\0bad", '') . CRLF
2
33cb557f69d4 Tests: smtp pipelining is here, remove todo flags.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1
diff changeset
210 . 'MAIL FROM:<test@example.com> SIZE=100');
14
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9
diff changeset
211 $s->read();
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9
diff changeset
212 $s->ok('mail from after failed pipelined auth');
0
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
213
14
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9
diff changeset
214 $s->send('AUTH PLAIN '
56
573c8293ac38 Tests: fix smtp auth plain tests to check username.
Maxim Dounin <mdounin@mdounin.ru>
parents: 45
diff changeset
215 . encode_base64("\0test\@example.com\0secret", '') . CRLF
2
33cb557f69d4 Tests: smtp pipelining is here, remove todo flags.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1
diff changeset
216 . 'MAIL FROM:<test@example.com> SIZE=100');
14
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9
diff changeset
217 $s->read();
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9
diff changeset
218 $s->ok('mail from after pipelined auth');
0
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
219
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
220 # Try auth none
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
221
970
c227348453db Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 952
diff changeset
222 $s = Test::Nginx::SMTP->new();
57
b5b4271554b0 Test: use TODO for smtp pipelining tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 56
diff changeset
223 $s->read();
14
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9
diff changeset
224 $s->send('EHLO example.com');
57
b5b4271554b0 Test: use TODO for smtp pipelining tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 56
diff changeset
225 $s->read();
0
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
226
14
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9
diff changeset
227 $s->send('MAIL FROM:<test@example.com> SIZE=100');
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9
diff changeset
228 $s->ok('auth none - mail from');
0
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
229
14
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9
diff changeset
230 $s->send('RCPT TO:<test@example.com>');
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9
diff changeset
231 $s->ok('auth none - rcpt to');
0
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
232
14
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9
diff changeset
233 $s->send('RSET');
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9
diff changeset
234 $s->ok('auth none - rset, should go to backend');
0
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
235
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
236 # Auth none with pipelining
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
237
970
c227348453db Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 952
diff changeset
238 $s = Test::Nginx::SMTP->new();
57
b5b4271554b0 Test: use TODO for smtp pipelining tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 56
diff changeset
239 $s->read();
14
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9
diff changeset
240 $s->send('EHLO example.com');
57
b5b4271554b0 Test: use TODO for smtp pipelining tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 56
diff changeset
241 $s->read();
0
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
242
14
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9
diff changeset
243 $s->send('MAIL FROM:<test@example.com> SIZE=100' . CRLF
2
33cb557f69d4 Tests: smtp pipelining is here, remove todo flags.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1
diff changeset
244 . 'RCPT TO:<test@example.com>' . CRLF
33cb557f69d4 Tests: smtp pipelining is here, remove todo flags.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1
diff changeset
245 . 'RSET');
0
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
246
14
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9
diff changeset
247 $s->ok('pipelined mail from');
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9
diff changeset
248 $s->ok('pipelined rcpt to');
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9
diff changeset
249 $s->ok('pipelined rset');
0
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
250
1681
ac26f7f2b187 Tests: test for split commands with SMTP pipelining.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1679
diff changeset
251 # Pipelining with split command
ac26f7f2b187 Tests: test for split commands with SMTP pipelining.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1679
diff changeset
252
ac26f7f2b187 Tests: test for split commands with SMTP pipelining.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1679
diff changeset
253 $s = Test::Nginx::SMTP->new();
ac26f7f2b187 Tests: test for split commands with SMTP pipelining.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1679
diff changeset
254 $s->read();
ac26f7f2b187 Tests: test for split commands with SMTP pipelining.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1679
diff changeset
255 $s->send('EHLO example.com');
ac26f7f2b187 Tests: test for split commands with SMTP pipelining.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1679
diff changeset
256 $s->read();
ac26f7f2b187 Tests: test for split commands with SMTP pipelining.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1679
diff changeset
257
ac26f7f2b187 Tests: test for split commands with SMTP pipelining.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1679
diff changeset
258 $s->print('MAIL FROM:<test@example.com> SIZE=100' . CRLF
ac26f7f2b187 Tests: test for split commands with SMTP pipelining.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1679
diff changeset
259 . 'RCPT TO:<test@example.com>' . CRLF
ac26f7f2b187 Tests: test for split commands with SMTP pipelining.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1679
diff changeset
260 . 'RS');
ac26f7f2b187 Tests: test for split commands with SMTP pipelining.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1679
diff changeset
261
ac26f7f2b187 Tests: test for split commands with SMTP pipelining.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1679
diff changeset
262 $s->ok('split pipelined mail from');
ac26f7f2b187 Tests: test for split commands with SMTP pipelining.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1679
diff changeset
263
ac26f7f2b187 Tests: test for split commands with SMTP pipelining.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1679
diff changeset
264 TODO: {
ac26f7f2b187 Tests: test for split commands with SMTP pipelining.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1679
diff changeset
265 local $TODO = 'not yet' unless $t->has_version('1.21.0');
ac26f7f2b187 Tests: test for split commands with SMTP pipelining.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1679
diff changeset
266
ac26f7f2b187 Tests: test for split commands with SMTP pipelining.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1679
diff changeset
267 $s->ok('split pipelined rcpt to');
ac26f7f2b187 Tests: test for split commands with SMTP pipelining.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1679
diff changeset
268
ac26f7f2b187 Tests: test for split commands with SMTP pipelining.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1679
diff changeset
269 }
ac26f7f2b187 Tests: test for split commands with SMTP pipelining.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1679
diff changeset
270
ac26f7f2b187 Tests: test for split commands with SMTP pipelining.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1679
diff changeset
271 $s->send('ET');
ac26f7f2b187 Tests: test for split commands with SMTP pipelining.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1679
diff changeset
272 $s->ok('split pipelined rset');
ac26f7f2b187 Tests: test for split commands with SMTP pipelining.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1679
diff changeset
273
1673
7d40f2557a45 Tests: added smtp_client_buffer test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
274 # Pipelining longer than smtp_client_buffer
7d40f2557a45 Tests: added smtp_client_buffer test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
275
7d40f2557a45 Tests: added smtp_client_buffer test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
276 $s = Test::Nginx::SMTP->new(PeerAddr => '127.0.0.1:' . port(8027));
7d40f2557a45 Tests: added smtp_client_buffer test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
277 $s->read();
7d40f2557a45 Tests: added smtp_client_buffer test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
278 $s->send('EHLO example.com');
7d40f2557a45 Tests: added smtp_client_buffer test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
279 $s->read();
7d40f2557a45 Tests: added smtp_client_buffer test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
280
7d40f2557a45 Tests: added smtp_client_buffer test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
281 $s->send('MAIL FROM:<test@example.com> SIZE=100' . CRLF
7d40f2557a45 Tests: added smtp_client_buffer test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
282 . 'RCPT TO:<foo@example.com>' . CRLF
7d40f2557a45 Tests: added smtp_client_buffer test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
283 . 'RCPT TO:<bar@example.com>' . CRLF
7d40f2557a45 Tests: added smtp_client_buffer test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
284 . 'RCPT TO:<baz@example.com>' . CRLF
7d40f2557a45 Tests: added smtp_client_buffer test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
285 . 'RCPT TO:<foobar@example.com>' . CRLF
7d40f2557a45 Tests: added smtp_client_buffer test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
286 . 'RSET');
7d40f2557a45 Tests: added smtp_client_buffer test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
287
1689
dbd19195df8a Tests: adjusted mail_smtp.t "long pipelined" TODO.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1682
diff changeset
288 TODO: {
dbd19195df8a Tests: adjusted mail_smtp.t "long pipelined" TODO.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1682
diff changeset
289 todo_skip 'long pipelined - not yet', 6 unless $t->has_version('1.21.0');
1673
7d40f2557a45 Tests: added smtp_client_buffer test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
290
1689
dbd19195df8a Tests: adjusted mail_smtp.t "long pipelined" TODO.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1682
diff changeset
291 $s->ok('long pipelined mail from');
1673
7d40f2557a45 Tests: added smtp_client_buffer test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
292 $s->ok('long pipelined rcpt to');
7d40f2557a45 Tests: added smtp_client_buffer test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
293 $s->ok('long pipelined rcpt to 2');
7d40f2557a45 Tests: added smtp_client_buffer test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
294 $s->ok('long pipelined rcpt to 3');
7d40f2557a45 Tests: added smtp_client_buffer test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
295 $s->ok('long pipelined rcpt to 4');
7d40f2557a45 Tests: added smtp_client_buffer test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
296 $s->ok('long pipelined rset');
7d40f2557a45 Tests: added smtp_client_buffer test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
297
7d40f2557a45 Tests: added smtp_client_buffer test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
298 }
7d40f2557a45 Tests: added smtp_client_buffer test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
299
0
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
300 # Connection must stay even if error returned to rcpt to command
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
301
970
c227348453db Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 952
diff changeset
302 $s = Test::Nginx::SMTP->new();
57
b5b4271554b0 Test: use TODO for smtp pipelining tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 56
diff changeset
303 $s->read();
14
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9
diff changeset
304 $s->send('EHLO example.com');
57
b5b4271554b0 Test: use TODO for smtp pipelining tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 56
diff changeset
305 $s->read();
0
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
306
14
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9
diff changeset
307 $s->send('MAIL FROM:<test@example.com> SIZE=100');
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9
diff changeset
308 $s->read(); # skip mail from reply
0
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
309
14
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9
diff changeset
310 $s->send('RCPT TO:<example.com>');
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9
diff changeset
311 $s->check(qr/^5.. /, "bad rcpt to");
0
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
312
14
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9
diff changeset
313 $s->send('RCPT TO:<test@example.com>');
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9
diff changeset
314 $s->ok('good rcpt to');
0
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
315
343
e7dc8f4d0a4b Tests: whitespace and spelling fixes.
Sergey Kandaurov <pluknet@nginx.com>
parents: 249
diff changeset
316 # Make sure command split into many packets processed correctly
2
33cb557f69d4 Tests: smtp pipelining is here, remove todo flags.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1
diff changeset
317
970
c227348453db Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 952
diff changeset
318 $s = Test::Nginx::SMTP->new();
14
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9
diff changeset
319 $s->read();
2
33cb557f69d4 Tests: smtp pipelining is here, remove todo flags.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1
diff changeset
320
33cb557f69d4 Tests: smtp pipelining is here, remove todo flags.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1
diff changeset
321 $s->print('HEL');
1682
57ff83315818 Tests: test for invalid SMTP commands split between packets.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1681
diff changeset
322 select undef, undef, undef, 0.1;
14
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9
diff changeset
323 $s->send('O example.com');
343
e7dc8f4d0a4b Tests: whitespace and spelling fixes.
Sergey Kandaurov <pluknet@nginx.com>
parents: 249
diff changeset
324 $s->ok('split command');
0
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
325
1682
57ff83315818 Tests: test for invalid SMTP commands split between packets.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1681
diff changeset
326 # Invalid command split into many packets
57ff83315818 Tests: test for invalid SMTP commands split between packets.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1681
diff changeset
327
57ff83315818 Tests: test for invalid SMTP commands split between packets.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1681
diff changeset
328 $s = Test::Nginx::SMTP->new();
57ff83315818 Tests: test for invalid SMTP commands split between packets.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1681
diff changeset
329 $s->read();
57ff83315818 Tests: test for invalid SMTP commands split between packets.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1681
diff changeset
330
57ff83315818 Tests: test for invalid SMTP commands split between packets.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1681
diff changeset
331 $s->print('FOO B');
57ff83315818 Tests: test for invalid SMTP commands split between packets.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1681
diff changeset
332 select undef, undef, undef, 0.1;
57ff83315818 Tests: test for invalid SMTP commands split between packets.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1681
diff changeset
333 $s->send('AR');
57ff83315818 Tests: test for invalid SMTP commands split between packets.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1681
diff changeset
334 $s->check(qr/^5.. /, 'invalid split command');
57ff83315818 Tests: test for invalid SMTP commands split between packets.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1681
diff changeset
335
57ff83315818 Tests: test for invalid SMTP commands split between packets.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1681
diff changeset
336 TODO: {
57ff83315818 Tests: test for invalid SMTP commands split between packets.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1681
diff changeset
337 local $TODO = 'not yet' unless $t->has_version('1.21.0');
57ff83315818 Tests: test for invalid SMTP commands split between packets.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1681
diff changeset
338
57ff83315818 Tests: test for invalid SMTP commands split between packets.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1681
diff changeset
339 $s->send('HELO example.com');
57ff83315818 Tests: test for invalid SMTP commands split between packets.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1681
diff changeset
340 $s->ok('good after invalid split command');
57ff83315818 Tests: test for invalid SMTP commands split between packets.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1681
diff changeset
341
57ff83315818 Tests: test for invalid SMTP commands split between packets.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1681
diff changeset
342 }
57ff83315818 Tests: test for invalid SMTP commands split between packets.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1681
diff changeset
343
0
de28d9f761be Tests for nginx. Initial smtp testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
344 ###############################################################################