Class: OpenapiFirst::Test::ObserverMiddleware

Inherits:
Object
  • Object
show all
Defined in:
lib/openapi_first/test/observer_middleware.rb

Overview

Middleware that observes requests and responses. This is used to trigger hooks added by OpenapiFirst::Tests.

Instance Method Summary collapse

Constructor Details

#initialize(app, options = {}) ⇒ ObserverMiddleware

Returns a new instance of ObserverMiddleware.



7
8
9
10
# File 'lib/openapi_first/test/observer_middleware.rb', line 7

def initialize(app, options = {})
  @app = app
  @definition = OpenapiFirst::Test[options.fetch(:api, :default)]
end

Instance Method Details

#call(env) ⇒ Object



12
13
14
15
16
17
18
19
20
# File 'lib/openapi_first/test/observer_middleware.rb', line 12

def call(env)
  request = Rack::Request.new(env)

  @definition.validate_request(request, raise_error: false)
  response = @app.call(env)
  status, headers, body = response
  @definition.validate_response(request, Rack::Response[status, headers, body], raise_error: false)
  response
end