1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149
|
#!/usr/bin/perl -T
#
# Test the processing of resent groups.
#
use strict;
use warnings;
use lib qw(. .. tests);
use Tools;
use Test::More tests => 26;
use IO::Scalar;
use Mail::Message::Head::ResentGroup;
use Mail::Message::Head::Complete;
#
# Creation of a group
#
my $h = Mail::Message::Head::Complete->new;
ok(defined $h);
my $rg = Mail::Message::Head::ResentGroup->new
( head => $h
, From => 'the.rg.group@example.com'
, Received => 'obligatory field'
);
ok(defined $rg);
isa_ok($rg, 'Mail::Message::Head::ResentGroup');
my @fn = $rg->fieldNames;
cmp_ok(scalar(@fn), '==', 2, "Two fields");
is($fn[0], 'Received');
is($fn[1], 'Resent-From');
{ my $from = $rg->from;
ok(ref $from);
isa_ok($from, 'Mail::Message::Field');
is($from->name, 'resent-from');
}
#
# Interaction with a header
#
$h->add(From => 'me');
$h->add(To => 'you');
$h->addResentGroup($rg);
{ my $output;
my $fh = IO::Scalar->new(\$output);
$h->print($fh);
$fh->close;
is($output, <<'EXPECTED');
From: me
To: you
Received: obligatory field
Resent-From: the.rg.group@example.com
EXPECTED
}
my $rg2 = $h->addResentGroup
( Received => 'now or never'
, Cc => 'cc to everyone'
, Bcc => 'undisclosed'
, 'Return-Path' => 'Appears before everything else'
, 'Message-ID' => '<my own id>'
, Sender => 'do not believe it'
, From => 'should be added'
, To => 'just to check every single field'
);
ok(defined $rg2);
ok(ref $rg2);
isa_ok($rg2, 'Mail::Message::Head::ResentGroup');
{ my $output;
my $fh = IO::Scalar->new(\$output);
$h->print($fh);
$fh->close;
is($output, <<'EXPECTED');
From: me
To: you
Return-Path: Appears before everything else
Received: now or never
Resent-From: should be added
Resent-Sender: do not believe it
Resent-To: just to check every single field
Resent-Cc: cc to everyone
Resent-Bcc: undisclosed
Resent-Message-ID: <my own id>
Received: obligatory field
Resent-From: the.rg.group@example.com
EXPECTED
}
my $h2 = $h->clone;
ok(defined $h2);
isa_ok($h2, 'Mail::Message::Head::Complete');
{ my @rgs = $h2->resentGroups;
cmp_ok(@rgs, '==', 2);
ok(defined $rgs[0]);
ok(ref $rgs[0]);
ok($rgs[0]->isa('Mail::Message::Head::ResentGroup'));
my $rg1 = $rgs[0];
is($rg1->messageId, '<my own id>');
my @of = $rg1->orderedFields;
cmp_ok(@of, '==', 8);
@of = $rgs[1]->orderedFields;
cmp_ok(@of, '==', 2);
# Now delete, and close scope to avoid accidental reference to
# fields which should get cleaned-up.
$rgs[0]->delete;
}
{ my @rgs = $h2->resentGroups;
cmp_ok(@rgs, '==', 1);
my @of = $rgs[0]->orderedFields;
cmp_ok(@of, '==', 2);
my $output;
my $fh = IO::Scalar->new(\$output);
$h2->print($fh);
$fh->close;
is($output, <<'EXPECTED');
From: me
To: you
Received: obligatory field
Resent-From: the.rg.group@example.com
EXPECTED
}
|