1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
# encoding: utf-8
# frozen_string_literal: true
module Warden::Spec
module Helpers
FAILURE_APP = lambda{|_e|[401, {"Content-Type" => "text/plain"}, ["You Fail!"]] }
def env_with_params(path = "/", params = {}, env = {})
method = params.delete(:method) || "GET"
env = { 'HTTP_VERSION' => '1.1', 'REQUEST_METHOD' => "#{method}" }.merge(env)
Rack::MockRequest.env_for("#{path}?#{Rack::Utils.build_query(params)}", env)
end
def setup_rack(app = nil, opts = {}, &block)
app ||= block if block_given?
opts[:failure_app] ||= failure_app
opts[:default_strategies] ||= [:password]
opts[:default_serializers] ||= [:session]
blk = opts[:configurator] || proc{}
Rack::Builder.new do
use opts[:session] || Warden::Spec::Helpers::Session unless opts[:nil_session]
use Warden::Manager, opts, &blk
run app
end
end
def valid_response
Rack::Response.new("OK").finish
end
def failure_app
Warden::Spec::Helpers::FAILURE_APP
end
def success_app
lambda{|e| [200, {"Content-Type" => "text/plain"}, ["You Win"]]}
end
class Session
attr_accessor :app
def initialize(app,configs = {})
@app = app
end
def call(e)
e['rack.session'] ||= {}
@app.call(e)
end
end # session
end
end
|