Sha256: 559cb8ce156492559c6d2763177500fa36392adef853127f10bf8b889f89ba99

Contents?: true

Size: 1.61 KB

Versions: 2

Compression:

Stored size: 1.61 KB

Contents

begin
  require "active_support/secure_random"
rescue LoadError
  # ActiveSupport::SecureRandom not provided in activesupport >= 3.2
end
require "webmock"
require "rack/oauth2"

module RspecApiDocumentation
  class OAuth2MACClient < ClientBase
    include WebMock::API
    attr_accessor :last_response, :last_request
    private :last_response, :last_request

    def request_headers
      env_to_headers(last_request.env)
    end

    def response_headers
      last_response.headers
    end

    def query_string
      last_request.env["QUERY_STRING"]
    end

    def status
      last_response.status
    end

    def response_body
      last_response.body
    end

    def request_content_type
      last_request.content_type
    end

    def response_content_type
      last_response.content_type
    end

    protected

    def do_request(method, path, params, request_headers)
      self.last_response = access_token.send(method, "http://example.com#{path}", :body => params, :header => headers(method, path, params, request_headers))
    end

    class ProxyApp < Struct.new(:client, :app)
      def call(env)
        client.last_request = Struct.new(:env, :content_type).new(env, env["CONTENT_TYPE"])
        app.call(env.merge("SCRIPT_NAME" => ""))
      end
    end

    def access_token
      @access_token ||= begin
                          app = ProxyApp.new(self, context.app)
                          stub_request(:any, %r{http://example\.com}).to_rack(app)
                          Rack::OAuth2::Client.new(options.merge(:host => "example.com", :scheme => "http")).access_token!
                        end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rspec_api_documentation-0.8.0 lib/rspec_api_documentation/oauth2_mac_client.rb
rspec_api_documentation-0.7.1 lib/rspec_api_documentation/oauth2_mac_client.rb