Email-MIME-MobileJP
view release on metacpan or search on metacpan
t/01_parse.t view on Meta::CPAN
use strict;
use warnings;
use utf8;
use Test::More;
use Email::MIME::MobileJP::Parser;
use Email::MIME;
use Encode;
use MIME::Base64;
use Devel::Peek;
subtest 'single part' => sub {
my $src = Email::MIME->create(
header => [
From => 'tomi...@docomo.ne.jp',
To => 'to@example.com',
Subject =>
Encode::encode( 'MIME-Header-ISO_2022_JP', 'ã³ã³ããã¯' ),
],
attributes => {
content_type => 'text/plain',
charset => 'iso-2022-jp',
},
body => encode( 'iso-2022-jp', 'å
æ°ã§ãã£ã¦ããã¼?' ),
);
my $mail = Email::MIME::MobileJP::Parser->new($src->as_string);
subtest 'subject' => sub {
is $mail->subject(), 'ã³ã³ããã¯';
ok Encode::is_utf8($mail->subject), 'decoded';
};
subtest 'carrier' => sub {
isa_ok $mail->carrier, 'Email::Address::JP::Mobile::DoCoMo';
is $mail->carrier->name, 'DoCoMo';
};
subtest 'get_texts' => sub {
my @texts = $mail->get_texts();
is scalar(@texts), 1;
is $texts[0], 'å
æ°ã§ãã£ã¦ããã¼?';
ok Encode::is_utf8($texts[0]);
};
};
subtest 'multi part' => sub {
my $src = Email::MIME->create(
'header' => [
'From' => encode( 'MIME-Header-ISO_2022_JP', 'foo.@docomo.ne.jp' ),
'To' => encode( 'MIME-Header-ISO_2022_JP', 'foo@example.com' ),
'Subject' => encode( 'MIME-Header-ISO_2022_JP', "ãããã¡ã" ),
],
parts => [
Email::MIME->create(
'attributes' => {
'content_type' => 'text/plain',
'charset' => 'ISO-2022-JP',
'encoding' => '7bit',
},
'body' => Encode::encode( 'iso-2022-jp', "ãã£ã»" ),
),
Email::MIME->create(
'attributes' => {
'fimename' => 'hoge.jpg',
'content_type' => 'image/jpeg',
'encoding' => 'base64',
'name' => 'sample.jpg',
},
'body' => 'JFIF(ry',
),
],
);
note $src->as_string;
my $mail = Email::MIME::MobileJP::Parser->new($src->as_string);
subtest 'get_texts' => sub {
my @texts = $mail->get_texts();
is scalar(@texts), 1;
is($texts[0], "ãã£ã»") or do {
Dump($texts[0]);
Dump("ãã£ã»");
};
ok Encode::is_utf8($texts[0]);
};
subtest 'get_parts' => sub {
my @parts = $mail->get_parts(qr{^image/(gif|png|jpeg)});
is scalar(@parts), 1;
is $parts[0]->content_type, 'image/jpeg; name="sample.jpg"';
( run in 0.775 second using v1.01-cache-2.11-cpan-2c0d6866c4f )