From 52467585012380835a5c9276761ef0e409d7a5bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20Mendon=C3=A7a=20Fran=C3=A7a?= Date: Fri, 1 Sep 2023 21:49:31 +0000 Subject: [PATCH 1/3] Make sure legacy verifier behavior work with JSON serializer and symbol values --- lib/global_id/signed_global_id.rb | 2 +- test/cases/signed_global_id_test.rb | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/global_id/signed_global_id.rb b/lib/global_id/signed_global_id.rb index fc11d8c..68cf02f 100644 --- a/lib/global_id/signed_global_id.rb +++ b/lib/global_id/signed_global_id.rb @@ -42,7 +42,7 @@ def verify_with_legacy_self_validated_metadata(sgid, options) raise_if_expired(metadata['expires_at']) - metadata['gid'] if pick_purpose(options) == metadata['purpose'] + metadata['gid'] if pick_purpose(options)&.to_s == metadata['purpose']&.to_s rescue ActiveSupport::MessageVerifier::InvalidSignature, ExpiredMessage nil end diff --git a/test/cases/signed_global_id_test.rb b/test/cases/signed_global_id_test.rb index b4d384d..f992f7a 100644 --- a/test/cases/signed_global_id_test.rb +++ b/test/cases/signed_global_id_test.rb @@ -71,7 +71,9 @@ class SignedGlobalIDPurposeTest < ActiveSupport::TestCase test 'parse is backwards compatible with the self validated metadata' do legacy_sgid = "eyJnaWQiOiJnaWQ6Ly9iY3gvUGVyc29uLzUiLCJwdXJwb3NlIjoibG9naW4iLCJleHBpcmVzX2F0IjpudWxsfQ==--4b9630f3a1fb3d7d6584d95d4fac96433ec2deef" - assert_equal @login_sgid, SignedGlobalID.parse(legacy_sgid, for: 'login') + parsed_sgid = SignedGlobalID.parse(legacy_sgid, for: :login) + assert_equal @login_sgid.uri, parsed_sgid.uri + assert_equal @login_sgid.purpose, parsed_sgid.purpose.to_s end test 'equal only with same purpose' do From b73e5f96fb69b83fd4a7e851aee8f2492a4f0467 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20Mendon=C3=A7a=20Fran=C3=A7a?= Date: Fri, 1 Sep 2023 21:56:58 +0000 Subject: [PATCH 2/3] Remove deprecation when default cache format is used --- test/cases/railtie_test.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/test/cases/railtie_test.rb b/test/cases/railtie_test.rb index 688d697..fe2fcfb 100644 --- a/test/cases/railtie_test.rb +++ b/test/cases/railtie_test.rb @@ -16,6 +16,7 @@ def setup @app.config.eager_load = false @app.config.logger = Logger.new(nil) @app.config.secret_key_base = ('x' * 30) + @app.config.active_support.cache_format_version = Rails::VERSION::STRING.to_f end test 'GlobalID.app for Blog::Application defaults to blog' do From d371dd1a7966e6987e25f564dfa85eff22480a77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20Mendon=C3=A7a=20Fran=C3=A7a?= Date: Fri, 1 Sep 2023 21:57:45 +0000 Subject: [PATCH 3/3] Change verifier to conform Rails 7.1 API safe_url keyword argument is now passed. --- lib/global_id/verifier.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/global_id/verifier.rb b/lib/global_id/verifier.rb index 847966d..f3eac48 100644 --- a/lib/global_id/verifier.rb +++ b/lib/global_id/verifier.rb @@ -3,11 +3,11 @@ class GlobalID class Verifier < ActiveSupport::MessageVerifier private - def encode(data) + def encode(data, **) ::Base64.urlsafe_encode64(data) end - def decode(data) + def decode(data, **) ::Base64.urlsafe_decode64(data) end end