This commit is contained in:
Martin Lensment 2015-08-03 17:11:56 +03:00
parent e8e730a6e1
commit 1a7360cc3c
3 changed files with 40 additions and 23 deletions

View file

@ -33,7 +33,8 @@ class DomainNameValidator < ActiveModel::EachValidator
def validate_blocked(value) def validate_blocked(value)
return true unless 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 end
end end

View file

@ -469,35 +469,49 @@ describe Domain do
end end
end end
# it 'validates domain name', skip: true do it 'validates domain name' do
# d = Fabricate(:domain) d = Fabricate(:domain)
# expect(d.name).to_not be_nil 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', 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'] 'õ.pri.ee', 'test.com', 'www.ab.ee', 'test.eu', ' .ee', 'a b.ee', 'Ž .ee', 'test.edu.ee']
# invalid.each do |x| invalid.each do |x|
# expect(Fabricate.build(:domain, name: x).valid?).to be false expect(Fabricate.build(:domain, name: x).valid?).to be false
# end end
# valid = ['ab.ee', "#{'a' * 63}.ee", 'te-s-t.ee', 'jäääär.ee', 'päike.pri.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 '] 'õigus.com.ee', 'õäöü.fie.ee', 'test.med.ee', 'žä.ee', ' ŽŠ.ee ']
# valid.each do |x| valid.each do |x|
# expect(Fabricate.build(:domain, name: x).valid?).to be true expect(Fabricate.build(:domain, name: x).valid?).to be true
# end end
# invalid_punycode = ['xn--geaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-4we.pri.ee'] invalid_punycode = ['xn--geaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-4we.pri.ee']
# invalid_punycode.each do |x| invalid_punycode.each do |x|
# expect(Fabricate.build(:domain, name: x).valid?).to be false expect(Fabricate.build(:domain, name: x).valid?).to be false
# end 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| valid_punycode.each do |x|
# expect(Fabricate.build(:domain, name: x).valid?).to be true expect(Fabricate.build(:domain, name: x).valid?).to be true
# end 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 # d = Domain.new
# expect(d.valid?).to be false # expect(d.valid?).to be false

View file

@ -33,7 +33,9 @@ describe ZonefileSetting do
it 'does not create duplicate zones' do it 'does not create duplicate zones' do
Fabricate(:zonefile_setting) 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 end
it 'does not allow deleting zone when it has existing domains' do it 'does not allow deleting zone when it has existing domains' do