diff options
author | Jesse Newland <jnewland@gmail.com> | 2008-12-17 09:21:20 -0500 |
---|---|---|
committer | David Heinemeier Hansson <david@loudthinking.com> | 2008-12-17 15:59:47 +0100 |
commit | 97a178bfa4d5101dca73ae931cc9c77385d8c97e (patch) | |
tree | 0b7989afbc55ccdb4654de8c6b7eeb577de4ded3 /actionpack/test | |
parent | 1bcfce0130d4fa13d56f58d5cd5e0f5de33e015f (diff) | |
download | rails-97a178bfa4d5101dca73ae931cc9c77385d8c97e.tar.gz rails-97a178bfa4d5101dca73ae931cc9c77385d8c97e.tar.bz2 rails-97a178bfa4d5101dca73ae931cc9c77385d8c97e.zip |
Decorate responses from Rack Middleware and Rails Metal for the purposes of integration testing. A test for the following Metal:
class Poller < Rails::Rack::Metal
def call(env)
if env["PATH_INFO"] =~ /^\/poller/
[200, {"Content-Type" => "text/plain"}, "Hello World!"]
else
super
end
end
end
might be tested like so:
class PollerTest < ActionController::IntegrationTest
test "poller returns hello world" do
get "/poller"
assert_response 200
assert_response :success
assert_response :ok
assert_equal "Hello World!", response.body
end
end
[#1588 state:committed]
Signed-off-by: David Heinemeier Hansson <david@loudthinking.com>
Diffstat (limited to 'actionpack/test')
-rw-r--r-- | actionpack/test/controller/integration_test.rb | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/actionpack/test/controller/integration_test.rb b/actionpack/test/controller/integration_test.rb index fd985a9a46..90afbfb9bc 100644 --- a/actionpack/test/controller/integration_test.rb +++ b/actionpack/test/controller/integration_test.rb @@ -373,4 +373,39 @@ class IntegrationProcessTest < ActionController::IntegrationTest end end +class MetalTest < ActionController::IntegrationTest + require(File.dirname(__FILE__) + "/../../../railties/lib/rails/rack/metal.rb") + + class Poller < ::Rails::Rack::Metal + def call(env) + if env["PATH_INFO"] =~ /^\/success/ + [200, {"Content-Type" => "text/plain"}, "Hello World!"] + elsif env["PATH_INFO"] =~ /^\/failure/ + [404, {"Content-Type" => "text/plain"}, ''] + else + super + end + end + end + + def setup + @integration_session = ActionController::Integration::Session.new(Poller) + end + + def test_successful_get + get "/success" + assert_response 200 + assert_response :success + assert_response :ok + assert_equal "Hello World!", response.body + end + + def test_failed_get + get "/failure" + assert_response 404 + assert_response :not_found + assert_equal '', response.body + end +end + end |