changeset 17:7e28c64edf55

Tests: reorganize smtp tests (no real changes). Move smtp_greeting_delay tests into separate test file. Embed config into tests.
author Maxim Dounin <mdounin@mdounin.ru>
date Sat, 13 Sep 2008 03:37:45 +0400
parents dc0f15a3a140
children 1059c3002030
files smtp-greeting-delay.t smtp.conf smtp.t
diffstat 3 files changed, 108 insertions(+), 63 deletions(-) [+]
line wrap: on
line diff
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");
+
+###############################################################################
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;
-        }
-    }
-}
--- 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");
-
 ###############################################################################