From 1a7360cc3c7fac87d5abba1f559958dcb5447634 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Mon, 3 Aug 2015 17:11:56 +0300 Subject: [PATCH] Tests #2806 --- app/validators/domain_name_validator.rb | 3 +- spec/models/domain_spec.rb | 56 +++++++++++++++---------- spec/models/zonefile_setting_spec.rb | 4 +- 3 files changed, 40 insertions(+), 23 deletions(-) diff --git a/app/validators/domain_name_validator.rb b/app/validators/domain_name_validator.rb index 471565c30..c8ed2813c 100644 --- a/app/validators/domain_name_validator.rb +++ b/app/validators/domain_name_validator.rb @@ -33,7 +33,8 @@ class DomainNameValidator < ActiveModel::EachValidator def validate_blocked(value) return true unless value - BlockedDomain.where("names @> ?::varchar[]", "{#{value}}").count == 0 + return false if BlockedDomain.where("names @> ?::varchar[]", "{#{value}}").count > 0 + ZonefileSetting.where(origin: value).count == 0 end end end diff --git a/spec/models/domain_spec.rb b/spec/models/domain_spec.rb index e39300e74..ef744d263 100644 --- a/spec/models/domain_spec.rb +++ b/spec/models/domain_spec.rb @@ -469,35 +469,49 @@ describe Domain do end end - # it 'validates domain name', skip: true do - # d = Fabricate(:domain) - # expect(d.name).to_not be_nil + it 'validates domain name' do + d = Fabricate(:domain) + expect(d.name).to_not be_nil - # invalid = ['a.ee', "#{'a' * 64}.ee", 'ab.eu', 'test.ab.ee', '-test.ee', '-test-.ee', 'test-.ee', 'te--st.ee', - # 'õ.pri.ee', 'test.com', 'www.ab.ee', 'test.eu', ' .ee', 'a b.ee', 'Ž .ee', 'test.edu.ee'] + invalid = ['a.ee', "#{'a' * 64}.ee", 'ab.eu', 'test.ab.ee', '-test.ee', '-test-.ee', 'test-.ee', 'te--st.ee', + 'õ.pri.ee', 'test.com', 'www.ab.ee', 'test.eu', ' .ee', 'a b.ee', 'Ž .ee', 'test.edu.ee'] - # invalid.each do |x| - # expect(Fabricate.build(:domain, name: x).valid?).to be false - # end + invalid.each do |x| + expect(Fabricate.build(:domain, name: x).valid?).to be false + end - # valid = ['ab.ee', "#{'a' * 63}.ee", 'te-s-t.ee', 'jäääär.ee', 'päike.pri.ee', - # 'õigus.com.ee', 'õäöü.fie.ee', 'test.med.ee', 'žä.ee', ' ŽŠ.ee '] + valid = ['ab.ee', "#{'a' * 63}.ee", 'te-s-t.ee', 'jäääär.ee', 'päike.pri.ee', + 'õigus.com.ee', 'õäöü.fie.ee', 'test.med.ee', 'žä.ee', ' ŽŠ.ee '] - # valid.each do |x| - # expect(Fabricate.build(:domain, name: x).valid?).to be true - # end + valid.each do |x| + expect(Fabricate.build(:domain, name: x).valid?).to be true + end - # invalid_punycode = ['xn--geaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-4we.pri.ee'] + invalid_punycode = ['xn--geaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-4we.pri.ee'] - # invalid_punycode.each do |x| - # expect(Fabricate.build(:domain, name: x).valid?).to be false - # end + invalid_punycode.each do |x| + expect(Fabricate.build(:domain, name: x).valid?).to be false + end - # valid_punycode = ['xn--ge-uia.pri.ee', 'xn--geaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-9te.pri.ee'] + valid_punycode = ['xn--ge-uia.pri.ee', 'xn--geaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-9te.pri.ee'] - # valid_punycode.each do |x| - # expect(Fabricate.build(:domain, name: x).valid?).to be true - # end + valid_punycode.each do |x| + expect(Fabricate.build(:domain, name: x).valid?).to be true + end + end + + it 'should not create zone origin domain' do + zs = Fabricate(:zonefile_setting) + d = Fabricate.build(:domain, name: 'ee') + d.save.should == false + d.errors.full_messages.should match_array([ + "Data management policy violation: Domain name is blocked [name]" + ]) + + zs.destroy + + d.save.should == true + end # d = Domain.new # expect(d.valid?).to be false diff --git a/spec/models/zonefile_setting_spec.rb b/spec/models/zonefile_setting_spec.rb index d7a11bf85..013015bbd 100644 --- a/spec/models/zonefile_setting_spec.rb +++ b/spec/models/zonefile_setting_spec.rb @@ -33,7 +33,9 @@ describe ZonefileSetting do it 'does not create duplicate zones' do Fabricate(:zonefile_setting) - expect { Fabricate(:zonefile_setting) }.to raise_error(ActiveRecord::RecordInvalid) + zs = Fabricate.build(:zonefile_setting) + zs.save.should == false + zs.errors.full_messages.should match_array(["Origin has already been taken"]) end it 'does not allow deleting zone when it has existing domains' do