Extract `SIGN_COUNT_LIMIT` constant in `WebauthnCredential` class (#30636)

This commit is contained in:
Matt Jankowski 2024-06-11 11:36:21 -04:00 committed by GitHub
parent 921b0db544
commit d818ddd687
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 5 additions and 3 deletions

View File

@ -15,9 +15,11 @@
# #
class WebauthnCredential < ApplicationRecord class WebauthnCredential < ApplicationRecord
SIGN_COUNT_LIMIT = (2**63)
validates :external_id, :public_key, :nickname, :sign_count, presence: true validates :external_id, :public_key, :nickname, :sign_count, presence: true
validates :external_id, uniqueness: true validates :external_id, uniqueness: true
validates :nickname, uniqueness: { scope: :user_id } validates :nickname, uniqueness: { scope: :user_id }
validates :sign_count, validates :sign_count,
numericality: { only_integer: true, greater_than_or_equal_to: 0, less_than_or_equal_to: (2**63) - 1 } numericality: { only_integer: true, greater_than_or_equal_to: 0, less_than_or_equal_to: SIGN_COUNT_LIMIT - 1 }
end end

View File

@ -71,8 +71,8 @@ RSpec.describe WebauthnCredential do
expect(webauthn_credential).to model_have_error_on_field(:sign_count) expect(webauthn_credential).to model_have_error_on_field(:sign_count)
end end
it 'is invalid if sign_count is greater 2**63 - 1' do it 'is invalid if sign_count is greater than the limit' do
webauthn_credential = Fabricate.build(:webauthn_credential, sign_count: 2**63) webauthn_credential = Fabricate.build(:webauthn_credential, sign_count: (described_class::SIGN_COUNT_LIMIT * 2))
webauthn_credential.valid? webauthn_credential.valid?