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) | ||||
| 
 | ||||
|     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 | ||||
| 
 | ||||
|   private | ||||
|  |  | |||
|  | @ -8,7 +8,7 @@ class Ed25519SignatureValidator < ActiveModel::EachValidator | |||
|     signature  = Base64.decode64(value) | ||||
|     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 | ||||
| 
 | ||||
|   private | ||||
|  |  | |||
|  | @ -23,6 +23,11 @@ RSpec.describe Import, type: :model do | |||
|       expect(import).to model_have_error_on_field(:data) | ||||
|     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 | ||||
|       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) | ||||
|  |  | |||
|  | @ -2,5 +2,22 @@ | |||
| 
 | ||||
| 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 | ||||
|  |  | |||
|  | @ -41,6 +41,22 @@ describe EmailMxValidator do | |||
|       expect(user.errors).to_not have_received(:add) | ||||
|     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 | ||||
|       resolver = double | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue