1
- namespace Nager . EmailAuthentication . UnitTest . DmarcRecordParserTests
1
+ using Nager . EmailAuthentication . Models ;
2
+
3
+ namespace Nager . EmailAuthentication . UnitTest . DmarcRecordParserTests
2
4
{
3
5
[ TestClass ]
4
6
public sealed class ComplexTest
5
7
{
6
8
[ TestMethod ]
7
9
public void TryParse_ValidDmarcString1_ReturnsTrueAndPopulatesDmarcRecord ( )
8
10
{
9
- var isSuccessful = DmarcRecordDataFragmentParser . TryParse ( "v=DMARC1; p=reject; rua=mailto:[email protected] , mailto:[email protected] ; pct=100; adkim=s; aspf=s" , out var dmarcDataFragment , out var parsingResults ) ;
11
+ var dmarcRecord = "v=DMARC1; p=reject; rua=mailto:[email protected] , mailto:[email protected] ; pct=100; adkim=s; aspf=s" ;
12
+
13
+ var isSuccessful = DmarcRecordDataFragmentParser . TryParse ( dmarcRecord , out var dmarcDataFragment , out var parsingResults ) ;
10
14
11
15
Assert . IsTrue ( isSuccessful ) ;
12
16
Assert . IsNotNull ( dmarcDataFragment ) ;
@@ -21,21 +25,77 @@ public void TryParse_ValidDmarcString1_ReturnsTrueAndPopulatesDmarcRecord()
21
25
[ TestMethod ]
22
26
public void TryParse_ValidDmarcString2_ReturnsTrueAndPopulatesDmarcRecord ( )
23
27
{
24
- var isSuccessful = DmarcRecordDataFragmentParser . TryParse ( "v=DMARC1; p=reject; rua=mailto:[email protected] , mailto:[email protected] ; pct=100; adkim=s; aspf=s" , out var dmarcDataFragment , out var parsingResults ) ;
25
- Assert . IsNotNull ( dmarcDataFragment ) ;
28
+ var dmarcRecordRaw = "v=DMARC1; p=reject; rua=mailto:[email protected] !10m, mailto:[email protected] ; pct=100; adkim=s; aspf=s" ;
26
29
27
- var isSuccessful2 = DmarcRecordParser . TryParse ( dmarcDataFragment , out var dmarcRecord ) ;
28
- Assert . IsTrue ( isSuccessful2 ) ;
29
- Assert . IsNotNull ( dmarcRecord ) ;
30
+ var isDataFragmentParserSuccessful = DmarcRecordDataFragmentParser . TryParse ( dmarcRecordRaw , out var dmarcDataFragment , out var parsingResults ) ;
31
+ Assert . IsNotNull ( dmarcDataFragment ) ;
30
32
31
- Assert . IsTrue ( isSuccessful ) ;
33
+ Assert . IsTrue ( isDataFragmentParserSuccessful ) ;
32
34
Assert . IsNotNull ( dmarcDataFragment ) ;
33
35
Assert . AreEqual ( "reject" , dmarcDataFragment . DomainPolicy ) ;
34
- Assert . AreEqual ( "mailto:[email protected] , mailto:[email protected] " , dmarcDataFragment . AggregateReportUri ) ;
36
+ Assert . AreEqual ( "mailto:[email protected] !10m , mailto:[email protected] " , dmarcDataFragment . AggregateReportUri ) ;
35
37
Assert . AreEqual ( "100" , dmarcDataFragment . PolicyPercentage ) ;
36
38
Assert . AreEqual ( "s" , dmarcDataFragment . DkimAlignmentMode ) ;
37
39
Assert . AreEqual ( "s" , dmarcDataFragment . SpfAlignmentMode ) ;
38
40
Assert . IsNull ( parsingResults , "ParsingResults is not null" ) ;
41
+
42
+ var isParserSuccessful = DmarcRecordParser . TryParse ( dmarcDataFragment , out var dmarcRecord ) ;
43
+ Assert . IsTrue ( isParserSuccessful ) ;
44
+ Assert . IsNotNull ( dmarcRecord ) ;
45
+ Assert . AreEqual ( DmarcPolicy . Reject , dmarcRecord . DomainPolicy ) ;
46
+ Assert . AreEqual ( DmarcPolicy . Reject , dmarcRecord . SubdomainPolicy ) ;
47
+ Assert . AreEqual ( AlignmentMode . Strict , dmarcRecord . DkimAlignmentMode ) ;
48
+ Assert . AreEqual ( AlignmentMode . Strict , dmarcRecord . SpfAlignmentMode ) ;
49
+ Assert . AreEqual ( 100 , dmarcRecord . PolicyPercentage ) ;
50
+ }
51
+
52
+ [ TestMethod ]
53
+ public void TryParse_ValidDmarcString3_ReturnsTrueAndPopulatesDmarcRecord ( )
54
+ {
55
+ var dmarcRecordRaw = "v=DMARC1; p=reject; rua=mailto:[email protected] , mailto:[email protected] ; pct=50; adkim=r; aspf=r" ;
56
+
57
+ var isDataFragmentParserSuccessful = DmarcRecordDataFragmentParser . TryParse ( dmarcRecordRaw , out var dmarcDataFragment , out var parsingResults ) ;
58
+ Assert . IsNotNull ( dmarcDataFragment ) ;
59
+
60
+ Assert . IsTrue ( isDataFragmentParserSuccessful ) ;
61
+ Assert . IsNotNull ( dmarcDataFragment ) ;
62
+ Assert . AreEqual ( "reject" , dmarcDataFragment . DomainPolicy ) ;
63
+ Assert . AreEqual ( "mailto:[email protected] , mailto:[email protected] " , dmarcDataFragment . AggregateReportUri ) ;
64
+ Assert . AreEqual ( "50" , dmarcDataFragment . PolicyPercentage ) ;
65
+ Assert . AreEqual ( "r" , dmarcDataFragment . DkimAlignmentMode ) ;
66
+ Assert . AreEqual ( "r" , dmarcDataFragment . SpfAlignmentMode ) ;
67
+ Assert . IsNull ( parsingResults , "ParsingResults is not null" ) ;
68
+
69
+ var isParserSuccessful = DmarcRecordParser . TryParse ( dmarcDataFragment , out var dmarcRecord ) ;
70
+ Assert . IsTrue ( isParserSuccessful ) ;
71
+ Assert . IsNotNull ( dmarcRecord ) ;
72
+ Assert . AreEqual ( DmarcPolicy . Reject , dmarcRecord . DomainPolicy ) ;
73
+ Assert . AreEqual ( DmarcPolicy . Reject , dmarcRecord . SubdomainPolicy ) ;
74
+ Assert . AreEqual ( AlignmentMode . Relaxed , dmarcRecord . DkimAlignmentMode ) ;
75
+ Assert . AreEqual ( AlignmentMode . Relaxed , dmarcRecord . SpfAlignmentMode ) ;
76
+ Assert . AreEqual ( 50 , dmarcRecord . PolicyPercentage ) ;
77
+ }
78
+
79
+ [ TestMethod ]
80
+ public void TryParse_InvalidDmarcString1_ReturnsTrueAndPopulatesDmarcRecord ( )
81
+ {
82
+ var dmarcRecordRaw = "v=DMARC1; p=reject; rua=mailto:[email protected] , mailto:[email protected] ; pct=50; adkim=t; aspf=t" ;
83
+
84
+ var isDataFragmentParserSuccessful = DmarcRecordDataFragmentParser . TryParse ( dmarcRecordRaw , out var dmarcDataFragment , out var parsingResults ) ;
85
+ Assert . IsNotNull ( dmarcDataFragment ) ;
86
+
87
+ Assert . IsTrue ( isDataFragmentParserSuccessful ) ;
88
+ Assert . IsNotNull ( dmarcDataFragment ) ;
89
+ Assert . AreEqual ( "reject" , dmarcDataFragment . DomainPolicy ) ;
90
+ Assert . AreEqual ( "mailto:[email protected] , mailto:[email protected] " , dmarcDataFragment . AggregateReportUri ) ;
91
+ Assert . AreEqual ( "50" , dmarcDataFragment . PolicyPercentage ) ;
92
+ Assert . AreEqual ( "t" , dmarcDataFragment . DkimAlignmentMode ) ;
93
+ Assert . AreEqual ( "t" , dmarcDataFragment . SpfAlignmentMode ) ;
94
+ Assert . IsNotNull ( parsingResults , "ParsingResults is null" ) ;
95
+
96
+ var isParserSuccessful = DmarcRecordParser . TryParse ( dmarcDataFragment , out var dmarcRecord ) ;
97
+ Assert . IsFalse ( isParserSuccessful ) ;
98
+ Assert . IsNull ( dmarcRecord ) ;
39
99
}
40
100
}
41
101
}
0 commit comments