aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/test/controller/integration_test.rb
diff options
context:
space:
mode:
authorJesse Newland <jnewland@gmail.com>2008-12-17 09:21:20 -0500
committerDavid Heinemeier Hansson <david@loudthinking.com>2008-12-17 15:59:47 +0100
commit97a178bfa4d5101dca73ae931cc9c77385d8c97e (patch)
tree0b7989afbc55ccdb4654de8c6b7eeb577de4ded3 /actionpack/test/controller/integration_test.rb
parent1bcfce0130d4fa13d56f58d5cd5e0f5de33e015f (diff)
downloadrails-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/controller/integration_test.rb')
-rw-r--r--actionpack/test/controller/integration_test.rb35
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