@@ -45,6 +45,65 @@ def test_github_specific_protocols_are_not_removed
45
45
assert_equal stuff , SanitizationFilter . call ( stuff ) . to_s
46
46
end
47
47
48
+ def test_unknown_schemes_are_removed
49
+ stuff = '<a href="something-weird://heyyy">Wat</a> is this'
50
+ html = SanitizationFilter . call ( stuff ) . to_s
51
+ assert_equal '<a>Wat</a> is this' , html
52
+ end
53
+
54
+ def test_standard_schemes_are_removed_if_not_specified_in_anchor_schemes
55
+ stuff = '<a href="http://www.example.com/">No href for you</a>'
56
+ filter = SanitizationFilter . new ( stuff , { :anchor_schemes => [ ] } )
57
+ html = filter . call . to_s
58
+ assert_equal '<a>No href for you</a>' , html
59
+ end
60
+
61
+ def test_custom_anchor_schemes_are_not_removed
62
+ stuff = '<a href="something-weird://heyyy">Wat</a> is this'
63
+ filter = SanitizationFilter . new ( stuff , { :anchor_schemes => [ 'something-weird' ] } )
64
+ html = filter . call . to_s
65
+ assert_equal stuff , html
66
+ end
67
+
68
+ def test_anchor_schemes_are_merged_with_other_anchor_restrictions
69
+ stuff = '<a href="something-weird://heyyy" ping="more-weird://hiii">Wat</a> is this'
70
+ whitelist = {
71
+ :elements => [ 'a' ] ,
72
+ :attributes => { 'a' => [ 'href' , 'ping' ] } ,
73
+ :protocols => { 'a' => { 'ping' => [ 'http' ] } }
74
+ }
75
+ filter = SanitizationFilter . new ( stuff , { :whitelist => whitelist , :anchor_schemes => [ 'something-weird' ] } )
76
+ html = filter . call . to_s
77
+ assert_equal '<a href="something-weird://heyyy">Wat</a> is this' , html
78
+ end
79
+
80
+ def test_uses_anchor_schemes_from_whitelist_when_not_separately_specified
81
+ stuff = '<a href="something-weird://heyyy">Wat</a> is this'
82
+ whitelist = {
83
+ :elements => [ 'a' ] ,
84
+ :attributes => { 'a' => [ 'href' ] } ,
85
+ :protocols => { 'a' => { 'href' => [ 'something-weird' ] } }
86
+ }
87
+ filter = SanitizationFilter . new ( stuff , { :whitelist => whitelist } )
88
+ html = filter . call . to_s
89
+ assert_equal stuff , html
90
+ end
91
+
92
+ def test_whitelist_contains_default_anchor_schemes
93
+ assert_equal SanitizationFilter ::WHITELIST [ :protocols ] [ 'a' ] [ 'href' ] , [ 'http' , 'https' , 'mailto' , :relative , 'github-windows' , 'github-mac' ]
94
+ end
95
+
96
+ def test_whitelist_from_full_constant
97
+ stuff = '<a href="something-weird://heyyy" ping="more-weird://hiii">Wat</a> is this'
98
+ filter = SanitizationFilter . new ( stuff , :whitelist => SanitizationFilter ::FULL )
99
+ html = filter . call . to_s
100
+ assert_equal 'Wat is this' , html
101
+ end
102
+
103
+ def test_exports_default_anchor_schemes
104
+ assert_equal SanitizationFilter ::ANCHOR_SCHEMES , [ 'http' , 'https' , 'mailto' , :relative , 'github-windows' , 'github-mac' ]
105
+ end
106
+
48
107
def test_script_contents_are_removed
49
108
orig = '<script>JavaScript!</script>'
50
109
assert_equal "" , SanitizationFilter . call ( orig ) . to_s
0 commit comments