Extract `SIGN_COUNT_LIMIT` constant in `WebauthnCredential` class (#30636)
parent
921b0db544
commit
d818ddd687
|
@ -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
|
||||||
|
|
|
@ -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?
|
||||||
|
|
Loading…
Reference in New Issue