[Http-webtest-commits] HTTP-WebTest/t 05a-email-report.t,NONE,1.1
Brought to you by:
m_ilya,
richardanderson
|
From: Ilya M. <m_...@us...> - 2003-04-26 15:11:15
|
Update of /cvsroot/http-webtest/HTTP-WebTest/t
In directory sc8-pr-cvs1:/tmp/cvs-serv7443/t
Added Files:
05a-email-report.t
Log Message:
Added tests for email sending func in report plugin
--- NEW FILE: 05a-email-report.t ---
#!/usr/bin/perl -w
# $Id: 05a-email-report.t,v 1.1 2003/04/26 15:11:06 m_ilya Exp $
# Unit tests for HTTP::WebTest::ReportPlugin (email sending functionality)
use strict;
use Test::More tests => 41;
use Test::MockObject;
my $WEBTEST;
my $SMTP;
my %GLOBAL_PARAMS;
my $REPORT_PLUGIN;
{
$WEBTEST = Test::MockObject->new;
$WEBTEST->mock(global_test_param =>
sub {
my($self, $param, $default) = @_;
return $GLOBAL_PARAMS{$param}
if exists $GLOBAL_PARAMS{$param};
return $default;
});
$SMTP = Test::MockObject->new;
Test::MockObject->fake_module('Net::SMTP',
new => sub { $SMTP }
);
require_ok('HTTP::WebTest::ReportPlugin');
$REPORT_PLUGIN = HTTP::WebTest::ReportPlugin->new($WEBTEST);
isa_ok($REPORT_PLUGIN, 'HTTP::WebTest::ReportPlugin');
}
{
ok(!$REPORT_PLUGIN->_email_report_is_expected(),
"'mail' param is not set - do not send email report");
$GLOBAL_PARAMS{mail} = 'all';
$WEBTEST->set_series(have_succeed => 0, 1);
ok($REPORT_PLUGIN->_email_report_is_expected(),
"'mail' param is 'all' - always send email report");
ok($REPORT_PLUGIN->_email_report_is_expected(),
"'mail' param is 'all' - always send email report");
$GLOBAL_PARAMS{mail} = 'errors';
$WEBTEST->set_series(have_succeed => 0, 1);
ok(!$REPORT_PLUGIN->_email_report_is_expected(),
"'mail' param is 'errors' - only send email report if failed tests");
ok($REPORT_PLUGIN->_email_report_is_expected(),
"'mail' param is 'errors' - only send email report if failed tests");
}
{
$SMTP->set_true('mail');
$SMTP->set_true('to');
$SMTP->set_true('data');
$SMTP->set_true('datasend');
$SMTP->set_true('dataend');
$SMTP->set_true('quit');
$WEBTEST->set_always(num_fail => 0);
$WEBTEST->set_always(num_succeed => 0);
$WEBTEST->set_always(have_succeed => 1);
$GLOBAL_PARAMS{mail_addresses} = ['x@y.z'];
$SMTP->clear;
$REPORT_PLUGIN->test_output(\'TEST OUTPUT');
$REPORT_PLUGIN->_send_email_report;
my $from = getlogin() || getpwuid($<) || 'nobody';
$SMTP->called_pos_ok(1, 'mail', 'Test for MAIL FROM command');
$SMTP->called_args_pos_is(1, 2, $from,
'Test for content of MAIL FROM command');
$SMTP->called_pos_ok(2, 'to', 'Test for RCPT TO command');
$SMTP->called_args_pos_is(2, 2, 'x@y.z',
'Test for content of RCPT TO command');
$SMTP->called_pos_ok(3, 'data', 'Test for DATA command');
$SMTP->called_pos_ok(4, 'datasend', 'Test for From: header');
$SMTP->called_args_pos_is(4, 2, "From: $from\n",
'Test for default From: header');
$SMTP->called_pos_ok(5, 'datasend', 'Test for To: header');
$SMTP->called_args_pos_is(5, 2, "To: x\@y.z\n");
$SMTP->called_pos_ok(6, 'datasend', 'Test for Subject: header');
$SMTP->called_args_pos_is(6, 2, "Subject: Web tests succeeded\n",
'Test for default success subject');
$SMTP->called_pos_ok(7, 'datasend', 'Test for headers/body separator');
$SMTP->called_args_pos_is(7, 2, "\n");
$SMTP->called_pos_ok(8, 'datasend', 'Test for test report itself');
$SMTP->called_args_pos_is(8, 2, 'TEST OUTPUT');
$SMTP->called_pos_ok(9, 'dataend', 'End email');
$SMTP->called_pos_ok(10, 'quit', 'Disconnect from SMTP server');
$WEBTEST->set_always(have_succeed => 0);
$SMTP->clear;
$REPORT_PLUGIN->_send_email_report;
$SMTP->called_pos_ok(6, 'datasend', 'Test for Subject: header');
$SMTP->called_args_pos_is(6, 2,
"Subject: WEB TESTS FAILED! FOUND 0 ERROR(S)\n",
'Test for default failure subject');
$WEBTEST->set_always(num_fail => 2);
$WEBTEST->set_always(num_succeed => 3);
$WEBTEST->set_always(have_succeed => 1);
$SMTP->clear;
$GLOBAL_PARAMS{mail_success_subject} = 'OK - %% %f + %s = %t';
$REPORT_PLUGIN->_send_email_report;
$SMTP->called_pos_ok(6, 'datasend', 'Test for Subject: header');
$SMTP->called_args_pos_is(6, 2,
"Subject: OK - % 2 + 3 = 5\n",
'Test for customized success subject');
$WEBTEST->set_always(num_fail => 5);
$WEBTEST->set_always(num_succeed => 6);
$WEBTEST->set_always(have_succeed => 0);
$SMTP->clear;
$GLOBAL_PARAMS{mail_failure_subject} = 'NOT OK - %% %f + %s = %t';
$REPORT_PLUGIN->_send_email_report;
$SMTP->called_pos_ok(6, 'datasend', 'Test for Subject: header');
$SMTP->called_args_pos_is(6, 2,
"Subject: NOT OK - % 5 + 6 = 11\n",
'Test for customized failure subject');
$SMTP->clear;
$GLOBAL_PARAMS{mail_from} = '12...@ex...';
$REPORT_PLUGIN->_send_email_report;
$SMTP->called_pos_ok(4, 'datasend', 'Test for From: header');
$SMTP->called_args_pos_is(4, 2, "From: 123456\@example.com\n",
'Test for non-default From: header');
$SMTP->clear;
$GLOBAL_PARAMS{mail_from} = '12...@ex...';
$REPORT_PLUGIN->_send_email_report;
$SMTP->called_pos_ok(1, 'mail', 'Test for MAIL FROM command');
$SMTP->called_args_pos_is(1, 2, '12...@ex...',
'Test for content of MAIL FROM command');
$SMTP->called_pos_ok(4, 'datasend', 'Test for From: header');
$SMTP->called_args_pos_is(4, 2, "From: 123456\@example.com\n",
'Test for non-default From: header');
$SMTP->clear;
$GLOBAL_PARAMS{mail_addresses} = ['1@a.b', '2@c.d'];
$REPORT_PLUGIN->_send_email_report;
$SMTP->called_pos_ok(2, 'to', 'Test for RCPT TO command');
$SMTP->called_args_pos_is(2, 2, '1@a.b',
'Test for content of RCPT TO command');
$SMTP->called_args_pos_is(2, 3, '2@c.d',
'Test for content of RCPT TO command');
$SMTP->called_pos_ok(5, 'datasend', 'Test for To: header');
$SMTP->called_args_pos_is(5, 2, "To: 1\@a.b, 2\@c.d\n");
}
|