Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@

## Unreleased

## 2.9.1

- Fix OpenapiFirst::Test's request validation to not always raise an error, but only for unknown requests

## 2.9.0

- OpenapiFirst::Test now raises an error for unknown requests. You can deactivate with:
Expand Down
2 changes: 1 addition & 1 deletion Gemfile.lock
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
PATH
remote: .
specs:
openapi_first (2.9.0)
openapi_first (2.9.1)
hana (~> 1.3)
json_schemer (>= 2.1, < 3.0)
openapi_parameters (>= 0.5.1, < 2.0)
Expand Down
2 changes: 1 addition & 1 deletion benchmarks/Gemfile.lock
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
PATH
remote: ..
specs:
openapi_first (2.9.0)
openapi_first (2.9.1)
hana (~> 1.3)
json_schemer (>= 2.1, < 3.0)
openapi_parameters (>= 0.5.1, < 2.0)
Expand Down
2 changes: 1 addition & 1 deletion lib/openapi_first/test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ def self.install

def self.raise_request_error?(validated_request)
return false if validated_request.valid?
return true if validated_request.known?
return false if validated_request.known?

!configuration.ignore_unknown_requests
end
Expand Down
2 changes: 1 addition & 1 deletion lib/openapi_first/version.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# frozen_string_literal: true

module OpenapiFirst
VERSION = '2.9.0'
VERSION = '2.9.1'
end
52 changes: 52 additions & 0 deletions spec/test_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -411,6 +411,58 @@ def call(_env)
end
end

describe 'handling invalid requests' do
let(:definition) do
OpenapiFirst.parse(
{
'openapi' => '3.1.0',
'paths' => {
'/stuff/{id}' => {
'get' => {
'parameters' => [
{
'name' => 'id',
'in' => 'path',
'required' => true,
'schema' => {
'type' => 'integer'
}
}
],
'responses' => {
'200' => {
'descrition' => 'Ok'
}
}
}
}
}
},
filepath: 'somefile'
)
end

let(:app) do
described_class.app(
->(_env) { [200, { 'content-type' => 'application/json' }, ['foo']] },
spec: definition
)
end

before(:each) do
described_class.setup do |test|
test.register(definition)
test.report_coverage = false
end
end

it 'raises no error, but tracks the request' do
app.call(Rack::MockRequest.env_for('/stuff/nostring'))

expect(described_class::Coverage.result.coverage).to eq 50
end
end

describe 'handling unknown requests paths' do
let(:app) do
described_class.app(
Expand Down