Skip to content

Commit f050833

Browse files
committed
Merge branch 'dont-raise-errors-if-we-said-dont-raise-errors' into 'main'
Only instantiate OAuth2::Error if raise_errors option is true See merge request oauth-xx/oauth2!639
2 parents d5d10c9 + 84b0678 commit f050833

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

Diff for: lib/oauth2/client.rb

+4-2
Original file line numberDiff line numberDiff line change
@@ -140,8 +140,10 @@ def request(verb, url, opts = {}, &block)
140140
# on non-redirecting 3xx statuses, just return the response
141141
response
142142
when 400..599
143-
error = Error.new(response)
144-
raise(error) if opts.fetch(:raise_errors, options[:raise_errors])
143+
if opts.fetch(:raise_errors, options[:raise_errors])
144+
error = Error.new(response)
145+
raise(error)
146+
end
145147

146148
response
147149
else

Diff for: spec/oauth2/client_spec.rb

+8
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
stub.get('/redirect_no_loc') { |_env| [302, {'Content-Type' => 'text/plain'}, ''] }
1717
stub.post('/redirect') { |_env| [303, {'Content-Type' => 'text/plain', 'location' => '/reflect'}, ''] }
1818
stub.get('/error') { |_env| [500, {'Content-Type' => 'text/plain'}, 'unknown error'] }
19+
stub.get('/unparsable_error') { |_env| [500, {'Content-Type' => 'application/json'}, 'unknown error'] }
1920
stub.get('/empty_get') { |_env| [204, {}, nil] }
2021
stub.get('/different_encoding') { |_env| [500, {'Content-Type' => 'application/json'}, NKF.nkf('-We', JSON.dump(error: error_value, error_description: '∞'))] }
2122
stub.get('/ascii_8bit_encoding') { |_env| [500, {'Content-Type' => 'application/json'}, JSON.dump(error: 'invalid_request', error_description: 'é').force_encoding('ASCII-8BIT')] }
@@ -95,6 +96,13 @@
9596
described_class.new 'abc', 'def', opts
9697
expect(opts).to eq(opts2)
9798
end
99+
100+
it 'raises exception if JSON is expected, but server returns invalid JSON' do
101+
client = instance
102+
expect { client.request(:get, '/unparsable_error') }.to raise_error(JSON::ParserError)
103+
response = client.request(:get, '/unparsable_error', raise_errors: false)
104+
expect(response.status).to eq(500)
105+
end
98106
end
99107

100108
describe '#site=(val)' do

0 commit comments

Comments
 (0)