Mercurial > hg > nginx-tests
changeset 540:481d705b8610
Tests: SSL support in mail backends.
Socket is now embedded into every mail module.
Socket methods are wrapped where appropriate.
The new "SSL" extra flag specifies to accept connection over SSL.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Fri, 03 Apr 2015 00:11:38 +0300 |
parents | 3fcad5e66735 |
children | 53d0d963eb40 |
files | lib/Test/Nginx/IMAP.pm lib/Test/Nginx/POP3.pm lib/Test/Nginx/SMTP.pm mail_resolver.t mail_smtp.t |
diffstat | 5 files changed, 75 insertions(+), 32 deletions(-) [+] |
line wrap: on
line diff
--- a/lib/Test/Nginx/IMAP.pm Wed Apr 01 17:59:53 2015 +0300 +++ b/lib/Test/Nginx/IMAP.pm Fri Apr 03 00:11:38 2015 +0300 @@ -15,35 +15,52 @@ use Test::Nginx; -use base qw/ IO::Socket::INET /; +sub new { + my $self = {}; + bless $self, shift @_; -sub new { - my $class = shift; - - my $self = $class->SUPER::new( + $self->{_socket} = IO::Socket::INET->new( Proto => "tcp", PeerAddr => "127.0.0.1:8143", @_ ) or die "Can't connect to nginx: $!\n"; - $self->autoflush(1); + if ({@_}->{'SSL'}) { + require IO::Socket::SSL; + IO::Socket::SSL->start_SSL($self->{_socket}, @_) + or die $IO::Socket::SSL::SSL_ERROR . "\n"; + } + + $self->{_socket}->autoflush(1); return $self; } +sub eof { + my $self = shift; + return $self->{_socket}->eof(); +} + +sub print { + my ($self, $cmd) = @_; + log_out($cmd); + $self->{_socket}->print($cmd); +} + sub send { my ($self, $cmd) = @_; log_out($cmd); - $self->print($cmd . CRLF); + $self->{_socket}->print($cmd . CRLF); } sub read { my ($self) = @_; + my $socket = $self->{_socket}; eval { local $SIG{ALRM} = sub { die "timeout\n" }; alarm(3); - while (<$self>) { + while (<$socket>) { log_in($_); # XXX next if m/^\d\d\d-/;
--- a/lib/Test/Nginx/POP3.pm Wed Apr 01 17:59:53 2015 +0300 +++ b/lib/Test/Nginx/POP3.pm Fri Apr 03 00:11:38 2015 +0300 @@ -15,35 +15,52 @@ use Test::Nginx; -use base qw/ IO::Socket::INET /; +sub new { + my $self = {}; + bless $self, shift @_; -sub new { - my $class = shift; - - my $self = $class->SUPER::new( + $self->{_socket} = IO::Socket::INET->new( Proto => "tcp", PeerAddr => "127.0.0.1:8110", @_ ) or die "Can't connect to nginx: $!\n"; - $self->autoflush(1); + if ({@_}->{'SSL'}) { + require IO::Socket::SSL; + IO::Socket::SSL->start_SSL($self->{_socket}, @_) + or die $IO::Socket::SSL::SSL_ERROR . "\n"; + } + + $self->{_socket}->autoflush(1); return $self; } +sub eof { + my $self = shift; + return $self->{_socket}->eof(); +} + +sub print { + my ($self, $cmd) = @_; + log_out($cmd); + $self->{_socket}->print($cmd); +} + sub send { my ($self, $cmd) = @_; log_out($cmd); - $self->print($cmd . CRLF); + $self->{_socket}->print($cmd . CRLF); } sub read { my ($self) = @_; + my $socket = $self->{_socket}; eval { local $SIG{ALRM} = sub { die "timeout\n" }; alarm(3); - while (<$self>) { + while (<$socket>) { log_in($_); # XXX next if m/^\d\d\d-/;
--- a/lib/Test/Nginx/SMTP.pm Wed Apr 01 17:59:53 2015 +0300 +++ b/lib/Test/Nginx/SMTP.pm Fri Apr 03 00:11:38 2015 +0300 @@ -15,35 +15,52 @@ use Test::Nginx; -use base qw/ IO::Socket::INET /; +sub new { + my $self = {}; + bless $self, shift @_; -sub new { - my $class = shift; - - my $self = $class->SUPER::new( + $self->{_socket} = IO::Socket::INET->new( Proto => "tcp", PeerAddr => "127.0.0.1:8025", @_ ) or die "Can't connect to nginx: $!\n"; - $self->autoflush(1); + if ({@_}->{'SSL'}) { + require IO::Socket::SSL; + IO::Socket::SSL->start_SSL($self->{_socket}, @_) + or die $IO::Socket::SSL::SSL_ERROR . "\n"; + } + + $self->{_socket}->autoflush(1); return $self; } +sub eof { + my $self = shift; + return $self->{_socket}->eof(); +} + +sub print { + my ($self, $cmd) = @_; + log_out($cmd); + $self->{_socket}->print($cmd); +} + sub send { my ($self, $cmd) = @_; log_out($cmd); - $self->print($cmd . CRLF); + $self->{_socket}->print($cmd . CRLF); } sub read { my ($self) = @_; + my $socket = $self->{_socket}; eval { local $SIG{ALRM} = sub { die "timeout\n" }; alarm(3); - while (<$self>) { + while (<$socket>) { log_in($_); next if m/^\d\d\d-/; last;
--- a/mail_resolver.t Wed Apr 01 17:59:53 2015 +0300 +++ b/mail_resolver.t Fri Apr 03 00:11:38 2015 +0300 @@ -134,7 +134,6 @@ $s->send('QUIT'); $s->read(); -close $s; # Cached PTR prevents from querying bad ns on port 8083 @@ -150,7 +149,6 @@ $s->send('QUIT'); $s->read(); -close $s; # SERVFAIL @@ -166,7 +164,6 @@ $s->send('QUIT'); $s->read(); -close $s; # PTR with zero length RDATA @@ -182,7 +179,6 @@ $s->send('QUIT'); $s->read(); -close $s; # CNAME @@ -201,7 +197,6 @@ $s->send('QUIT'); $s->read(); -close $s; } @@ -222,7 +217,6 @@ $s->send('QUIT'); $s->read(); -close $s; } @@ -241,7 +235,6 @@ $s->send('QUIT'); $s->read(); -close $s; }