Sha256: 8addadfac1aaf6b1401d9509d9d5398cdcdfc269bd25b60708fefa70f8ca3ccc

Contents?: true

Size: 1.53 KB

Versions: 53

Compression:

Stored size: 1.53 KB

Contents

require "forwardable"

module Rack
  module Test
    module Methods
      extend Forwardable

      def rack_mock_session(name = :default)
        return build_rack_mock_session unless name

        @_rack_mock_sessions ||= {}
        @_rack_mock_sessions[name] ||= build_rack_mock_session
      end

      def build_rack_mock_session
        Rack::MockSession.new(app)
      end

      def rack_test_session(name = :default)
        return build_rack_test_session(name) unless name

        @_rack_test_sessions ||= {}
        @_rack_test_sessions[name] ||= build_rack_test_session(name)
      end

      def build_rack_test_session(name)
        Rack::Test::Session.new(rack_mock_session(name))
      end

      def current_session
        rack_test_session(_current_session_names.last)
      end

      def with_session(name)
        _current_session_names.push(name)
        yield rack_test_session(name)
        _current_session_names.pop
      end

      def _current_session_names
        @_current_session_names ||= [:default]
      end

      METHODS = [
        :request,

        # HTTP verbs
        :get,
        :post,
        :put,
        :delete,
        :head,

        # Redirects
        :follow_redirect!,

        # Header-related features
        :header,
        :set_cookie,
        :clear_cookies,
        :authorize,
        :basic_authorize,
        :digest_authorize,

        # Expose the last request and response
        :last_response,
        :last_request
      ]

      def_delegators :current_session, *METHODS
    end
  end
end

Version data entries

53 entries across 53 versions & 4 rubygems

Version Path
josh-rack-test-0.4.1 lib/rack/test/methods.rb
josh-rack-test-0.4.2 lib/rack/test/methods.rb
tdreyno-middleman-0.2.4 vendor/rack-test/lib/rack/test/methods.rb
tdreyno-middleman-0.2.5 vendor/rack-test/lib/rack/test/methods.rb
tdreyno-middleman-0.2.6 vendor/rack-test/lib/rack/test/methods.rb
tdreyno-middleman-0.2.7 vendor/rack-test/lib/rack/test/methods.rb
tdreyno-middleman-0.2.8 vendor/rack-test/lib/rack/test/methods.rb
tdreyno-middleman-0.2.9 vendor/rack-test/lib/rack/test/methods.rb
tdreyno-middleman-0.3.0 vendor/rack-test/lib/rack/test/methods.rb
tdreyno-middleman-0.3.1 vendor/rack-test/lib/rack/test/methods.rb
tdreyno-middleman-0.3.10 vendor/rack-test/lib/rack/test/methods.rb
tdreyno-middleman-0.3.2 vendor/rack-test/lib/rack/test/methods.rb
tdreyno-middleman-0.3.3 vendor/rack-test/lib/rack/test/methods.rb
tdreyno-middleman-0.3.4 vendor/rack-test/lib/rack/test/methods.rb
tdreyno-middleman-0.3.7 vendor/rack-test/lib/rack/test/methods.rb
tdreyno-middleman-0.3.8 vendor/rack-test/lib/rack/test/methods.rb
tdreyno-middleman-0.4.1 vendor/rack-test/lib/rack/test/methods.rb
tdreyno-middleman-0.5.0 vendor/rack-test/lib/rack/test/methods.rb
tdreyno-middleman-0.5.2 vendor/rack-test/lib/rack/test/methods.rb
tdreyno-middleman-0.5.3 vendor/rack-test/lib/rack/test/methods.rb