Skip to content

Commit 44f3ede

Browse files
committed
Optimize unit test logic
1 parent fec11a9 commit 44f3ede

File tree

18 files changed

+187
-89
lines changed

18 files changed

+187
-89
lines changed

src/Nager.EmailAuthentication.UnitTest/DkimPublicKeyRecordParserTests/BasicTest.cs src/Nager.EmailAuthentication.UnitTest/DkimPublicKeyRecordTests/FragmentParser/BasicTest.cs

+1-31
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
using Nager.EmailAuthentication.FragmentParsers;
22

3-
namespace Nager.EmailAuthentication.UnitTest.DkimPublicKeyRecordParserTests
3+
namespace Nager.EmailAuthentication.UnitTest.DkimPublicKeyRecordTests.FragmentParser
44
{
55
[TestClass]
66
public sealed class BasicTest
@@ -52,35 +52,5 @@ public void TryParse_WrongDkimPublicKeyRecord1_ReturnsTrueAndPopulatesDataFragme
5252
Assert.IsNotNull(dkimPublicKeyRecordDataFragment);
5353
Assert.IsNotNull(parsingResults, "ParsingResults is null");
5454
}
55-
56-
[TestMethod]
57-
public void TryParse_WrongDkimPublicKeyRecord2_ReturnsTrueAndPopulatesDataFragment()
58-
{
59-
var dkimPublicKeyRecordRaw = "v=DMARC1;p=reject;";
60-
61-
var isSuccessful = DkimPublicKeyRecordParser.TryParse(dkimPublicKeyRecordRaw, out var dkimPublicKeyRecord);
62-
Assert.IsFalse(isSuccessful);
63-
Assert.IsNull(dkimPublicKeyRecord, "DkimPublicKeyRecord is not null");
64-
}
65-
66-
[TestMethod]
67-
public void TryParse_DkimPublicKeyRecordWithVersion_ReturnsTrueAndPopulatesData()
68-
{
69-
var dkimPublicKeyRecordRaw = "v=DKIM1;p=test;";
70-
71-
var isSuccessful = DkimPublicKeyRecordParser.TryParse(dkimPublicKeyRecordRaw, out var dkimPublicKeyRecord);
72-
Assert.IsTrue(isSuccessful);
73-
Assert.IsNotNull(dkimPublicKeyRecord, "DkimPublicKeyRecord is null");
74-
}
75-
76-
[TestMethod]
77-
public void TryParse_DkimPublicKeyRecordWithoutVersion_ReturnsTrueAndPopulatesData()
78-
{
79-
var dkimPublicKeyRecordRaw = "k=rsa; p=test";
80-
81-
var isSuccessful = DkimPublicKeyRecordParser.TryParse(dkimPublicKeyRecordRaw, out var dkimPublicKeyRecord);
82-
Assert.IsTrue(isSuccessful);
83-
Assert.IsNotNull(dkimPublicKeyRecord, "DkimPublicKeyRecord is null");
84-
}
8555
}
8656
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
using Nager.EmailAuthentication.Models;
2+
3+
namespace Nager.EmailAuthentication.UnitTest.DkimPublicKeyRecordTests.Parser
4+
{
5+
[TestClass]
6+
public sealed class BasicTest
7+
{
8+
[TestMethod]
9+
public void TryParse_DkimPublicKeyRecordWithVersion_ReturnsTrueAndPopulatesData()
10+
{
11+
var dkimPublicKeyRecordRaw = "v=DKIM1;p=test;";
12+
13+
var isSuccessful = DkimPublicKeyRecordParser.TryParse(dkimPublicKeyRecordRaw, out var dkimPublicKeyRecord);
14+
Assert.IsTrue(isSuccessful);
15+
Assert.IsNotNull(dkimPublicKeyRecord, "DkimPublicKeyRecord is null");
16+
17+
if (dkimPublicKeyRecord is not DkimPublicKeyRecordV1 dkimPublicKeyRecordV1)
18+
{
19+
Assert.Fail("Wrong DkimPublicKeyRecordV1 class");
20+
return;
21+
}
22+
23+
Assert.AreEqual("DKIM1", dkimPublicKeyRecordV1.Version);
24+
Assert.AreEqual("rsa", dkimPublicKeyRecordV1.KeyType);
25+
Assert.AreEqual("test", dkimPublicKeyRecordV1.PublicKeyData);
26+
}
27+
28+
[TestMethod]
29+
public void TryParse_DkimPublicKeyRecordWithoutVersion_ReturnsTrueAndPopulatesData()
30+
{
31+
var dkimPublicKeyRecordRaw = "k=rsa; p=test";
32+
33+
var isSuccessful = DkimPublicKeyRecordParser.TryParse(dkimPublicKeyRecordRaw, out var dkimPublicKeyRecord);
34+
Assert.IsTrue(isSuccessful);
35+
Assert.IsNotNull(dkimPublicKeyRecord, "DkimPublicKeyRecord is null");
36+
37+
if (dkimPublicKeyRecord is not DkimPublicKeyRecordV1 dkimPublicKeyRecordV1)
38+
{
39+
Assert.Fail("Wrong DkimPublicKeyRecordV1 class");
40+
return;
41+
}
42+
43+
Assert.AreEqual("DKIM1", dkimPublicKeyRecordV1.Version);
44+
Assert.AreEqual("rsa", dkimPublicKeyRecordV1.KeyType);
45+
Assert.AreEqual("test", dkimPublicKeyRecordV1.PublicKeyData);
46+
}
47+
48+
[TestMethod]
49+
public void TryParse_WrongDkimPublicKeyRecord_ReturnsFalse()
50+
{
51+
var dkimPublicKeyRecordRaw = "v=DMARC1;p=reject;";
52+
53+
var isSuccessful = DkimPublicKeyRecordParser.TryParse(dkimPublicKeyRecordRaw, out var dkimPublicKeyRecord);
54+
Assert.IsFalse(isSuccessful);
55+
Assert.IsNull(dkimPublicKeyRecord, "DkimPublicKeyRecord is not null");
56+
}
57+
}
58+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
using Nager.EmailAuthentication.FragmentParsers;
2+
using Nager.EmailAuthentication.Models;
3+
4+
namespace Nager.EmailAuthentication.UnitTest.DkimSignatureTests.FragmentParser
5+
{
6+
[TestClass]
7+
public sealed class BasicTest
8+
{
9+
[TestMethod]
10+
public void TryParse_ValidDkimSignature1_ReturnsTrueAndPopulatesDataFragment()
11+
{
12+
var dkimSignature = "v=1; a=rsa-sha256; c=relaxed/simple; q=dns/txt; d=domain.com; [email protected]; s=mailjet; x=1737017824; h=message-id:from:from:reply-to:to:to:subject:subject:date:date:list-unsubscribe-post:list-unsubscribe:feedback-id:x-csa-complaints:x-mj-mid:x-report-abuse-to:mime-version:content-type; bh=TyN/x6t3AOfI298rgJAgZHgdWcq/XLISGen5nN3NLAc=; b=HLCLiikV92Ku/k9mGlZM0bmqPjKggGnMI0igqhXmPRzPJUC+5SUWRS6/FLUpxbX6AUGJRDYQnKKMtp6uZkYVuKG8SPZ01cUkvIiiAkczb4bK6IVvPbZOnsWqHkD6EvK3TrpIhgFfGLlcG+zIwgdDZ3O++uhpJkIX1WJlkXZYqxQ=";
13+
14+
var isSuccessful = DkimSignatureDataFragmentParserV1.TryParse(dkimSignature, out var dkimSignatureDataFragment, out var parsingResults);
15+
16+
Assert.IsTrue(isSuccessful);
17+
Assert.IsNotNull(dkimSignatureDataFragment);
18+
Assert.IsNotNull(parsingResults, "ParsingResults is not null");
19+
}
20+
}
21+
}

src/Nager.EmailAuthentication.UnitTest/DkimSignatureParserTests/HeaderTest.cs src/Nager.EmailAuthentication.UnitTest/DkimSignatureTests/FragmentParser/HeaderTest.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
using Nager.EmailAuthentication.FragmentParsers;
22

3-
namespace Nager.EmailAuthentication.UnitTest.DkimSignatureParserTests
3+
namespace Nager.EmailAuthentication.UnitTest.DkimSignatureTests.FragmentParser
44
{
55
[TestClass]
66
public sealed class HeaderTest

src/Nager.EmailAuthentication.UnitTest/DkimSignatureParserTests/SelectorTest.cs src/Nager.EmailAuthentication.UnitTest/DkimSignatureTests/FragmentParser/SelectorTest.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
using Nager.EmailAuthentication.FragmentParsers;
22

3-
namespace Nager.EmailAuthentication.UnitTest.DkimSignatureParserTests
3+
namespace Nager.EmailAuthentication.UnitTest.DkimSignatureTests.FragmentParser
44
{
55
[TestClass]
66
public sealed class SelectorTest

src/Nager.EmailAuthentication.UnitTest/DkimSignatureParserTests/SignatureAlgorithmTest.cs src/Nager.EmailAuthentication.UnitTest/DkimSignatureTests/FragmentParser/SignatureAlgorithmTest.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
using Nager.EmailAuthentication.FragmentParsers;
22

3-
namespace Nager.EmailAuthentication.UnitTest.DkimSignatureParserTests
3+
namespace Nager.EmailAuthentication.UnitTest.DkimSignatureTests.FragmentParser
44
{
55
[TestClass]
66
public sealed class SignatureAlgorithmTest

src/Nager.EmailAuthentication.UnitTest/DkimSignatureParserTests/VersionTest.cs src/Nager.EmailAuthentication.UnitTest/DkimSignatureTests/FragmentParser/VersionTest.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
using Nager.EmailAuthentication.FragmentParsers;
22

3-
namespace Nager.EmailAuthentication.UnitTest.DkimSignatureParserTests
3+
namespace Nager.EmailAuthentication.UnitTest.DkimSignatureTests.FragmentParser
44
{
55
[TestClass]
66
public sealed class VersionTest

src/Nager.EmailAuthentication.UnitTest/DkimSignatureParserTests/BasicTest.cs src/Nager.EmailAuthentication.UnitTest/DkimSignatureTests/Parser/BasicTest.cs

+3-16
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,10 @@
1-
using Nager.EmailAuthentication.FragmentParsers;
2-
using Nager.EmailAuthentication.Models;
1+
using Nager.EmailAuthentication.Models;
32

4-
namespace Nager.EmailAuthentication.UnitTest.DkimSignatureParserTests
3+
namespace Nager.EmailAuthentication.UnitTest.DkimSignatureTests.Parser
54
{
65
[TestClass]
76
public sealed class BasicTest
87
{
9-
[TestMethod]
10-
public void TryParse_ValidDkimSignature1_ReturnsTrueAndPopulatesDataFragment()
11-
{
12-
var dkimSignature = "v=1; a=rsa-sha256; c=relaxed/simple; q=dns/txt; d=domain.com; [email protected]; s=mailjet; x=1737017824; h=message-id:from:from:reply-to:to:to:subject:subject:date:date:list-unsubscribe-post:list-unsubscribe:feedback-id:x-csa-complaints:x-mj-mid:x-report-abuse-to:mime-version:content-type; bh=TyN/x6t3AOfI298rgJAgZHgdWcq/XLISGen5nN3NLAc=; b=HLCLiikV92Ku/k9mGlZM0bmqPjKggGnMI0igqhXmPRzPJUC+5SUWRS6/FLUpxbX6AUGJRDYQnKKMtp6uZkYVuKG8SPZ01cUkvIiiAkczb4bK6IVvPbZOnsWqHkD6EvK3TrpIhgFfGLlcG+zIwgdDZ3O++uhpJkIX1WJlkXZYqxQ=";
13-
14-
var isSuccessful = DkimSignatureDataFragmentParserV1.TryParse(dkimSignature, out var dkimSignatureDataFragment, out var parsingResults);
15-
16-
Assert.IsTrue(isSuccessful);
17-
Assert.IsNotNull(dkimSignatureDataFragment);
18-
Assert.IsNotNull(parsingResults, "ParsingResults is not null");
19-
}
20-
218
[TestMethod]
229
public void TryParse_ValidDkimSignature_ReturnsTrueAndDkimSignature()
2310
{
@@ -36,7 +23,7 @@ public void TryParse_ValidDkimSignature_ReturnsTrueAndDkimSignature()
3623
Assert.Fail("Wrong DkimSignature class");
3724
return;
3825
}
39-
26+
4027
Assert.AreEqual("1", dkimSignature.Version);
4128
Assert.AreEqual(SignatureAlgorithm.RsaSha256, dkimSignatureV1.SignatureAlgorithm);
4229
Assert.AreEqual(CanonicalizationType.Relaxed, dkimSignatureV1.MessageCanonicalizationHeader);

src/Nager.EmailAuthentication.UnitTest/DkimSignatureParserTests/FoldingTest.cs src/Nager.EmailAuthentication.UnitTest/DkimSignatureTests/Parser/FoldingTest.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
using Nager.EmailAuthentication.Models;
22

3-
namespace Nager.EmailAuthentication.UnitTest.DkimSignatureParserTests
3+
namespace Nager.EmailAuthentication.UnitTest.DkimSignatureTests.Parser
44
{
55
[TestClass]
66
public sealed class FoldingTest
@@ -34,7 +34,7 @@ public void TryParse_ValidSelector_ReturnsTrueAndPopulatesDataFragment()
3434
//Assert.AreEqual(["cc"], dkimSignature.SignedHeaderFields);
3535
Assert.AreEqual(new DateTimeOffset(2023, 8, 3, 3, 22, 14, TimeSpan.Zero), dkimSignatureV1.Timestamp);
3636
Assert.AreEqual(new DateTimeOffset(2023, 8, 4, 3, 22, 14, TimeSpan.Zero), dkimSignatureV1.SignatureExpiration);
37-
37+
3838

3939
//Assert.IsNull(parsingResults, "ParsingResults is not null");
4040
}

src/Nager.EmailAuthentication.UnitTest/DkimSignatureParserTests/MessageCanonicalizationTest.cs src/Nager.EmailAuthentication.UnitTest/DkimSignatureTests/Parser/MessageCanonicalizationTest.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
using Nager.EmailAuthentication.Models;
22

3-
namespace Nager.EmailAuthentication.UnitTest.DkimSignatureParserTests
3+
namespace Nager.EmailAuthentication.UnitTest.DkimSignatureTests.Parser
44
{
55
[TestClass]
66
public sealed class MessageCanonicalizationTest

src/Nager.EmailAuthentication.UnitTest/DmarcRecordParserTests/BasicTest.cs src/Nager.EmailAuthentication.UnitTest/DmarcRecordParserTests/FragmentParser/BasicTest.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
using Nager.EmailAuthentication.FragmentParsers;
22

3-
namespace Nager.EmailAuthentication.UnitTest.DmarcRecordParserTests
3+
namespace Nager.EmailAuthentication.UnitTest.DmarcRecordParserTests.FragmentParser
44
{
55
[TestClass]
66
public sealed class BasicTest

src/Nager.EmailAuthentication.UnitTest/DmarcRecordParserTests/ComplexTest.cs src/Nager.EmailAuthentication.UnitTest/DmarcRecordParserTests/FragmentParser/ComplexTest.cs

+1-29
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
using Nager.EmailAuthentication.FragmentParsers;
22
using Nager.EmailAuthentication.Models;
33

4-
namespace Nager.EmailAuthentication.UnitTest.DmarcRecordParserTests
4+
namespace Nager.EmailAuthentication.UnitTest.DmarcRecordParserTests.FragmentParser
55
{
66
[TestClass]
77
public sealed class ComplexTest
@@ -52,17 +52,6 @@ public void TryParse_ValidDmarcString2_ReturnsTrueAndPopulatesDmarcRecord()
5252
Assert.AreEqual("100", dataFragmentV1.PolicyPercentage);
5353
Assert.AreEqual("s", dataFragmentV1.DkimAlignmentMode);
5454
Assert.AreEqual("s", dataFragmentV1.SpfAlignmentMode);
55-
56-
var isParserSuccessful = DmarcRecordParser.TryParseV1(dataFragmentV1, out var dmarcRecord);
57-
58-
Assert.IsTrue(isParserSuccessful);
59-
Assert.IsNotNull(dmarcRecord);
60-
61-
Assert.AreEqual(DmarcPolicy.Reject, dmarcRecord.DomainPolicy);
62-
Assert.AreEqual(DmarcPolicy.Reject, dmarcRecord.SubdomainPolicy);
63-
Assert.AreEqual(AlignmentMode.Strict, dmarcRecord.DkimAlignmentMode);
64-
Assert.AreEqual(AlignmentMode.Strict, dmarcRecord.SpfAlignmentMode);
65-
Assert.AreEqual(100, dmarcRecord.PolicyPercentage);
6655
}
6756

6857
[TestMethod]
@@ -87,18 +76,6 @@ public void TryParse_ValidDmarcString3_ReturnsTrueAndPopulatesDmarcRecord()
8776
Assert.AreEqual("50", dataFragmentV1.PolicyPercentage);
8877
Assert.AreEqual("r", dataFragmentV1.DkimAlignmentMode);
8978
Assert.AreEqual("r", dataFragmentV1.SpfAlignmentMode);
90-
91-
92-
var isParserSuccessful = DmarcRecordParser.TryParseV1(dataFragmentV1, out var dmarcRecord);
93-
94-
Assert.IsTrue(isParserSuccessful);
95-
Assert.IsNotNull(dmarcRecord);
96-
97-
Assert.AreEqual(DmarcPolicy.Reject, dmarcRecord.DomainPolicy);
98-
Assert.AreEqual(DmarcPolicy.Reject, dmarcRecord.SubdomainPolicy);
99-
Assert.AreEqual(AlignmentMode.Relaxed, dmarcRecord.DkimAlignmentMode);
100-
Assert.AreEqual(AlignmentMode.Relaxed, dmarcRecord.SpfAlignmentMode);
101-
Assert.AreEqual(50, dmarcRecord.PolicyPercentage);
10279
}
10380

10481
[TestMethod]
@@ -123,11 +100,6 @@ public void TryParse_InvalidDmarcString1_ReturnsTrueAndPopulatesDmarcRecord()
123100
Assert.AreEqual("50", dataFragmentV1.PolicyPercentage);
124101
Assert.AreEqual("t", dataFragmentV1.DkimAlignmentMode);
125102
Assert.AreEqual("t", dataFragmentV1.SpfAlignmentMode);
126-
127-
var isParserSuccessful = DmarcRecordParser.TryParseV1(dataFragmentV1, out var dmarcRecord);
128-
129-
Assert.IsFalse(isParserSuccessful);
130-
Assert.IsNull(dmarcRecord);
131103
}
132104
}
133105
}

src/Nager.EmailAuthentication.UnitTest/DmarcRecordParserTests/FailureReportingOptionsTest.cs src/Nager.EmailAuthentication.UnitTest/DmarcRecordParserTests/FragmentParser/FailureReportingOptionsTest.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
using Nager.EmailAuthentication.FragmentParsers;
22
using Nager.EmailAuthentication.Models;
33

4-
namespace Nager.EmailAuthentication.UnitTest.DmarcRecordParserTests
4+
namespace Nager.EmailAuthentication.UnitTest.DmarcRecordParserTests.FragmentParser
55
{
66
[TestClass]
77
public sealed class FailureReportingOptionsTest

src/Nager.EmailAuthentication.UnitTest/DmarcRecordParserTests/PolicyPercentageTest.cs src/Nager.EmailAuthentication.UnitTest/DmarcRecordParserTests/FragmentParser/PolicyPercentageTest.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
using Nager.EmailAuthentication.FragmentParsers;
22
using Nager.EmailAuthentication.Models;
33

4-
namespace Nager.EmailAuthentication.UnitTest.DmarcRecordParserTests
4+
namespace Nager.EmailAuthentication.UnitTest.DmarcRecordParserTests.FragmentParser
55
{
66
[TestClass]
77
public sealed class PolicyPercentageTest

src/Nager.EmailAuthentication.UnitTest/DmarcRecordParserTests/PolicyTest.cs src/Nager.EmailAuthentication.UnitTest/DmarcRecordParserTests/FragmentParser/PolicyTest.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
using Nager.EmailAuthentication.FragmentParsers;
22
using Nager.EmailAuthentication.Models;
33

4-
namespace Nager.EmailAuthentication.UnitTest.DmarcRecordParserTests
4+
namespace Nager.EmailAuthentication.UnitTest.DmarcRecordParserTests.FragmentParser
55
{
66
[TestClass]
77
public sealed class PolicyTest

src/Nager.EmailAuthentication.UnitTest/DmarcRecordParserTests/ReportFormatTest.cs src/Nager.EmailAuthentication.UnitTest/DmarcRecordParserTests/FragmentParser/ReportFormatTest.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
using Nager.EmailAuthentication.FragmentParsers;
22
using Nager.EmailAuthentication.Models;
33

4-
namespace Nager.EmailAuthentication.UnitTest.DmarcRecordParserTests
4+
namespace Nager.EmailAuthentication.UnitTest.DmarcRecordParserTests.FragmentParser
55
{
66
[TestClass]
77
public sealed class ReportFormatTest

src/Nager.EmailAuthentication.UnitTest/DmarcRecordParserTests/ReportingIntervalTest.cs src/Nager.EmailAuthentication.UnitTest/DmarcRecordParserTests/FragmentParser/ReportingIntervalTest.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
using Nager.EmailAuthentication.FragmentParsers;
22
using Nager.EmailAuthentication.Models;
33

4-
namespace Nager.EmailAuthentication.UnitTest.DmarcRecordParserTests
4+
namespace Nager.EmailAuthentication.UnitTest.DmarcRecordParserTests.FragmentParser
55
{
66
[TestClass]
77
public sealed class ReportingIntervalTest

0 commit comments

Comments
 (0)