Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
114 lines (93 sloc) 2.36 KB
require File.expand_path("../test_helper", __FILE__)
class IFrameController < ActionController::Base
def normal
render :update do |page|
page.alert "foo"
end
end
def aliased
respond_to_parent do
render :text => 'woot'
end
end
def redirect
responds_to_parent do
redirect_to '/another/place'
end
end
def no_block
responds_to_parent
end
def empty_render
responds_to_parent do
end
render :text => ''
end
def quotes
responds_to_parent do
render :text => %(single' double" qs\\' qd\\" escaped\\\' doubleescaped\\\\')
end
end
def newlines
responds_to_parent do
render :text => "line1\nline2\\nline2"
end
end
def update
responds_to_parent do
render :update do |page|
page.alert 'foo'
page.alert 'bar'
end
end
end
def rescue_action(e)
raise e
end
end
class RespondsToParentTest < ActionController::TestCase
def setup
@controller = IFrameController.new
@request = ActionController::TestRequest.new
@response = ActionController::TestResponse.new
end
def test_normal
get :normal
assert_match /alert\("foo"\)/, @response.body
assert_no_match /window\.parent/, @response.body
end
def test_quotes_should_be_escaped
render :quotes
assert_match %r{eval\('single\\' double\\" qs\\\\\\' qd\\\\\\" escaped\\\\\\' doubleescaped\\\\\\\\\\'}, @response.body
end
def test_newlines_should_be_escaped
render :newlines
assert_match %r{eval\('line1\\nline2\\\\nline2'\)}, @response.body
end
def test_no_block_should_raise
assert_raises LocalJumpError do
get :no_block
end
end
def test_empty_render_should_not_expand_javascript
get :empty_render
assert_equal '', @response.body
end
def test_update_should_perform_combined_rjs
render :update
assert_match /alert\(\\"foo\\"\);\\nalert\(\\"bar\\"\)/, @response.body
end
def test_aliased_method_should_not_raise
assert_nothing_raised do
render :aliased
assert_match /eval\('woot'\)/, @response.body
end
end
protected
def render(action)
get action
assert_match /<script type='text\/javascript'/, @response.body
assert_match /with\(window\.parent\)/, @response.body
assert_match /loc\.replace\('about:blank'\)/, @response.body
end
end