Replace MultiJson.decode with JSON.parse in tests (Closes: #1031472)
Pirate Praveen
1 year, 28 days ago
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 |