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/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 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 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