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