1
+ using System ;
2
+ using System . Collections . Generic ;
3
+ using Exceptionless . Extensions ;
4
+ using Exceptionless . Models ;
5
+ using Xunit ;
6
+
7
+ namespace Exceptionless . Tests . Configuration {
8
+ public class DataExclusionTests {
9
+ [ Fact ]
10
+ public void WillIgnoreNullKey ( ) {
11
+ var ev = new Event ( ) ;
12
+ ev . SetProperty ( null , "test" ) ;
13
+ Assert . Empty ( ev . Data ) ;
14
+ }
15
+
16
+ [ Fact ]
17
+ public void WillIgnoreNullValue ( ) {
18
+ var ev = new Event ( ) ;
19
+ ev . SetProperty ( "test" , null ) ;
20
+ Assert . Empty ( ev . Data ) ;
21
+ }
22
+
23
+ [ Fact ]
24
+ public void WillIgnoreExcludedKey ( ) {
25
+ var ev = new Event ( ) ;
26
+ ev . SetProperty ( "Credit Card Number" , "test" , excludedPropertyNames : new [ ] { "Credit Card Number" } ) ;
27
+ Assert . Empty ( ev . Data ) ;
28
+ }
29
+
30
+ [ Fact ]
31
+ public void CanHandleSortedList ( ) {
32
+ var values = new SortedList < string , string > {
33
+ { "apple" , "test" } ,
34
+ { "Credit Card Number" , "4444 4444 4444 4444" }
35
+ } ;
36
+
37
+ var ev = new Event ( ) ;
38
+ ev . SetProperty ( nameof ( values ) , values , excludedPropertyNames : new [ ] { "Credit Card Number" } ) ;
39
+ Assert . Single ( ev . Data ) ;
40
+ Assert . Contains ( nameof ( values ) , ev . Data . Keys ) ;
41
+ Assert . Equal ( "{\" apple\" :\" test\" }" , ev . Data . GetString ( nameof ( values ) ) ) ;
42
+ }
43
+
44
+ [ Fact ]
45
+ public void CanHandleDictionary ( ) {
46
+ var values = new Dictionary < string , string > {
47
+ { "apple" , "test" } ,
48
+ { "Credit Card Number" , "4444 4444 4444 4444" }
49
+ } ;
50
+
51
+ var ev = new Event ( ) ;
52
+ ev . SetProperty ( nameof ( values ) , values , excludedPropertyNames : new [ ] { "Credit Card Number" } ) ;
53
+ Assert . Single ( ev . Data ) ;
54
+ Assert . Contains ( nameof ( values ) , ev . Data . Keys ) ;
55
+ Assert . Equal ( "{\" apple\" :\" test\" }" , ev . Data . GetString ( nameof ( values ) ) ) ;
56
+ }
57
+
58
+ [ Fact ]
59
+ public void CanHandleObject ( ) {
60
+ var order = new Order {
61
+ Id = "1234" ,
62
+ CardLast4 = "4444" ,
63
+ Data = new Dictionary < string , string > {
64
+ { nameof ( Order . CardLast4 ) , "5555" }
65
+ }
66
+ } ;
67
+
68
+ var ev = new Event ( ) ;
69
+ ev . SetProperty ( nameof ( order ) , order , excludedPropertyNames : new [ ] { nameof ( order . CardLast4 ) } ) ;
70
+ Assert . Single ( ev . Data ) ;
71
+
72
+ Assert . Equal ( "{\" id\" :\" 1234\" }" , ev . Data . GetString ( nameof ( order ) ) ) ;
73
+ }
74
+
75
+ [ InlineData ( "Credit*" , true ) ]
76
+ [ InlineData ( "*Number*" , true ) ]
77
+ [ InlineData ( "Credit Card" , false ) ]
78
+ [ InlineData ( "Credit Card Number" , true ) ]
79
+ [ Theory ]
80
+ public void CanCheckWildCardMatches ( string exclusion , bool isMatch ) {
81
+ const string key = "Credit Card Number" ;
82
+ Assert . True ( key . AnyWildcardMatches ( new [ ] { exclusion } ) == isMatch ) ;
83
+ }
84
+
85
+ public class Order {
86
+ public string Id { get ; set ; }
87
+ public string CardLast4 { get ; set ; }
88
+ public IDictionary < string , string > Data { get ; set ; }
89
+ }
90
+ }
91
+ }
0 commit comments