Module: OpenapiRspec

Extended by:
Dry::Configurable
Defined in:
lib/openapi_rspec.rb,
lib/openapi_rspec/helpers.rb,
lib/openapi_rspec/version.rb,
lib/openapi_rspec/matchers.rb,
lib/openapi_rspec/module_helpers.rb,
lib/openapi_rspec/request_validator.rb,
lib/openapi_rspec/documentation_validator.rb

Defined Under Namespace

Modules: Helpers, Matchers, ModuleHelpers Classes: DocumentationValidator, RequestValidator

Constant Summary collapse

VERSION =
"0.3"

Class Method Summary collapse

Class Method Details

.api(doc, build: false, **params) ⇒ Object



16
17
18
19
# File 'lib/openapi_rspec.rb', line 16

def self.api(doc, build: false, **params)
  doc = OpenapiBuilder.call(doc).data if build
  OpenapiValidator.call(doc, **params)
end

.api_by_path(openapi_path, **params) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/openapi_rspec.rb', line 21

def self.api_by_path(openapi_path, **params)
  session = Rack::Test::Session.new(config.app)
  begin
    response = session.get(openapi_path)
  rescue StandardError => e
    raise "Unable to perform GET request for swagger json: #{openapi_path} - #{e}."
  end

  parsed_doc = case openapi_path.split(".").last
               when "yml", "yaml"
                 YAML.load(response.body)
               when "json"
                 JSON.parse(response.body)
               else
                 raise "Unable to parse OpenAPI doc, '#{openapi_path}' is undefined format"
               end
  OpenapiValidator.call(parsed_doc, **params)
end