1
+ using AuthenticodeLint ;
2
+ using AuthenticodeLint . Rules ;
3
+ using System . Collections . Generic ;
4
+ using Xunit ;
5
+
6
+ namespace AuthenticodeLintTests . Rules
7
+ {
8
+ public class PublisherInformationPresentRuleTests
9
+ {
10
+ private static CheckConfiguration Configuration => new CheckConfiguration ( new List < string > ( ) , null , false , new HashSet < int > ( ) , false , RevocationChecking . None ) ;
11
+
12
+ private static Graph < Signature > GetGraphForFile ( string file )
13
+ {
14
+ var extractor = new SignatureExtractor ( ) ;
15
+ return extractor . Extract ( file ) ;
16
+ }
17
+
18
+ [ Fact ]
19
+ public void ShouldFailWhenNoPublisherInformation ( )
20
+ {
21
+ var signature = GetGraphForFile ( "../../inputs/pubinfonoexist.ex_" ) ;
22
+ var rule = new PublisherInformationPresentRule ( ) ;
23
+ var logger = new MemorySignatureLogger ( ) ;
24
+
25
+ var result = rule . Validate ( signature , logger , Configuration ) ;
26
+ Assert . Equal ( RuleResult . Fail , result ) ;
27
+ Assert . Collection ( logger . Messages , s => s . EndsWith ( "Signature does not have an accompanying description." ) , s => s . EndsWith ( "Signature does not have an accompanying URL." ) ) ;
28
+ }
29
+
30
+ [ Fact ]
31
+ public void ShouldFailWhenNoPublisherURL ( )
32
+ {
33
+ var signature = GetGraphForFile ( "../../inputs/pubinfohasdescription.ex_" ) ;
34
+ var rule = new PublisherInformationPresentRule ( ) ;
35
+ var logger = new MemorySignatureLogger ( ) ;
36
+
37
+ var result = rule . Validate ( signature , logger , Configuration ) ;
38
+ Assert . Equal ( RuleResult . Fail , result ) ;
39
+ Assert . Collection ( logger . Messages , s => s . EndsWith ( "Signature does not have an accompanying URL." ) ) ;
40
+ }
41
+
42
+ [ Fact ]
43
+ public void ShouldFailWhenNoPublisherDescription ( )
44
+ {
45
+ var signature = GetGraphForFile ( "../../inputs/pubinfohasurl.ex_" ) ;
46
+ var rule = new PublisherInformationPresentRule ( ) ;
47
+ var logger = new MemorySignatureLogger ( ) ;
48
+
49
+ var result = rule . Validate ( signature , logger , Configuration ) ;
50
+ Assert . Equal ( RuleResult . Fail , result ) ;
51
+ Assert . Collection ( logger . Messages , s => s . EndsWith ( "Signature does not have an accompanying description." ) ) ;
52
+ }
53
+
54
+ [ Fact ]
55
+ public void ShouldFailWhenUrlIsBogus ( )
56
+ {
57
+ var signature = GetGraphForFile ( "../../inputs/pubinfohasbogusurl.ex_" ) ;
58
+ var rule = new PublisherInformationPresentRule ( ) ;
59
+ var logger = new MemorySignatureLogger ( ) ;
60
+
61
+ var result = rule . Validate ( signature , logger , Configuration ) ;
62
+ Assert . Equal ( RuleResult . Fail , result ) ;
63
+ Assert . Collection ( logger . Messages , s => s . EndsWith ( "Signature's accompanying URL is not a valid URI." ) ) ;
64
+ }
65
+
66
+
67
+ [ Fact ]
68
+ public void ShouldPassWhenUrlAndDescriptionPresent ( )
69
+ {
70
+ var signature = GetGraphForFile ( "../../inputs/pubinfovalid.ex_" ) ;
71
+ var rule = new PublisherInformationPresentRule ( ) ;
72
+ var logger = new MemorySignatureLogger ( ) ;
73
+
74
+ var result = rule . Validate ( signature , logger , Configuration ) ;
75
+ Assert . Equal ( RuleResult . Pass , result ) ;
76
+ Assert . Empty ( logger . Messages ) ;
77
+ }
78
+ }
79
+ }
0 commit comments