From 6fa44b1db4bde7f754d08e90ce668579fbd71065 Mon Sep 17 00:00:00 2001 From: Michael Scrivo Date: Thu, 29 Jun 2023 10:06:18 -0400 Subject: [PATCH] Add spec to demonstrate usage --- .../exceptions/body_parse_errors_spec.rb | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/spec/grape/exceptions/body_parse_errors_spec.rb b/spec/grape/exceptions/body_parse_errors_spec.rb index 285f3e81bf..7017400f6e 100644 --- a/spec/grape/exceptions/body_parse_errors_spec.rb +++ b/spec/grape/exceptions/body_parse_errors_spec.rb @@ -91,6 +91,46 @@ def app end end + context 'api with rescue_from :grape_exceptions handler with block' do + subject { Class.new(Grape::API) } + + before do + subject.rescue_from :grape_exceptions do |e| + rack_response "Custom Error Contents, Original Message: #{e.message}", 400 + end + + subject.params do + requires :beer + end + + subject.post '/beer' do + 'beer received' + end + end + + def app + subject + end + + context 'with content_type json' do + it 'returns body parsing error message' do + post '/beer', 'test', 'CONTENT_TYPE' => 'application/json' + expect(last_response.status).to eq 400 + expect(last_response.body).to include 'message body does not match declared format' + expect(last_response.body).to include 'Custom Error Contents, Original Message' + end + end + + context 'with content_type xml' do + it 'returns body parsing error message' do + post '/beer', 'test', 'CONTENT_TYPE' => 'application/xml' + expect(last_response.status).to eq 400 + expect(last_response.body).to include 'message body does not match declared format' + expect(last_response.body).to include 'Custom Error Contents, Original Message' + end + end + end + context 'api without a rescue handler' do subject { Class.new(Grape::API) }