Codebase list ruby-omniauth-facebook / e14be7c
use custom error class vs. regexp on string. use less terse fail names Mark Dodwell 10 years ago
2 changed file(s) with 7 addition(s) and 10 deletion(s). Raw diff Collapse all Expand all
66 module Strategies
77 class Facebook < OmniAuth::Strategies::OAuth2
88 class NoAuthorizationCodeError < StandardError; end
9 class UnknownSignatureAlgorithmError < NotImplementedError; end
910
1011 DEFAULT_SCOPE = 'email'
1112
8283 def callback_phase
8384 super
8485 rescue NoAuthorizationCodeError => e
85 fail!(:no_authz_code, e)
86 rescue NotImplementedError => e
87 if e.message =~ /unknown algorithm/i
88 fail!(:algo_not_impl, e)
89 else
90 raise e
91 end
86 fail!(:no_authorization_code, e)
87 rescue UnknownSignatureAlgorithmError => e
88 fail!(:unknown_signature_algoruthm, e)
9289 end
9390
9491 def request_phase
212209 decoded_payload = MultiJson.decode(base64_decode_url(encoded_payload))
213210
214211 unless decoded_payload['algorithm'] == 'HMAC-SHA256'
215 raise NotImplementedError, "unknown algorithm: #{decoded_payload['algorithm']}"
212 raise UnknownSignatureAlgorithmError, "unknown algorithm: #{decoded_payload['algorithm']}"
216213 end
217214
218215 if valid_signature?(client.secret, decoded_hex_signature, encoded_payload)
425425
426426 test 'throws an error if the algorithm is unknown' do
427427 setup('UNKNOWN-ALGO')
428 assert_equal "unknown algorithm: UNKNOWN-ALGO", assert_raises(NotImplementedError) { strategy.send(:signed_request) }.message
428 assert_equal "unknown algorithm: UNKNOWN-ALGO", assert_raises(OmniAuth::Strategies::Facebook::UnknownSignatureAlgorithmError) { strategy.send(:signed_request) }.message
429429 end
430430 end
431431
448448
449449 test 'throws an error if the algorithm is unknown' do
450450 setup('UNKNOWN-ALGO')
451 assert_equal "unknown algorithm: UNKNOWN-ALGO", assert_raises(NotImplementedError) { strategy.send(:signed_request) }.message
451 assert_equal "unknown algorithm: UNKNOWN-ALGO", assert_raises(OmniAuth::Strategies::Facebook::UnknownSignatureAlgorithmError) { strategy.send(:signed_request) }.message
452452 end
453453 end
454454