@@ -12,6 +12,18 @@ final class TagTests: XCTestCase {
1212 try XCTAssertEqual ( render ( template, [ " name " : " <h1>Alex</h1> \" \' " ] ) , expected)
1313 }
1414
15+ func testOtherThingsWithHTMLEntities( ) throws {
16+ try XCTAssertEqual ( render ( " #(foo) " , [ " foo " : . data( Data ( [ 0x3c , 0x3e , 0xc3 , 0xff ] ) ) ] ) , " " )
17+ try XCTAssertEqual ( render ( " #(foo) " , [ " foo " : . data( Data ( [ 0x3c , 0x3e , 0xc3 , 0xb7 ] ) ) ] ) , " <>÷ " )
18+ try XCTAssertEqual ( render ( " #(foo) " , [ " foo " : [ " <img src=x onerror=alert(1337)> " ] ] ) , " ["<img src=x onerror=alert(1337)>"] " )
19+ try XCTAssertEqual ( render ( " #(foo) " , [ " foo " : [ " <img src=x onerror=alert(1337)> " : " <img src=x onerror=alert(1337)> " ] ] ) , " [<img src=x onerror=alert(1337)>: "<img src=x onerror=alert(1337)>"] " )
20+
21+ try XCTAssertThrowsError ( render ( " #unsafeHTML(foo) " , [ " foo " : . data( Data ( [ 0x3c , 0x3e , 0xc3 , 0xff ] ) ) ] ) )
22+ try XCTAssertEqual ( render ( " #unsafeHTML(foo) " , [ " foo " : . data( Data ( [ 0x3c , 0x3e , 0xc3 , 0xb7 ] ) ) ] ) , " <>÷ " )
23+ try XCTAssertThrowsError ( render ( " #unsafeHTML(foo) " , [ " foo " : [ " <img src=x onerror=alert(1337)> " ] ] ) )
24+ try XCTAssertThrowsError ( render ( " #unsafeHTML(foo) " , [ " foo " : [ " <img src=x onerror=alert(1337)> " : " <img src=x onerror=alert(1337)> " ] ] ) )
25+ }
26+
1527 func testUnsafeTag( ) throws {
1628 let template = """
1729 #unsafeHTML(name)
@@ -255,7 +267,7 @@ final class TagTests: XCTestCase {
255267 """
256268
257269 let expected = """
258- dumpContext should output debug description [value: " 12345 " ]
270+ dumpContext should output debug description [value: " 12345" ]
259271 """
260272
261273 try XCTAssertEqual ( render ( template, data) , expected)
0 commit comments