Codebase list ruby-omniauth-facebook / bd3fad9
Replace MultiJson.decode with JSON.parse in tests (Closes: #1031472) Pirate Praveen 1 year, 28 days ago
2 changed file(s) with 84 addition(s) and 0 deletion(s). Raw diff Collapse all Expand all
0 From ce3fce2bc463aab8330f922d9246ff5904c8a3ae Mon Sep 17 00:00:00 2001
1 From: Benjamin Klotz <benny.klotz92@gmail.com>
2 Date: Fri, 17 Feb 2023 04:21:28 +0100
3 Subject: [PATCH] Remove duplicated script_name in callback_url (#380)
4
5 * Remove duplicated script_name in callback_url
6
7 * Fix mocha setup, remove MultiJson usage, adapt test to test for duplicate script_name issue
8 ---
9 lib/omniauth/facebook/signed_request.rb | 2 +-
10 lib/omniauth/strategies/facebook.rb | 2 +-
11 test/helper.rb | 2 +-
12 test/signed_request_test.rb | 2 +-
13 test/strategy_test.rb | 7 ++++---
14 5 files changed, 8 insertions(+), 7 deletions(-)
15
16 --- a/lib/omniauth/facebook/signed_request.rb
17 +++ b/lib/omniauth/facebook/signed_request.rb
18 @@ -28,7 +28,7 @@
19 return if signature.nil?
20
21 decoded_hex_signature = base64_decode_url(signature)
22 - decoded_payload = MultiJson.decode(base64_decode_url(encoded_payload))
23 + decoded_payload = JSON.parse(base64_decode_url(encoded_payload))
24
25 unless decoded_payload['algorithm'] == SUPPORTED_ALGORITHM
26 raise UnknownSignatureAlgorithmError, "unknown algorithm: #{decoded_payload['algorithm']}"
27 --- a/lib/omniauth/strategies/facebook.rb
28 +++ b/lib/omniauth/strategies/facebook.rb
29 @@ -80,7 +80,7 @@
30 ''
31 else
32 # Fixes regression in omniauth-oauth2 v1.4.0 by https://github.com/intridea/omniauth-oauth2/commit/85fdbe117c2a4400d001a6368cc359d88f40abc7
33 - options[:callback_url] || (full_host + script_name + callback_path)
34 + options[:callback_url] || (full_host + callback_path)
35 end
36 end
37
38 --- a/test/helper.rb
39 +++ b/test/helper.rb
40 @@ -1,5 +1,5 @@
41 require 'minitest/autorun'
42 -require 'mocha/setup'
43 +require 'mocha/minitest'
44 require 'omniauth/strategies/facebook'
45
46 OmniAuth.config.test_mode = true
47 --- a/test/signed_request_test.rb
48 +++ b/test/signed_request_test.rb
49 @@ -5,7 +5,7 @@
50 def setup
51 @value = fixture('signed_request.txt').strip
52 @secret = "897z956a2z7zzzzz5783z458zz3z7556"
53 - @expected_payload = MultiJson.decode(fixture('payload.json'))
54 + @expected_payload = JSON.parse(fixture('payload.json'))
55 end
56
57 def test_signed_request_payload
58 --- a/test/strategy_test.rb
59 +++ b/test/strategy_test.rb
60 @@ -26,10 +26,11 @@
61 class CallbackUrlTest < StrategyTestCase
62 test "returns the default callback url (omitting querystring)" do
63 url_base = 'http://auth.request.com'
64 + script_name = '/script_name'
65 @request.stubs(:url).returns("#{url_base}/some/page")
66 - strategy.stubs(:script_name).returns('') # as not to depend on Rack env
67 + strategy.stubs(:script_name).returns(script_name) # as not to depend on Rack env
68 strategy.stubs(:query_string).returns('?foo=bar')
69 - assert_equal "#{url_base}/auth/facebook/callback", strategy.callback_url
70 + assert_equal "#{url_base}#{script_name}/auth/facebook/callback", strategy.callback_url
71 end
72
73 test "returns path from callback_path option (omitting querystring)" do
74 @@ -393,7 +394,7 @@
75
76 module SignedRequestHelpers
77 def signed_request(payload, secret)
78 - encoded_payload = base64_encode_url(MultiJson.encode(payload))
79 + encoded_payload = base64_encode_url(JSON.dump(payload))
80 encoded_signature = base64_encode_url(signature(encoded_payload, secret))
81 [encoded_signature, encoded_payload].join('.')
82 end
00 removing_bundler.diff
1 replace-multijson-decode-with-json-parse.patch