Mercurial > hg > nginx-tests
view smtp-xclient.t @ 107:1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
TEST_GLOBALS replaces previously used -g switch. This allows tests
to be executed on 0.6.* branch. For compatibility with old tests -g switch
will be used if TEST_GLOBALS wasn't expaneded in config.
TEST_GLOBALS_HTTP replaces multiple variables (access_log, root,
client_body_temp_path, proxy_temp_path, fastcgi_temp_path) previously
specified directly in test configs. This change reduce duplication and
allows tests to be used with nginx compiled without fastcgi and/or proxy
modules (as proxy_temp_path and fastcgi_temp_path are added conditionally).
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Wed, 14 Oct 2009 02:23:52 +0400 |
parents | ecff5407867c |
children | 8ac1faaddd2c |
line wrap: on
line source
#!/usr/bin/perl # (C) Maxim Dounin ############################################################################### use warnings; use strict; use Test::More; 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; local $SIG{PIPE} = 'IGNORE'; my $t = Test::Nginx->new()->has('mail')->plan(6) ->run_daemon(\&Test::Nginx::SMTP::smtp_test_daemon) ->write_file_expand('nginx.conf', <<'EOF')->run(); %%TEST_GLOBALS%% master_process off; daemon off; events { } mail { proxy_pass_error_message on; auth_http http://127.0.0.1:8080/mail/auth; xclient on; server { listen 127.0.0.1:8025; protocol smtp; smtp_auth login plain none; } } http { %%TEST_GLOBALS_HTTP%% server { listen 127.0.0.1:8080; server_name localhost; location = /mail/auth { add_header Auth-Status OK; add_header Auth-Server 127.0.0.1; add_header Auth-Port 8026; add_header Auth-Wait 1; return 204; } } } EOF ############################################################################### # When XCLIENT's HELO= argument isn't used, the following combinations may be # send to backend with xclient on: # # xclient # xclient, helo # xclient, ehlo # xclient, from, rcpt # xclient, helo, from, rcpt # xclient, ehlo, from, rcpt # # Test them in order. # xclient my $s = Test::Nginx::SMTP->new(); $s->read(); $s->send('AUTH PLAIN ' . encode_base64("\0test\@example.com\0secret", '')); $s->authok('xclient'); # xclient, helo $s = Test::Nginx::SMTP->new(); $s->read(); $s->send('HELO example.com'); $s->read(); $s->send('AUTH PLAIN ' . encode_base64("\0test\@example.com\0secret", '')); $s->authok('xclient, helo'); # xclient, ehlo $s = Test::Nginx::SMTP->new(); $s->read(); $s->send('EHLO example.com'); $s->read(); $s->send('AUTH PLAIN ' . encode_base64("\0test\@example.com\0secret", '')); $s->authok('xclient, ehlo'); # xclient, from, rcpt $s = Test::Nginx::SMTP->new(); $s->read(); $s->send('MAIL FROM:<test@example.com>'); $s->read(); $s->send('RCPT TO:<test@example.com>'); $s->ok('xclient, from'); # xclient, helo, from, rcpt $s = Test::Nginx::SMTP->new(); $s->read(); $s->send('HELO example.com'); $s->read(); $s->send('MAIL FROM:<test@example.com>'); $s->read(); $s->send('RCPT TO:<test@example.com>'); $s->ok('xclient, helo, from'); # xclient, ehlo, from, rcpt $s = Test::Nginx::SMTP->new(); $s->read(); $s->send('EHLO example.com'); $s->read(); $s->send('MAIL FROM:<test@example.com>'); $s->read(); $s->send('RCPT TO:<test@example.com>'); $s->ok('xclient, ehlo, from'); ###############################################################################