aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/test
diff options
context:
space:
mode:
authorYehuda Katz + Carl Lerche <ykatz+clerche@engineyard.com>2009-08-25 12:14:31 -0700
committerYehuda Katz + Carl Lerche <ykatz+clerche@engineyard.com>2009-08-25 12:14:31 -0700
commitc7ba911a43e513bd1adbee93f16d2b8efea7cc88 (patch)
tree0a3f88da172575fb9d85980975cbbe41ed6bd53c /actionpack/test
parent09fde6440a729e169e51c04f7caf0d19fe949c1d (diff)
downloadrails-c7ba911a43e513bd1adbee93f16d2b8efea7cc88.tar.gz
rails-c7ba911a43e513bd1adbee93f16d2b8efea7cc88.tar.bz2
rails-c7ba911a43e513bd1adbee93f16d2b8efea7cc88.zip
ActionController::Metal can be a middleware
Diffstat (limited to 'actionpack/test')
-rw-r--r--actionpack/test/new_base/metal_test.rb45
1 files changed, 45 insertions, 0 deletions
diff --git a/actionpack/test/new_base/metal_test.rb b/actionpack/test/new_base/metal_test.rb
new file mode 100644
index 0000000000..c7c45b5cc9
--- /dev/null
+++ b/actionpack/test/new_base/metal_test.rb
@@ -0,0 +1,45 @@
+require File.join(File.expand_path(File.dirname(__FILE__)), "test_helper")
+
+module MetalTest
+ class MetalMiddleware < ActionController::Metal
+ def index
+ if env["PATH_INFO"] =~ /authed/
+ self.response = app.call(env)
+ else
+ self.response_body = "Not authed!"
+ self.status = 401
+ end
+ end
+ end
+
+ class Endpoint
+ def call(env)
+ [200, {}, "Hello World"]
+ end
+ end
+
+ class TestMiddleware < ActiveSupport::TestCase
+ def setup
+ @app = Rack::Builder.new do
+ use MetalMiddleware.middleware(:index)
+ run Endpoint.new
+ end.to_app
+ end
+
+ test "it can call the next app by using @app" do
+ env = Rack::MockRequest.env_for("/authed")
+ response = @app.call(env)
+
+ assert_equal "Hello World", response[2]
+ end
+
+ test "it can return a response using the normal AC::Metal techniques" do
+ env = Rack::MockRequest.env_for("/")
+ response = @app.call(env)
+
+ assert_equal "Not authed!", response[2]
+ assert_equal 401, response[0]
+ end
+ end
+end
+