mirror of
https://github.com/internetee/registry.git
synced 2025-07-20 17:55:55 +02:00
Validate uniqueness manually all the time
This commit is contained in:
parent
0ab1e29a53
commit
3f8f5cc4cd
5 changed files with 17 additions and 14 deletions
|
@ -48,6 +48,8 @@ module Epp::Common
|
||||||
# for debugging
|
# for debugging
|
||||||
@errors << { code: '1', msg: 'handle_errors was executed when there were actually no errors' } if @errors.blank?
|
@errors << { code: '1', msg: 'handle_errors was executed when there were actually no errors' } if @errors.blank?
|
||||||
|
|
||||||
|
@errors.uniq!
|
||||||
|
|
||||||
render '/epp/error'
|
render '/epp/error'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -45,9 +45,9 @@ class Domain < ActiveRecord::Base
|
||||||
validate :validate_period
|
validate :validate_period
|
||||||
validate :validate_nameservers_count
|
validate :validate_nameservers_count
|
||||||
validate :validate_admin_contacts_count
|
validate :validate_admin_contacts_count
|
||||||
validate :validate_nameservers_uniqueness, if: :new_record?
|
validate :validate_nameservers_uniqueness
|
||||||
validate :validate_tech_contacts_uniqueness, if: :new_record?
|
validate :validate_tech_contacts_uniqueness
|
||||||
validate :validate_admin_contacts_uniqueness, if: :new_record?
|
validate :validate_admin_contacts_uniqueness
|
||||||
validate :validate_domain_statuses_uniqueness
|
validate :validate_domain_statuses_uniqueness
|
||||||
|
|
||||||
attr_accessor :owner_contact_typeahead
|
attr_accessor :owner_contact_typeahead
|
||||||
|
|
|
@ -18,7 +18,6 @@ class DomainContact < ActiveRecord::Base
|
||||||
TYPES = [TECH, ADMIN]
|
TYPES = [TECH, ADMIN]
|
||||||
|
|
||||||
validates :contact, presence: true
|
validates :contact, presence: true
|
||||||
validates :contact, uniqueness: { scope: [:domain_id, :contact_type] }
|
|
||||||
|
|
||||||
scope :admin, -> { where(contact_type: ADMIN) }
|
scope :admin, -> { where(contact_type: ADMIN) }
|
||||||
scope :tech, -> { where(contact_type: TECH) }
|
scope :tech, -> { where(contact_type: TECH) }
|
||||||
|
|
|
@ -8,8 +8,6 @@ class Nameserver < ActiveRecord::Base
|
||||||
validates :ipv4, format: { with: /\A(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\z/, allow_blank: true }
|
validates :ipv4, format: { with: /\A(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\z/, allow_blank: true }
|
||||||
validates :ipv6, format: { with: /(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]).){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]).){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))/, allow_blank: true }
|
validates :ipv6, format: { with: /(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]).){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]).){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))/, allow_blank: true }
|
||||||
|
|
||||||
validates :hostname, uniqueness: { scope: :domain_id }
|
|
||||||
|
|
||||||
def epp_code_map
|
def epp_code_map
|
||||||
{
|
{
|
||||||
'2302' => [
|
'2302' => [
|
||||||
|
|
|
@ -19,6 +19,7 @@ describe 'EPP Domain', epp: true do
|
||||||
Fabricate(:contact, code: 'jd1234')
|
Fabricate(:contact, code: 'jd1234')
|
||||||
|
|
||||||
response = epp_request(domain_create_xml, :xml)
|
response = epp_request(domain_create_xml, :xml)
|
||||||
|
|
||||||
expect(response[:results][0][:result_code]).to eq('2303')
|
expect(response[:results][0][:result_code]).to eq('2303')
|
||||||
expect(response[:results][0][:msg]).to eq('Contact was not found')
|
expect(response[:results][0][:msg]).to eq('Contact was not found')
|
||||||
expect(response[:results][0][:value]).to eq('sh8013')
|
expect(response[:results][0][:value]).to eq('sh8013')
|
||||||
|
@ -27,10 +28,6 @@ describe 'EPP Domain', epp: true do
|
||||||
expect(response[:results][1][:msg]).to eq('Contact was not found')
|
expect(response[:results][1][:msg]).to eq('Contact was not found')
|
||||||
expect(response[:results][1][:value]).to eq('sh801333')
|
expect(response[:results][1][:value]).to eq('sh801333')
|
||||||
|
|
||||||
expect(response[:results][2][:result_code]).to eq('2303')
|
|
||||||
expect(response[:results][2][:msg]).to eq('Contact was not found')
|
|
||||||
expect(response[:results][2][:value]).to eq('sh8013')
|
|
||||||
|
|
||||||
expect(response[:clTRID]).to eq('ABC-12345')
|
expect(response[:clTRID]).to eq('ABC-12345')
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -456,15 +453,22 @@ describe 'EPP Domain', epp: true do
|
||||||
expect(d.domain_statuses.last.value).to eq('clientUpdateProhibited')
|
expect(d.domain_statuses.last.value).to eq('clientUpdateProhibited')
|
||||||
|
|
||||||
response = epp_request(xml, :xml)
|
response = epp_request(xml, :xml)
|
||||||
|
|
||||||
expect(response[:results][0][:result_code]).to eq('2302')
|
expect(response[:results][0][:result_code]).to eq('2302')
|
||||||
expect(response[:results][0][:msg]).to eq('Contact already exists on this domain!')
|
expect(response[:results][0][:msg]).to eq('Nameserver already exists on this domain')
|
||||||
expect(response[:results][0][:value]).to eq('mak21')
|
expect(response[:results][0][:value]).to eq('ns1.example.com')
|
||||||
|
|
||||||
expect(response[:results][1][:result_code]).to eq('2302')
|
expect(response[:results][1][:result_code]).to eq('2302')
|
||||||
expect(response[:results][1][:msg]).to eq('Nameserver already exists on this domain')
|
expect(response[:results][1][:msg]).to eq('Nameserver already exists on this domain')
|
||||||
expect(response[:results][1][:value]).to eq('ns1.example.com')
|
expect(response[:results][1][:value]).to eq('ns2.example.com')
|
||||||
expect(response[:results][2][:msg]).to eq('Nameserver already exists on this domain')
|
|
||||||
|
expect(response[:results][2][:result_code]).to eq('2302')
|
||||||
|
expect(response[:results][2][:msg]).to eq('Contact already exists on this domain!')
|
||||||
|
expect(response[:results][2][:value]).to eq('mak21')
|
||||||
|
|
||||||
expect(response[:results][3][:msg]).to eq('Status already exists on this domain')
|
expect(response[:results][3][:msg]).to eq('Status already exists on this domain')
|
||||||
expect(response[:results][3][:value]).to eq('clientHold')
|
expect(response[:results][3][:value]).to eq('clientHold')
|
||||||
|
|
||||||
expect(response[:results][4][:msg]).to eq('Status already exists on this domain')
|
expect(response[:results][4][:msg]).to eq('Status already exists on this domain')
|
||||||
expect(response[:results][4][:value]).to eq('clientUpdateProhibited')
|
expect(response[:results][4][:value]).to eq('clientUpdateProhibited')
|
||||||
expect(d.domain_statuses.count).to eq(2)
|
expect(d.domain_statuses.count).to eq(2)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue