Sendmail-Queue
view release on metacpan or search on metacpan
t/sendmail-queue-qf.t view on Meta::CPAN
package test_queue_df;
use strict;
use warnings;
use base qw( Test::Class );
use Test::Most;
use File::Temp;
# Set time zone to UTC for consistent test results
$ENV{TZ} = 'UTC';
sub slurp
{
my ($fname) = @_;
my $data;
local $/;
if (open(SLURP, "<$fname")) {
$data = <SLURP>;
close(SLURP);
}
return $data;
}
# fake rand() to always return 0 for testing purposes.
# Because rand() is a builtin, it's hard to clobber...
BEGIN {
*Sendmail::Queue::Qf::rand = sub { 0 };
eval 'require Sendmail::Queue::Qf' or die $@;
};
my $USER = getpwuid($>);
sub make_tmpdir : Test(setup)
{
my ($self) = @_;
$self->{tmpdir} = File::Temp::tempdir( CLEANUP => 1 );
}
sub del_tmpdir : Test(teardown)
{
my ($self) = @_;
delete $self->{tmpdir};
}
sub test_constructor : Test(1)
{
my $qf = Sendmail::Queue::Qf->new();
isa_ok( $qf, 'Sendmail::Queue::Qf');
}
sub set_queue_id_manually : Test(1)
{
my $qf = Sendmail::Queue::Qf->new();
$qf->set_queue_id( 'wookie' );
is( $qf->get_queue_id(), 'wookie', 'Got the queue ID we set');
}
sub generate_queue_id : Test(3)
{
my ($self) = @_;
my $qf = Sendmail::Queue::Qf->new({
queue_directory => $self->{tmpdir},
timestamp => 1234567890,
});
ok( $qf->create_and_lock, 'Created a qf file with a unique ID');
my $pid = sprintf("%06d", $$);
is( $qf->get_queue_id(), "n1DNVU00$pid", 'Queue ID is correct and has sequence number of 0');
ok( -r "$self->{tmpdir}/qf" . $qf->get_queue_id, 'Queue file exists');
}
sub generate_qf_file : Test(2)
{
my ($self) = @_;
my $qf = Sendmail::Queue::Qf->new({
timestamp => 1234567890,
queue_directory => $self->{tmpdir},
});
# All of this evil is to force file collisions so that we can see that
# the sequence number is 3 higher than the value given by rand().
my $count = 0;
my $existing_file = "$self->{tmpdir}/foo";
open(FH,">$existing_file") or die $!;
close FH;
no warnings 'once';
local *File::Spec::catfile = sub {
( run in 0.683 second using v1.01-cache-2.11-cpan-39bf76dae61 )