# HG changeset patch # User Maxim Dounin # Date 1221262665 -14400 # Node ID 7e28c64edf55b3b8d247f293f6c94aa1a6157abe # Parent dc0f15a3a14002262ba1bac42996846e54c130c7 Tests: reorganize smtp tests (no real changes). Move smtp_greeting_delay tests into separate test file. Embed config into tests. diff --git a/smtp-greeting-delay.t b/smtp-greeting-delay.t new file mode 100644 --- /dev/null +++ b/smtp-greeting-delay.t @@ -0,0 +1,59 @@ +#!/usr/bin/perl + +# (C) Maxim Dounin + +############################################################################### + +use warnings; +use strict; + +use Test::More tests => 2; + +use MIME::Base64; +use Socket qw/ CRLF /; + +BEGIN { use FindBin; chdir($FindBin::Bin); } + +use lib 'lib'; +use Test::Nginx; +use Test::Nginx::SMTP; + +############################################################################### + +select STDERR; $| = 1; +select STDOUT; $| = 1; + +my $t = Test::Nginx->new()->write_file_expand('nginx.conf', <<'EOF')->run(); + +master_process off; +daemon off; + +events { + worker_connections 1024; +} + +mail { + proxy_pass_error_message on; + auth_http http://localhost:8080/mail/auth; + xclient off; + + server { + listen localhost:10025; + protocol smtp; + smtp_greeting_delay 100ms; + } +} + +EOF + +############################################################################### + +# With smtp_greeting_delay session expected to be closed after first error +# message if client sent something before greeting. + +my $s = Test::Nginx::SMTP->new(); +$s->send('HELO example.com'); +$s->check(qr/^5.. /, "command before greeting - session must be rejected"); +ok($s->eof(), "session have to be closed"); + +############################################################################### diff --git a/smtp.conf b/smtp.conf deleted file mode 100644 --- a/smtp.conf +++ /dev/null @@ -1,52 +0,0 @@ -# Config for smtp.t tests. - -master_process off; -daemon off; - -events { - worker_connections 1024; -} - -mail { - proxy_pass_error_message on; - auth_http http://localhost:8080/mail/auth; - xclient off; - - server { - listen localhost:10025; - protocol smtp; - smtp_auth login plain none; - } - - server { - listen localhost:10026; - protocol smtp; - smtp_greeting_delay 100ms; - } -} - -http { - access_log off; - - server { - listen localhost:8080; - server_name localhost; - - location = /mail/auth { - set $reply ERROR; - - if ($http_auth_smtp_to ~ example.com) { - set $reply OK; - } - if ($http_auth_pass ~ secret) { - set $reply OK; - } - - add_header Auth-Status $reply; - add_header Auth-Server 127.0.0.1; - add_header Auth-Port 25; - add_header Auth-Wait 1; - return 204; - } - } -} diff --git a/smtp.t b/smtp.t --- a/smtp.t +++ b/smtp.t @@ -9,7 +9,7 @@ use warnings; use strict; -use Test::More tests => 28; +use Test::More tests => 26; use MIME::Base64; use Socket qw/ CRLF /; @@ -25,7 +25,54 @@ use Test::Nginx::SMTP; select STDERR; $| = 1; select STDOUT; $| = 1; -my $t = Test::Nginx->new()->run('smtp.conf'); +my $t = Test::Nginx->new()->write_file_expand('nginx.conf', <<'EOF')->run(); + +master_process off; +daemon off; + +events { + worker_connections 1024; +} + +mail { + proxy_pass_error_message on; + auth_http http://localhost:8080/mail/auth; + xclient off; + + server { + listen localhost:10025; + protocol smtp; + smtp_auth login plain none; + } +} + +http { + access_log off; + + server { + listen localhost:8080; + server_name localhost; + + location = /mail/auth { + set $reply ERROR; + + if ($http_auth_smtp_to ~ example.com) { + set $reply OK; + } + if ($http_auth_pass ~ secret) { + set $reply OK; + } + + add_header Auth-Status $reply; + add_header Auth-Server 127.0.0.1; + add_header Auth-Port 25; + add_header Auth-Wait 1; + return 204; + } + } +} + +EOF ############################################################################### @@ -141,13 +188,4 @@ log_out('HEL'); $s->send('O example.com'); $s->ok('splitted command'); -# With smtp_greeting_delay session expected to be closed after first error -# message if client sent something before greeting. Use 10026 port -# configured with smtp_greeting_delay 0.1s to check this. - -$s = Test::Nginx::SMTP->new(PeerPort => 10026); -$s->send('HELO example.com'); -$s->check(qr/^5.. /, "command before greeting - session must be rejected"); -ok($s->eof(), "session have to be closed"); - ###############################################################################