changeset 1148:44620036fedf

Tests: added starttls tests for smtp.
author Andrey Zelenkov <zelenkov@nginx.com>
date Tue, 07 Mar 2017 10:09:29 +0300
parents 796ed08cb215
children b1c2857d2e97
files mail_ssl.t
diffstat 1 files changed, 43 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- 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 {