Sha256: 12af9a843c8511910691e92ef7a4207363b091795cd6d81b041a24d43fbd9e8a

Contents?: true

Size: 1002 Bytes

Versions: 1

Compression:

Stored size: 1002 Bytes

Contents

module RailsTwirp
  class IntegrationTest < ActiveSupport::TestCase
    attr_reader :response, :request, :controller

    def initialize(name)
      super
      reset!
      @before_rpc = []
    end

    def reset!
      @request = nil
      @response = nil
    end

    def before_rpc(&block)
      @before_rpc << block
    end

    def rpc(service, rpc, request, headers: nil)
      @request = request
      service = app.twirp.routes.services[service].to_service

      rack_env = {}
      http_request = ActionDispatch::Request.new(rack_env)
      http_request.headers.merge! headers if headers.present?
      env = {rack_env: rack_env}

      @before_rpc.each do |hook|
        hook.call(env)
      end

      response = begin
        service.call_rpc rpc, request, env
      rescue => e
        Twirp::Error.internal_with(e)
      end

      @response = response
      @controller = http_request.controller_instance
      response
    end

    def app
      RailsTwirp.test_app
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rails_twirp-0.3.0 lib/rails_twirp/testing/integration_test.rb