test/spec_showexceptions.rb in rack-1.5.5 vs test/spec_showexceptions.rb in rack-1.6.0.beta
- old
+ new
@@ -14,61 +14,54 @@
show_exceptions(
lambda{|env| raise RuntimeError }
))
lambda{
- res = req.get("/")
+ res = req.get("/", "HTTP_ACCEPT" => "text/html")
}.should.not.raise
res.should.be.a.server_error
res.status.should.equal 500
res.should =~ /RuntimeError/
res.should =~ /ShowExceptions/
end
- it "responds with plain text on AJAX requests accepting anything but HTML" do
+ it "responds with HTML only to requests accepting HTML" do
res = nil
req = Rack::MockRequest.new(
show_exceptions(
lambda{|env| raise RuntimeError, "It was never supposed to work" }
))
- lambda{
- res = req.get("/", "HTTP_X_REQUESTED_WITH" => "XMLHttpRequest")
- }.should.not.raise
+ [
+ # Serve text/html when the client accepts text/html
+ ["text/html", ["/", {"HTTP_ACCEPT" => "text/html"}]],
+ ["text/html", ["/", {"HTTP_ACCEPT" => "*/*"}]],
+ # Serve text/plain when the client does not accept text/html
+ ["text/plain", ["/"]],
+ ["text/plain", ["/", {"HTTP_ACCEPT" => "application/json"}]]
+ ].each do |exmime, rargs|
+ lambda{
+ res = req.get(*rargs)
+ }.should.not.raise
- res.should.be.a.server_error
- res.status.should.equal 500
+ res.should.be.a.server_error
+ res.status.should.equal 500
- res.content_type.should.equal "text/plain"
+ res.content_type.should.equal exmime
- res.body.should.include "RuntimeError: It was never supposed to work\n"
- res.body.should.include __FILE__
- end
+ res.body.should.include "RuntimeError"
+ res.body.should.include "It was never supposed to work"
- it "responds with HTML on AJAX requests accepting HTML" do
- res = nil
-
- req = Rack::MockRequest.new(
- show_exceptions(
- lambda{|env| raise RuntimeError, "It was never supposed to work" }
- ))
-
- lambda{
- res = req.get("/", "HTTP_X_REQUESTED_WITH" => "XMLHttpRequest", "HTTP_ACCEPT" => "text/html")
- }.should.not.raise
-
- res.should.be.a.server_error
- res.status.should.equal 500
-
- res.content_type.should.equal "text/html"
-
- res.body.should.include "RuntimeError"
- res.body.should.include "It was never supposed to work"
- res.body.should.include Rack::Utils.escape_html(__FILE__)
+ if exmime == "text/html"
+ res.body.should.include '</html>'
+ else
+ res.body.should.not.include '</html>'
+ end
+ end
end
it "handles exceptions without a backtrace" do
res = nil
@@ -77,10 +70,10 @@
lambda{|env| raise RuntimeError, "", [] }
)
)
lambda{
- res = req.get("/")
+ res = req.get("/", "HTTP_ACCEPT" => "text/html")
}.should.not.raise
res.should.be.a.server_error
res.status.should.equal 500