halvalla
Version:
Generate React elements with CoffeeScript functions
26 lines (20 loc) • 1.12 kB
text/coffeescript
expect = require 'expect.js'
{render,raw, script, escape, h1, input} = require '../lib/halvalla-react'
#{render} = require './helpers'
describe 'Auto escaping', ->
describe 'a script crel', ->
it "adds HTML entities for sensitive characters", ->
template = -> h1 "<script>alert('\"owned\" by c&a ©')</script>"
expect(render template).to.equal "<h1><script>alert('"owned" by c&a &copy;')</script></h1>"
it 'escapes crel attributes', ->
template = -> input name: '"pwned'
expect(render template).to.equal '<input name=""pwned"/>'
it 'escapea single quotes in crel attributes', ->
template = -> input name: "'pwned"
expect(render template).to.equal '<input name="'pwned"/>'
describe 'script crel', ->
it 'escapes /', ->
user = name: '</script><script>alert("alert");</script>'
template = ->
script "window.user = #{JSON.stringify user}"
expect(render template).to.equal '<script>window.user = {"name":"</script><script>alert(\\"alert\\");</script>"}</script>'