view smtp-greeting-delay.t @ 144:6e11354cae8a

Tests: rework stopping to make "open socket left" alerts visible. Use SIGQUIT to stop nginx to make sure relevant checks are executed. Use separate functions to stop nginx and daemons to make it possible to stop nginx before daemons.
author Maxim Dounin <mdounin@mdounin.ru>
date Wed, 15 Dec 2010 19:22:39 +0300
parents 8ac1faaddd2c
children
line wrap: on
line source

#!/usr/bin/perl

# (C) Maxim Dounin

###############################################################################

use warnings;
use strict;

use Test::More;

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()->has(qw/mail smtp http/)->plan(2)
	->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    off;

    server {
        listen     127.0.0.1:8025;
        protocol   smtp;
        smtp_greeting_delay  100ms;
    }
}

http {
    # stub to avoid SIGSEGV when perl module compiled in, <= 0.7.30
}

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");

TODO: {
local $TODO = 'not in official nginx yet';

ok($s->eof(), "session have to be closed");

}

###############################################################################