Misc coverage improvements for validators (#23928)
This commit is contained in:
parent
2f606ba122
commit
c40d5e5a8f
5 changed files with 41 additions and 3 deletions
|
@ -6,7 +6,7 @@ class Ed25519KeyValidator < ActiveModel::EachValidator
|
||||||
|
|
||||||
key = Base64.decode64(value)
|
key = Base64.decode64(value)
|
||||||
|
|
||||||
record.errors[attribute] << I18n.t('crypto.errors.invalid_key') unless verified?(key)
|
record.errors.add(attribute, I18n.t('crypto.errors.invalid_key')) unless verified?(key)
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
|
@ -8,7 +8,7 @@ class Ed25519SignatureValidator < ActiveModel::EachValidator
|
||||||
signature = Base64.decode64(value)
|
signature = Base64.decode64(value)
|
||||||
message = option_to_value(record, :message)
|
message = option_to_value(record, :message)
|
||||||
|
|
||||||
record.errors[attribute] << I18n.t('crypto.errors.invalid_signature') unless verified?(verify_key, signature, message)
|
record.errors.add(attribute, I18n.t('crypto.errors.invalid_signature')) unless verified?(verify_key, signature, message)
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
|
@ -23,6 +23,11 @@ RSpec.describe Import, type: :model do
|
||||||
expect(import).to model_have_error_on_field(:data)
|
expect(import).to model_have_error_on_field(:data)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'is invalid with malformed data' do
|
||||||
|
import = Import.create(account: account, type: type, data: StringIO.new('\"test'))
|
||||||
|
expect(import).to model_have_error_on_field(:data)
|
||||||
|
end
|
||||||
|
|
||||||
it 'is invalid with too many rows in data' do
|
it 'is invalid with too many rows in data' do
|
||||||
import = Import.create(account: account, type: type, data: StringIO.new("foo@bar.com\n" * (ImportService::ROWS_PROCESSING_LIMIT + 10)))
|
import = Import.create(account: account, type: type, data: StringIO.new("foo@bar.com\n" * (ImportService::ROWS_PROCESSING_LIMIT + 10)))
|
||||||
expect(import).to model_have_error_on_field(:data)
|
expect(import).to model_have_error_on_field(:data)
|
||||||
|
|
|
@ -2,5 +2,22 @@
|
||||||
|
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe OneTimeKey, type: :model do
|
describe OneTimeKey do
|
||||||
|
describe 'validations' do
|
||||||
|
context 'with an invalid signature' do
|
||||||
|
let(:one_time_key) { Fabricate.build(:one_time_key, signature: 'wrong!') }
|
||||||
|
|
||||||
|
it 'is invalid' do
|
||||||
|
expect(one_time_key).to_not be_valid
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'with an invalid key' do
|
||||||
|
let(:one_time_key) { Fabricate.build(:one_time_key, key: 'wrong!') }
|
||||||
|
|
||||||
|
it 'is invalid' do
|
||||||
|
expect(one_time_key).to_not be_valid
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -41,6 +41,22 @@ describe EmailMxValidator do
|
||||||
expect(user.errors).to_not have_received(:add)
|
expect(user.errors).to_not have_received(:add)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'adds an error if the TagManager fails to normalize domain' do
|
||||||
|
double = instance_double(TagManager)
|
||||||
|
allow(TagManager).to receive(:instance).and_return(double)
|
||||||
|
allow(double).to receive(:normalize_domain).with('example.com').and_raise(Addressable::URI::InvalidURIError)
|
||||||
|
|
||||||
|
user = double(email: 'foo@example.com', errors: double(add: nil))
|
||||||
|
subject.validate(user)
|
||||||
|
expect(user.errors).to have_received(:add)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'adds an error if the domain email portion is blank' do
|
||||||
|
user = double(email: 'foo@', errors: double(add: nil))
|
||||||
|
subject.validate(user)
|
||||||
|
expect(user.errors).to have_received(:add)
|
||||||
|
end
|
||||||
|
|
||||||
it 'adds an error if the email domain name contains empty labels' do
|
it 'adds an error if the email domain name contains empty labels' do
|
||||||
resolver = double
|
resolver = double
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue