Skip to content

Commit 8061e73

Browse files
committed
Don't raise UnknownQueryParameterError if request is ignored in testing
1 parent 6737373 commit 8061e73

3 files changed

Lines changed: 23 additions & 9 deletions

File tree

lib/openapi_first/test.rb

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -106,9 +106,12 @@ def self.install
106106
OpenapiFirst.configure do |config|
107107
@after_request_validation = config.after_request_validation do |validated_request, oad|
108108
next unless registered?(oad)
109-
raise validated_request.error.exception if raise_request_error?(validated_request)
110109

111-
check_unknown_query_parameters(validated_request)
110+
if configuration.raise_request_error?(validated_request)
111+
raise validated_request.error.exception if validated_request.unknown?
112+
113+
check_unknown_query_parameters(validated_request)
114+
end
112115

113116
Coverage.track_request(validated_request, oad)
114117
end
@@ -152,12 +155,6 @@ def unknown_parameters_message(unknown_parameters, validated_request)
152155
"Unknown query parameter#{s} #{list} for #{validated_request.fullpath}"
153156
end
154157

155-
def raise_request_error?(validated_request)
156-
return false if validated_request.valid?
157-
158-
configuration.raise_request_error?(validated_request)
159-
end
160-
161158
def many?(array) = array.length > 1
162159

163160
def raise_response_error?(validated_response, rack_request)

lib/openapi_first/test/configuration.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ def raise_request_error?(validated_request)
8888
return false if @ignore_request_error&.call(validated_request)
8989
return false if ignore_unknown_requests? && validated_request.unknown?
9090

91-
validated_request.unknown?
91+
true
9292
end
9393

9494
def raise_response_error?(validated_response, rack_request)

spec/test_spec.rb

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -694,6 +694,23 @@ def call(_env)
694694
app.call(Rack::MockRequest.env_for('/unknown?unknown=12'))
695695
end.to raise_error OpenapiFirst::NotFoundError
696696
end
697+
698+
context 'when request is ignored' do
699+
before(:each) do
700+
described_class.uninstall
701+
described_class.setup do |test|
702+
test.register(definition)
703+
test.report_coverage = false
704+
test.ignore_request_error { |req| req.path == '/stuff' }
705+
end
706+
end
707+
708+
it 'raises no error' do
709+
expect do
710+
app.call(Rack::MockRequest.env_for('/stuff?color=red&unknown=12'))
711+
end.not_to raise_error
712+
end
713+
end
697714
end
698715

699716
describe 'handling invalid responses' do

0 commit comments

Comments
 (0)