2014-09-15 17:40:06 +02:00
|
|
|
#!perl -w
|
|
|
|
|
|
|
|
use strict;
|
|
|
|
use warnings;
|
|
|
|
use File::Path;
|
|
|
|
use Qpsmtpd::Constants;
|
|
|
|
|
|
|
|
BEGIN { # need this to happen before anything else
|
|
|
|
my $cwd = `pwd`;
|
|
|
|
chomp($cwd);
|
|
|
|
open my $spooldir, '>', "./config.sample/spool_dir";
|
|
|
|
print $spooldir "$cwd/t/tmp";
|
|
|
|
close $spooldir;
|
|
|
|
}
|
|
|
|
|
|
|
|
sub register_tests {
|
|
|
|
my ($self) = @_;
|
2014-09-15 17:51:39 +02:00
|
|
|
$self->register_test('test_hook_user_config', 4);
|
2014-09-15 17:40:06 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
sub test_hook_user_config {
|
2014-09-16 00:57:12 +02:00
|
|
|
my ($self) = @_;
|
2014-09-15 17:40:06 +02:00
|
|
|
my $dirname = $self->qp->temp_dir;
|
|
|
|
$self->{pattern} = $dirname . '/%u_%h_%a';
|
|
|
|
$dirname .= '/testuser_testhost_testaddress';
|
|
|
|
-d $dirname
|
2014-09-16 00:57:12 +02:00
|
|
|
or mkdir($dirname, 0700)
|
|
|
|
or die "Could not create $dirname: $!";
|
2014-09-15 17:40:06 +02:00
|
|
|
open my $fh, '>', "$dirname/testfield";
|
|
|
|
print $fh "testdata";
|
|
|
|
close $fh;
|
2014-09-16 00:57:12 +02:00
|
|
|
my $a = FakeAddress->new(
|
|
|
|
user => 'testuser',
|
|
|
|
host => 'testhost',
|
|
|
|
address => 'testaddress'
|
|
|
|
);
|
|
|
|
my ($r, $value) =
|
|
|
|
$self->hook_user_config($self->qp->transaction, $a, 'testfield');
|
|
|
|
is($r, OK, 'hook_user_config returned OK when config file present');
|
|
|
|
is($value, 'testdata', 'hook_user_config returned the correct value');
|
|
|
|
($r, $value) =
|
|
|
|
$self->hook_user_config($self->qp->transaction, $a, 'noconfig');
|
|
|
|
is($r, DECLINED,
|
|
|
|
'hook_user_config returned DECLINED when no config file present');
|
|
|
|
is($value, undef,
|
|
|
|
'hook_user_config returned no value when no config file present');
|
2014-09-15 17:40:06 +02:00
|
|
|
rmtree($dirname);
|
|
|
|
}
|
|
|
|
|
|
|
|
package FakeAddress;
|
|
|
|
|
|
|
|
sub new {
|
2014-09-16 00:57:12 +02:00
|
|
|
shift;
|
|
|
|
return bless {@_};
|
2014-09-15 17:40:06 +02:00
|
|
|
}
|
|
|
|
sub address { return shift->{address} }
|
2014-09-16 00:57:12 +02:00
|
|
|
sub user { return shift->{user} }
|
|
|
|
sub host { return shift->{host} }
|