Mercurial > hg > nginx-tests
comparison lib/Test/Nginx/SMTP.pm @ 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 | 9361c7eddfc1 |
comparison
equal
deleted
inserted
replaced
539:3fcad5e66735 | 540:481d705b8610 |
---|---|
13 use IO::Socket; | 13 use IO::Socket; |
14 use Socket qw/ CRLF /; | 14 use Socket qw/ CRLF /; |
15 | 15 |
16 use Test::Nginx; | 16 use Test::Nginx; |
17 | 17 |
18 use base qw/ IO::Socket::INET /; | 18 sub new { |
19 my $self = {}; | |
20 bless $self, shift @_; | |
19 | 21 |
20 sub new { | 22 $self->{_socket} = IO::Socket::INET->new( |
21 my $class = shift; | |
22 | |
23 my $self = $class->SUPER::new( | |
24 Proto => "tcp", | 23 Proto => "tcp", |
25 PeerAddr => "127.0.0.1:8025", | 24 PeerAddr => "127.0.0.1:8025", |
26 @_ | 25 @_ |
27 ) | 26 ) |
28 or die "Can't connect to nginx: $!\n"; | 27 or die "Can't connect to nginx: $!\n"; |
29 | 28 |
30 $self->autoflush(1); | 29 if ({@_}->{'SSL'}) { |
30 require IO::Socket::SSL; | |
31 IO::Socket::SSL->start_SSL($self->{_socket}, @_) | |
32 or die $IO::Socket::SSL::SSL_ERROR . "\n"; | |
33 } | |
34 | |
35 $self->{_socket}->autoflush(1); | |
31 | 36 |
32 return $self; | 37 return $self; |
38 } | |
39 | |
40 sub eof { | |
41 my $self = shift; | |
42 return $self->{_socket}->eof(); | |
43 } | |
44 | |
45 sub print { | |
46 my ($self, $cmd) = @_; | |
47 log_out($cmd); | |
48 $self->{_socket}->print($cmd); | |
33 } | 49 } |
34 | 50 |
35 sub send { | 51 sub send { |
36 my ($self, $cmd) = @_; | 52 my ($self, $cmd) = @_; |
37 log_out($cmd); | 53 log_out($cmd); |
38 $self->print($cmd . CRLF); | 54 $self->{_socket}->print($cmd . CRLF); |
39 } | 55 } |
40 | 56 |
41 sub read { | 57 sub read { |
42 my ($self) = @_; | 58 my ($self) = @_; |
59 my $socket = $self->{_socket}; | |
43 eval { | 60 eval { |
44 local $SIG{ALRM} = sub { die "timeout\n" }; | 61 local $SIG{ALRM} = sub { die "timeout\n" }; |
45 alarm(3); | 62 alarm(3); |
46 while (<$self>) { | 63 while (<$socket>) { |
47 log_in($_); | 64 log_in($_); |
48 next if m/^\d\d\d-/; | 65 next if m/^\d\d\d-/; |
49 last; | 66 last; |
50 } | 67 } |
51 alarm(0); | 68 alarm(0); |