Skip to content

Instantly share code, notes, and snippets.

@chuckg
Forked from kesor/rack_test_middleware.rb
Created April 9, 2013 00:14
Show Gist options
  • Save chuckg/5341802 to your computer and use it in GitHub Desktop.
Save chuckg/5341802 to your computer and use it in GitHub Desktop.
require 'rack/test'
describe SampleMiddleware do
include Rack::Test::Methods
let(:inner_app) do
lambda { |env| [200, {'Content-Type' => 'text/plain'}, ['All good!'] }
end
let(:app) { SampleMiddleware.new(inner_app) }
it "adds hello:world to session" do
get "/"
last_request.session['hello'].should == 'world'
end
it "makes no change to response status" do
get "/"
last_response.should be_ok
end
end
class SampleMiddleware
def initialize(app)
@app = app
end
def call(env)
request = Rack::Request(env)
request.session['hello'] = 'world'
@app.call(env)
end
end
class SomeMiddleware(object):
def process_request(self, request):
# alter the request in some way
return None # or return a response
def process_response(self, request, response):
# alter the response in some way
return response
class SomeMiddleware
def initialize(app)
@app = app
end
def call(env)
request = Rack::Request(env)
# alter the request in some way
response = @app.call(env)
# alter the response in some way
return response
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment