diff --git a/lib/committee/schema_validator/hyper_schema/response_validator.rb b/lib/committee/schema_validator/hyper_schema/response_validator.rb index e53678d0..3b2d583b 100644 --- a/lib/committee/schema_validator/hyper_schema/response_validator.rb +++ b/lib/committee/schema_validator/hyper_schema/response_validator.rb @@ -53,7 +53,7 @@ def call(status, headers, data) end begin - if Committee::Middleware::ResponseValidation.validate?(status, validate_success_only) + if validate?(status) if @link.is_a?(Drivers::OpenAPI2::Link) raise InvalidResponse, "Invalid response.#{@link.href} status code #{status} definition does not exist" if @validators[status].nil? if !@validators[status].validate(data) @@ -73,6 +73,19 @@ def call(status, headers, data) end end + def validate?(status) + case status + when 204 + false + when 200..299 + true + when 304 + false + else + !validate_success_only + end + end + private def response_media_type(response) diff --git a/lib/committee/schema_validator/open_api_3/response_validator.rb b/lib/committee/schema_validator/open_api_3/response_validator.rb index d5659601..c770fbdf 100644 --- a/lib/committee/schema_validator/open_api_3/response_validator.rb +++ b/lib/committee/schema_validator/open_api_3/response_validator.rb @@ -16,13 +16,26 @@ def initialize(operation_wrapper, validator_option) end def call(status, headers, response_data, strict) - return unless Committee::Middleware::ResponseValidation.validate?(status, validate_success_only) + return unless validate?(status) validator_options = { allow_empty_date_and_datetime: @allow_empty_date_and_datetime } operation_wrapper.validate_response_params(status, headers, response_data, strict, check_header, validator_options: validator_options) end + def validate?(status) + case status + when 204 + false + when 200..299 + true + when 304 + false + else + !validate_success_only + end + end + private attr_reader :operation_wrapper, :check_header