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