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
|
#!/usr/bin/perl -T
#
# Test processing in combination with User::Identity as documented in
# Mail::Message::Field.
#
use strict;
use warnings;
use lib qw(. .. tests);
use Tools;
use Test::More;
use Mail::Message::Field::Fast;
my $mmf = 'Mail::Message::Field::Fast';
BEGIN {
if($] < 5.007003)
{ plan skip_all => "Requires module Encode which requires Perl 5.7.3";
exit 0;
}
eval 'require User::Identity';
if($@)
{
plan skip_all => 'User::Identity failed';
exit 0;
}
else
{ plan tests => 22;
}
}
# A user's identity
my $patrik = User::Identity->new
( "patrik"
, full_name => "Patrik Fltstrm" # from rfc
, charset => "ISO-8859-1"
);
isa_ok($patrik, 'User::Identity');
my $email1 = $patrik->add
( email => 'home'
, address => 'him@home.net'
);
isa_ok($email1, 'Mail::Identity');
# address based on Mail::Identity with user
my $f1 = $mmf->new(To => $email1);
isa_ok($f1, $mmf);
is($f1, '=?ISO-8859-1?q?Patrik_F=E4ltstr=F6m?= <him@home.net>');
my $f1b = $mmf->new(To => $patrik);
isa_ok($f1b, $mmf);
is($f1b, '=?ISO-8859-1?q?Patrik_F=E4ltstr=F6m?= <him@home.net>');
# address based on Mail::Identity without user
require Mail::Identity;
my $email2 = Mail::Identity->new
( 'work'
, address => 'somewhere@example.com'
);
my $f2 = $mmf->new(To => $email2);
is($f2, 'somewhere@example.com');
# A very complex address
my $email3 = Mail::Identity->new
( 'work'
, address => 'somehow@example.com'
, phrase => 'my " quote'
, comment => 'make it ) hard'
);
my $f3 = $mmf->new(To => $email3);
is($f3, qq["my \\" quote" <somehow\@example.com> (make it \\) hard)]);
# A collection of e-mails
$patrik->add(email => $email3);
my $emails = $patrik->collection('emails');
isa_ok($emails, 'User::Identity::Collection::Emails');
cmp_ok(@$emails, '==', 2);
# An array of addresses
my $f4 = $mmf->new
( To =>
[ $email1
, "aap\@hok.nl"
, $email2
, $patrik->find(email => 'work')
]
);
is($f4->string, <<'FOLDED');
To: =?ISO-8859-1?q?Patrik_F=E4ltstr=F6m?= <him@home.net>, aap@hok.nl,
somewhere@example.com, "my \" quote" <somehow@example.com> (make it \) hard)
FOLDED
# Test a collection which is linked to user
my $f5 = $mmf->new(To => $emails);
is($f5->string, <<'TWO');
To: emails: "my \" quote" <somehow@example.com> (make it \) hard),
=?ISO-8859-1?q?Patrik_F=E4ltstr=F6m?= <him@home.net>;
TWO
require Mail::Message::Field::AddrGroup;
# test a collection which is not linked to a user
my $mmfg = 'Mail::Message::Field::AddrGroup';
my $g = $mmfg->new(name => 'groupie');
isa_ok($g, $mmfg);
is($g->name, 'groupie');
my @addrs = $g->addresses;
cmp_ok(scalar @addrs, '==', 0);
is($g->string, "groupie: ;");
$g->addAddress($email1);
@addrs = $g->addresses;
cmp_ok(scalar @addrs, '==', 1);
is($g->string, 'groupie: him@home.net;');
$g->addAddress($email3);
@addrs = $g->addresses;
cmp_ok(scalar @addrs, '==', 2);
is($g->string, 'groupie: "my \" quote" <somehow@example.com> (make it \) hard), him@home.net;');
$g->addAddress('aap@hok.nl');
@addrs = $g->addresses;
cmp_ok(scalar @addrs, '==', 3);
is($g->string, 'groupie: "my \" quote" <somehow@example.com> (make it \) hard), aap@hok.nl, him@home.net;');
|