Mercurial > hg > nginx-tests
annotate mail_pop3.t @ 1571:1b4ceab9cb1c
Tests: fixed ssl_certificate.t with LibreSSL client.
Net::SSLeay::connect() that manages TLS handshake could return unexpected
error when receiving server alert, as seen in server certificate tests if
it could not been selected. Typically, it returns the expected error -1,
but with certain libssl implementations it can be 0, as explained below.
The error is propagated from libssl's SSL_connect(), which is usually -1.
In modern OpenSSL versions, it is the default error code used in the state
machine returned when something went wrong with parsing TLS message header.
In versions up to OpenSSL 1.0.2, with SSLv23_method() used by default, -1
is the only error code in the ssl_connect() method implementation which is
used as well if receiving alert while parsing ServerHello. BoringSSL also
seems to return -1. But it is not so with LibreSSL that returns zero.
Previously, tests failed with client built with LibreSSL with SSLv3 removed.
Here, the error is propagated directly from ssl_read_bytes() method, which
is always implemented as ssl3_read_bytes() in all TLS methods. It could be
also seen with OpenSSL up to 1.0.2 with non-default methods explicitly set.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Fri, 29 May 2020 23:10:20 +0300 |
parents | 766bcbb632ee |
children | 74986ebee2fd |
rev | line source |
---|---|
59
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
2 |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
3 # (C) Maxim Dounin |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
4 |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
5 # Tests for nginx mail pop3 module. |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
6 |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
7 ############################################################################### |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
8 |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
9 use warnings; |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
10 use strict; |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
11 |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
12 use Test::More; |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
13 |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
14 use MIME::Base64; |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
15 |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
16 BEGIN { use FindBin; chdir($FindBin::Bin); } |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
17 |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
18 use lib 'lib'; |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
19 use Test::Nginx; |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
20 use Test::Nginx::POP3; |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
21 |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
22 ############################################################################### |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
23 |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
24 select STDERR; $| = 1; |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
25 select STDOUT; $| = 1; |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
26 |
96
ecff5407867c
Tests: better handle unexpected connection close from nginx.
Maxim Dounin <mdounin@mdounin.ru>
parents:
75
diff
changeset
|
27 local $SIG{PIPE} = 'IGNORE'; |
ecff5407867c
Tests: better handle unexpected connection close from nginx.
Maxim Dounin <mdounin@mdounin.ru>
parents:
75
diff
changeset
|
28 |
1111
6c2538ad642d
Tests: auth external in mail is explicitly enabled since 1.11.9.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1110
diff
changeset
|
29 my $t = Test::Nginx->new()->has(qw/mail pop3 http rewrite/) |
976
a8b8dd6e8ae1
Tests: changed startup order in mail tests for consistency.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
970
diff
changeset
|
30 ->write_file_expand('nginx.conf', <<'EOF'); |
59
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
31 |
107
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
96
diff
changeset
|
32 %%TEST_GLOBALS%% |
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
96
diff
changeset
|
33 |
249
6a0d934950bc
Tests: remove extra spaces in "daemon off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
34 daemon off; |
59
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
35 |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
36 events { |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
37 } |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
38 |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
39 mail { |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
40 proxy_pass_error_message on; |
970
c227348453db
Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
952
diff
changeset
|
41 auth_http http://127.0.0.1:8080/mail/auth; |
59
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
42 |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
43 server { |
970
c227348453db
Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
952
diff
changeset
|
44 listen 127.0.0.1:8110; |
59
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
45 protocol pop3; |
1111
6c2538ad642d
Tests: auth external in mail is explicitly enabled since 1.11.9.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1110
diff
changeset
|
46 pop3_auth plain apop cram-md5 external; |
59
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
47 } |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
48 } |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
49 |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
50 http { |
107
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
96
diff
changeset
|
51 %%TEST_GLOBALS_HTTP%% |
59
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
52 |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
53 server { |
970
c227348453db
Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
952
diff
changeset
|
54 listen 127.0.0.1:8080; |
59
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
55 server_name localhost; |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
56 |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
57 location = /mail/auth { |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
58 set $reply ERROR; |
1109
59d5c8ca7e4d
Tests: auth cram-md5 mail tests, pop3 user/pass and apop tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
976
diff
changeset
|
59 set $passw ""; |
59
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
60 |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
61 if ($http_auth_smtp_to ~ example.com) { |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
62 set $reply OK; |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
63 } |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
64 |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
65 set $userpass "$http_auth_user:$http_auth_pass"; |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
66 if ($userpass ~ '^test@example.com:secret$') { |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
67 set $reply OK; |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
68 } |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
69 |
1109
59d5c8ca7e4d
Tests: auth cram-md5 mail tests, pop3 user/pass and apop tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
976
diff
changeset
|
70 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
|
71 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
|
72 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
|
73 set $passw secret; |
59d5c8ca7e4d
Tests: auth cram-md5 mail tests, pop3 user/pass and apop tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
976
diff
changeset
|
74 } |
59d5c8ca7e4d
Tests: auth cram-md5 mail tests, pop3 user/pass and apop tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
976
diff
changeset
|
75 |
1110
b9b115a2a28d
Tests: auth external mail tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1109
diff
changeset
|
76 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
|
77 if ($userpass ~ '^external:test@example.com:$') { |
b9b115a2a28d
Tests: auth external mail tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1109
diff
changeset
|
78 set $reply OK; |
b9b115a2a28d
Tests: auth external mail tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1109
diff
changeset
|
79 set $passw secret; |
b9b115a2a28d
Tests: auth external mail tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1109
diff
changeset
|
80 } |
b9b115a2a28d
Tests: auth external mail tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1109
diff
changeset
|
81 |
59
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
82 add_header Auth-Status $reply; |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
83 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
|
84 add_header Auth-Port %%PORT_8111%%; |
1109
59d5c8ca7e4d
Tests: auth cram-md5 mail tests, pop3 user/pass and apop tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
976
diff
changeset
|
85 add_header Auth-Pass $passw; |
59
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
86 add_header Auth-Wait 1; |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
87 return 204; |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
88 } |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
89 } |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
90 } |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
91 |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
92 EOF |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
93 |
976
a8b8dd6e8ae1
Tests: changed startup order in mail tests for consistency.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
970
diff
changeset
|
94 $t->run_daemon(\&Test::Nginx::POP3::pop3_test_daemon); |
1251
766bcbb632ee
Tests: removed TODO and try_run() checks for legacy versions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1151
diff
changeset
|
95 $t->run()->plan(20); |
1111
6c2538ad642d
Tests: auth external in mail is explicitly enabled since 1.11.9.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1110
diff
changeset
|
96 |
6c2538ad642d
Tests: auth external in mail is explicitly enabled since 1.11.9.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1110
diff
changeset
|
97 $t->waitforsocket('127.0.0.1:' . port(8111)); |
976
a8b8dd6e8ae1
Tests: changed startup order in mail tests for consistency.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
970
diff
changeset
|
98 |
59
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
99 ############################################################################### |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
100 |
970
c227348453db
Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
952
diff
changeset
|
101 my $s = Test::Nginx::POP3->new(); |
59
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
102 $s->ok('greeting'); |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
103 |
1109
59d5c8ca7e4d
Tests: auth cram-md5 mail tests, pop3 user/pass and apop tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
976
diff
changeset
|
104 # user / pass |
59d5c8ca7e4d
Tests: auth cram-md5 mail tests, pop3 user/pass and apop tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
976
diff
changeset
|
105 |
59d5c8ca7e4d
Tests: auth cram-md5 mail tests, pop3 user/pass and apop tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
976
diff
changeset
|
106 $s->send('USER test@example.com'); |
59d5c8ca7e4d
Tests: auth cram-md5 mail tests, pop3 user/pass and apop tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
976
diff
changeset
|
107 $s->ok('user'); |
59d5c8ca7e4d
Tests: auth cram-md5 mail tests, pop3 user/pass and apop tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
976
diff
changeset
|
108 |
59d5c8ca7e4d
Tests: auth cram-md5 mail tests, pop3 user/pass and apop tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
976
diff
changeset
|
109 $s->send('PASS secret'); |
59d5c8ca7e4d
Tests: auth cram-md5 mail tests, pop3 user/pass and apop tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
976
diff
changeset
|
110 $s->ok('pass'); |
59d5c8ca7e4d
Tests: auth cram-md5 mail tests, pop3 user/pass and apop tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
976
diff
changeset
|
111 |
59d5c8ca7e4d
Tests: auth cram-md5 mail tests, pop3 user/pass and apop tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
976
diff
changeset
|
112 # apop |
59d5c8ca7e4d
Tests: auth cram-md5 mail tests, pop3 user/pass and apop tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
976
diff
changeset
|
113 |
59d5c8ca7e4d
Tests: auth cram-md5 mail tests, pop3 user/pass and apop tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
976
diff
changeset
|
114 $s = Test::Nginx::POP3->new(); |
59d5c8ca7e4d
Tests: auth cram-md5 mail tests, pop3 user/pass and apop tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
976
diff
changeset
|
115 $s->check(qr/<.*\@.*>/, 'apop salt'); |
59d5c8ca7e4d
Tests: auth cram-md5 mail tests, pop3 user/pass and apop tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
976
diff
changeset
|
116 |
59d5c8ca7e4d
Tests: auth cram-md5 mail tests, pop3 user/pass and apop tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
976
diff
changeset
|
117 $s->send('APOP test@example.com ' . ('1' x 32)); |
59d5c8ca7e4d
Tests: auth cram-md5 mail tests, pop3 user/pass and apop tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
976
diff
changeset
|
118 $s->check(qr/^-ERR/, 'apop error'); |
59d5c8ca7e4d
Tests: auth cram-md5 mail tests, pop3 user/pass and apop tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
976
diff
changeset
|
119 |
59d5c8ca7e4d
Tests: auth cram-md5 mail tests, pop3 user/pass and apop tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
976
diff
changeset
|
120 $s->send('APOP 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
|
121 $s->ok('apop'); |
59d5c8ca7e4d
Tests: auth cram-md5 mail tests, pop3 user/pass and apop tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
976
diff
changeset
|
122 |
1146
2634d0ef48d3
Tests: mail capability tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1111
diff
changeset
|
123 # auth capabilities |
2634d0ef48d3
Tests: mail capability tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1111
diff
changeset
|
124 |
2634d0ef48d3
Tests: mail capability tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1111
diff
changeset
|
125 $s = Test::Nginx::POP3->new(); |
2634d0ef48d3
Tests: mail capability tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1111
diff
changeset
|
126 $s->read(); |
2634d0ef48d3
Tests: mail capability tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1111
diff
changeset
|
127 |
2634d0ef48d3
Tests: mail capability tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1111
diff
changeset
|
128 $s->send('AUTH'); |
2634d0ef48d3
Tests: mail capability tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1111
diff
changeset
|
129 $s->ok('auth'); |
2634d0ef48d3
Tests: mail capability tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1111
diff
changeset
|
130 |
2634d0ef48d3
Tests: mail capability tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1111
diff
changeset
|
131 is(get_auth_caps($s), 'PLAIN:LOGIN:CRAM-MD5:EXTERNAL', 'auth capabilities'); |
2634d0ef48d3
Tests: mail capability tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1111
diff
changeset
|
132 |
59
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
133 # auth plain |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
134 |
1109
59d5c8ca7e4d
Tests: auth cram-md5 mail tests, pop3 user/pass and apop tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
976
diff
changeset
|
135 $s = Test::Nginx::POP3->new(); |
59d5c8ca7e4d
Tests: auth cram-md5 mail tests, pop3 user/pass and apop tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
976
diff
changeset
|
136 $s->read(); |
59d5c8ca7e4d
Tests: auth cram-md5 mail tests, pop3 user/pass and apop tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
976
diff
changeset
|
137 |
59
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
138 $s->send('AUTH PLAIN ' . encode_base64("\0test\@example.com\0bad", '')); |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
139 $s->check(qr/^-ERR/, 'auth plain with bad password'); |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
140 |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
141 $s->send('AUTH PLAIN ' . encode_base64("\0test\@example.com\0secret", '')); |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
142 $s->ok('auth plain'); |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
143 |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
144 # auth login simple |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
145 |
970
c227348453db
Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
952
diff
changeset
|
146 $s = Test::Nginx::POP3->new(); |
59
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
147 $s->read(); |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
148 |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
149 $s->send('AUTH LOGIN'); |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
150 $s->check(qr/\+ VXNlcm5hbWU6/, 'auth login username challenge'); |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
151 |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
152 $s->send(encode_base64('test@example.com', '')); |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
153 $s->check(qr/\+ UGFzc3dvcmQ6/, 'auth login password challenge'); |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
154 |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
155 $s->send(encode_base64('secret', '')); |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
156 $s->ok('auth login simple'); |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
157 |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
158 # auth login with username |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
159 |
970
c227348453db
Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
952
diff
changeset
|
160 $s = Test::Nginx::POP3->new(); |
59
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
161 $s->read(); |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
162 |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
163 $s->send('AUTH LOGIN ' . encode_base64('test@example.com', '')); |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
164 $s->check(qr/\+ UGFzc3dvcmQ6/, 'auth login with username password challenge'); |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
165 |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
166 $s->send(encode_base64('secret', '')); |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
167 $s->ok('auth login with username'); |
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
168 |
1109
59d5c8ca7e4d
Tests: auth cram-md5 mail tests, pop3 user/pass and apop tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
976
diff
changeset
|
169 # 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 |
59d5c8ca7e4d
Tests: auth cram-md5 mail tests, pop3 user/pass and apop tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
976
diff
changeset
|
171 $s = Test::Nginx::POP3->new(); |
59d5c8ca7e4d
Tests: auth cram-md5 mail tests, pop3 user/pass and apop tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
976
diff
changeset
|
172 $s->read(); |
59d5c8ca7e4d
Tests: auth cram-md5 mail tests, pop3 user/pass and apop tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
976
diff
changeset
|
173 |
59d5c8ca7e4d
Tests: auth cram-md5 mail tests, pop3 user/pass and apop tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
976
diff
changeset
|
174 $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
|
175 $s->check(qr/\+ /, '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
|
176 |
59d5c8ca7e4d
Tests: auth cram-md5 mail tests, pop3 user/pass and apop tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
976
diff
changeset
|
177 $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
|
178 $s->ok('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
|
179 |
1110
b9b115a2a28d
Tests: auth external mail tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1109
diff
changeset
|
180 # auth external |
b9b115a2a28d
Tests: auth external mail tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1109
diff
changeset
|
181 |
b9b115a2a28d
Tests: auth external mail tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1109
diff
changeset
|
182 $s = Test::Nginx::POP3->new(); |
b9b115a2a28d
Tests: auth external mail tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1109
diff
changeset
|
183 $s->read(); |
b9b115a2a28d
Tests: auth external mail tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1109
diff
changeset
|
184 |
b9b115a2a28d
Tests: auth external mail tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1109
diff
changeset
|
185 $s->send('AUTH EXTERNAL'); |
b9b115a2a28d
Tests: auth external mail tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1109
diff
changeset
|
186 $s->check(qr/\+ VXNlcm5hbWU6/, 'auth external challenge'); |
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->send(encode_base64('test@example.com', '')); |
b9b115a2a28d
Tests: auth external mail tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1109
diff
changeset
|
189 $s->ok('auth external'); |
b9b115a2a28d
Tests: auth external mail tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1109
diff
changeset
|
190 |
b9b115a2a28d
Tests: auth external mail tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1109
diff
changeset
|
191 # auth external with username |
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 = Test::Nginx::POP3->new(); |
b9b115a2a28d
Tests: auth external mail tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1109
diff
changeset
|
194 $s->read(); |
b9b115a2a28d
Tests: auth external mail tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1109
diff
changeset
|
195 |
b9b115a2a28d
Tests: auth external mail tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1109
diff
changeset
|
196 $s->send('AUTH EXTERNAL ' . encode_base64('test@example.com', '')); |
b9b115a2a28d
Tests: auth external mail tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1109
diff
changeset
|
197 $s->ok('auth external with username'); |
b9b115a2a28d
Tests: auth external mail tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1109
diff
changeset
|
198 |
59
bc3351f157ef
Tests: add basic pop3 and imap tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
199 ############################################################################### |
1146
2634d0ef48d3
Tests: mail capability tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1111
diff
changeset
|
200 |
2634d0ef48d3
Tests: mail capability tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1111
diff
changeset
|
201 sub get_auth_caps { |
2634d0ef48d3
Tests: mail capability tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1111
diff
changeset
|
202 my ($s) = @_; |
2634d0ef48d3
Tests: mail capability tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1111
diff
changeset
|
203 my @meth; |
2634d0ef48d3
Tests: mail capability tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1111
diff
changeset
|
204 |
1151
57673c7257a3
Tests: unbreak mail tests in case of EOF.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1146
diff
changeset
|
205 while ($s->read()) { |
57673c7257a3
Tests: unbreak mail tests in case of EOF.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1146
diff
changeset
|
206 last if /^\./; |
1146
2634d0ef48d3
Tests: mail capability tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1111
diff
changeset
|
207 push @meth, $1 if /(.*?)\x0d\x0a?/ms; |
2634d0ef48d3
Tests: mail capability tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1111
diff
changeset
|
208 } |
2634d0ef48d3
Tests: mail capability tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1111
diff
changeset
|
209 join ':', @meth; |
2634d0ef48d3
Tests: mail capability tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1111
diff
changeset
|
210 } |
2634d0ef48d3
Tests: mail capability tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1111
diff
changeset
|
211 |
2634d0ef48d3
Tests: mail capability tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1111
diff
changeset
|
212 ############################################################################### |