1#!perl 2use 5.008; 3use strict; 4use warnings FATAL => 'all'; 5use lib 't'; 6use Test::More; 7use Test::Exception; 8 9use lib 'lib'; 10use Mail::AuthenticationResults::Header::Group; 11use Mail::AuthenticationResults::Parser; 12 13my $Group = Mail::AuthenticationResults::Header::Group->new(); 14 15# iCloud adds multiple headers, let's add them all to a group 16 17my @ARHeaders = ( 18'Authentication-results: mr21p00im-dmarcmilter001.me.com; dmarc=pass 19 header.from=fastmail.com', 20'Authentication-results: mr21p00im-spfmilter010.me.com; spf=pass 21 (mr21p00im-spfmilter010.me.com: domain of deliverability@fastmail.com 22 designates 66.111.4.221 as permitted sender) 23 smtp.mailfrom=deliverability@fastmail.com', 24'Authentication-results: mr21p00im-dkimmilter005.me.com; dkim=pass (2048-bit 25 key) header.d=messagingengine.com header.i=@messagingengine.com 26 header.b=V9y21l+w; dkim-adsp=pass', 27'Authentication-results: mr21p00im-dkimmilter005.me.com; dkim=pass (2048-bit 28 key) header.d=fastmail.com header.i=@fastmail.com header.b=0GObIji6; 29 dkim-adsp=pass', 30); 31 32foreach my $Header ( @ARHeaders ) { 33 my $Parsed; 34 lives_ok( sub{ $Parsed = Mail::AuthenticationResults::Parser->new()->parse( $Header ) }, 'Parse lives' ); 35 $Group->add_child( $Parsed ); 36} 37 38#is ( $Parsed->value(), 'mxs.mail.ru', 'ServID' ); 39is ( scalar @{$Group->search({ 'key'=>'spf','value'=>'pass' })->children() }, 1, 'SPF Pass' ); 40is ( scalar @{$Group->search({ 'key'=>'dkim','value'=>'pass' })->search({ 'key'=>'header.d','value'=>'fastmail.com' })->children() }, 1, 'DKIM fastmail.com Pass' ); 41is ( scalar @{$Group->search({ 'key'=>'dkim','value'=>'pass' })->search({ 'key'=>'header.d','value'=>'messagingengine.com' })->children() }, 1, 'DKIM messagingengine.com Pass' ); 42is ( scalar @{$Group->search({ 'key'=>'dmarc','value'=>'pass' })->children() }, 1, 'DMARC Pass' ); 43 44done_testing(); 45 46