aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/test/new_base/metal_test.rb
diff options
context:
space:
mode:
Diffstat (limited to 'actionpack/test/new_base/metal_test.rb')
-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
+