Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Unit test showing escape_javascript is being called on request.url

  • Loading branch information...
commit 1cb526772189737dca137c86e7f2a2820730a23b 1 parent ca1f4bd
@jyurek jyurek authored
View
4 lib/templates/javascript_notifier.erb
@@ -2,7 +2,7 @@
var notifierJsScheme = (("https:" == document.location.protocol) ? "https://" : "http://");
document.write(unescape("%3Cscript src='" + notifierJsScheme + "#{host}/javascripts/notifier.js' type='text/javascript'%3E%3C/script%3E"));
}
--%>
+%>
<%= javascript_tag %Q{
Hoptoad.setKey('#{api_key}');
@@ -10,4 +10,4 @@
Hoptoad.setEnvironment('#{environment}');
Hoptoad.setErrorDefaults({ url: "#{escape_javascript url}", component: "#{controller_name}", action: "#{action_name}" });
}
--%>
+%>
View
52 test/javascript_notifier_test.rb
@@ -0,0 +1,52 @@
+require File.dirname(__FILE__) + '/helper'
+require 'hoptoad_notifier/rails/javascript_notifier'
+require 'ostruct'
+
+class JavascriptNotifierTest < Test::Unit::TestCase
+ module FakeRenderer
+ def javascript_tag(text)
+ "<script>#{text}</script>"
+ end
+ def escape_javascript(text)
+ "ESC#{text}ESC"
+ end
+ end
+
+ class FakeController
+ def self.helper_method(*args)
+ end
+
+ include HoptoadNotifier::Rails::JavascriptNotifier
+
+ def action_name
+ "action"
+ end
+
+ def controller_name
+ "controller"
+ end
+
+ def request
+ @request ||= OpenStruct.new
+ end
+
+ def render_to_string(options)
+ context = OpenStruct.new(options[:locals])
+ context.extend(FakeRenderer)
+ context.instance_eval do
+ erb = ERB.new(IO.read(options[:file]))
+ erb.result(binding)
+ end
+ end
+ end
+
+ should "make sure escape_javacript is called on the request.url" do
+ HoptoadNotifier.configure do
+ end
+ controller = FakeController.new
+ controller.request.url = "bad_javascript"
+ assert controller.send(:hoptoad_javascript_notifier)['"ESCbad_javascriptESC"']
+ assert ! controller.send(:hoptoad_javascript_notifier)['"bad_javascript"']
+ end
+end
+
Please sign in to comment.
Something went wrong with that request. Please try again.