require File.dirname(__FILE__) + '/../../../../config/environment' require 'test/unit' require 'test_help' 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 < Test::Unit::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 /