lib/fakeit/validation/validator.rb in fakeit-0.1.1 vs lib/fakeit/validation/validator.rb in fakeit-0.1.2
- old
+ new
@@ -5,15 +5,36 @@
@operation = operation
end
def validate(body: '', params: {}, headers: {})
options = OpenAPIParser::SchemaValidator::Options.new(coerce_value: true)
+ body_data = parse(body)
- @operation.validate_request_body('application/json', JSON.parse(body)) unless body.empty?
+ @operation.validate_request_body(request_content_type, body_data) if need_validate?(body_data)
@operation.validate_path_params(options)
@operation.validate_request_parameter(params, headers, options)
rescue StandardError => e
raise ValidationError, e.message
+ end
+
+ private
+
+ def need_validate?(body_data)
+ request_content_type && body_data
+ end
+
+ def parse(body)
+ JSON.parse(body)
+ rescue StandardError
+ nil
+ end
+
+ def request_content_type
+ request_body&.content&.find { |k, _| k =~ %r{^application/.*json} }&.first
+ end
+
+ def request_body
+ @operation.operation_object.request_body
end
end
end
end