# HG changeset patch # User Andrey Zelenkov # Date 1488870569 -10800 # Node ID 44620036fedf713ed43ae1855f617e35adbb0150 # Parent 796ed08cb215e2ba46f64c62be02d8f8b16f6ca2 Tests: added starttls tests for smtp. diff --git a/mail_ssl.t b/mail_ssl.t --- a/mail_ssl.t +++ b/mail_ssl.t @@ -20,6 +20,7 @@ use lib 'lib'; use Test::Nginx; use Test::Nginx::IMAP; use Test::Nginx::POP3; +use Test::Nginx::SMTP; ############################################################################### @@ -34,8 +35,8 @@ eval { }; plan(skip_all => 'Net::SSLeay not installed') if $@; -my $t = Test::Nginx->new()->has(qw/mail mail_ssl imap pop3/) - ->has_daemon('openssl')->plan(16); +my $t = Test::Nginx->new()->has(qw/mail mail_ssl imap pop3 smtp/) + ->has_daemon('openssl')->plan(20); $t->write_file_expand('nginx.conf', <<'EOF'); @@ -118,6 +119,20 @@ mail { starttls only; } + + server { + listen 127.0.0.1:8153; + protocol smtp; + + starttls on; + } + + server { + listen 127.0.0.1:8154; + protocol smtp; + + starttls only; + } } EOF @@ -246,6 +261,32 @@ like(Net::SSLeay::dump_peer_certificate( $s->send('STLS'); $s->ok('pop3 starttls only'); +# starttls smtp + +$s = Test::Nginx::SMTP->new(PeerAddr => '127.0.0.1:' . port(8153)); +$s->read(); + +$s->send('AUTH LOGIN'); +$s->check(qr/^334 VXNlcm5hbWU6/, 'smtp auth before startls on'); + +$s = Test::Nginx::SMTP->new(PeerAddr => '127.0.0.1:' . port(8153)); +$s->read(); + +$s->send('STARTTLS'); +$s->ok('smtp starttls on'); + +$s = Test::Nginx::SMTP->new(PeerAddr => '127.0.0.1:' . port(8154)); +$s->read(); + +$s->send('AUTH LOGIN'); +$s->check(qr/^5.. /, 'smtp auth before startls only'); + +$s = Test::Nginx::SMTP->new(PeerAddr => '127.0.0.1:' . port(8154)); +$s->read(); + +$s->send('STARTTLS'); +$s->ok('smtp starttls only'); + ############################################################################### sub get_ssl_socket {