Sha256: 4747b4bce4a5e5c4f7fd5f9738a51fe555e4bdef19e0164b0c3b7d1ded4656cf
Contents?: true
Size: 1.15 KB
Versions: 4
Compression:
Stored size: 1.15 KB
Contents
module Rack::App::Test::Utils extend self def format_properties(properties) raise('use hash format such as params: {"key" => "value"} or headers with the same concept') unless properties.is_a?(Hash) properties[:params] ||= {} properties[:headers]||= {} properties end def rack_app_by(subject_class, constructors) app_class = subject_class.respond_to?(:call) ? subject_class : Class.new(Rack::App) constructors.each { |constructor| app_class.class_eval(&constructor) } return app_class end def env_by(properties) properties = format_properties(properties) env = properties[:headers].reduce({}) { |m, (k, v)| m.merge("HTTP_#{k.to_s.gsub('-', '_').upcase}" => v.to_s) } payload = properties.delete(:payload) env["rack.input"]= ::Rack::Lint::InputWrapper.new(string_io_for(payload)) env[::Rack::QUERY_STRING]= Rack::App::Utils.encode_www_form(properties[:params].to_a) env.merge!(properties[:env] || {}) env end def string_io_for(payload) case payload when IO payload when String StringIO.new(payload.to_s) else StringIO.new('') end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
rack-app-5.1.0 | lib/rack/app/test/utils.rb |
rack-app-5.0.0 | lib/rack/app/test/utils.rb |
rack-app-5.0.0.rc2 | lib/rack/app/test/utils.rb |
rack-app-5.0.0.rc1 | lib/rack/app/test/utils.rb |