diff --git a/app/models/domain.rb b/app/models/domain.rb index c6f8b6851..6a78c9870 100644 --- a/app/models/domain.rb +++ b/app/models/domain.rb @@ -22,6 +22,9 @@ class Domain < ActiveRecord::Base validates :name, domain_name: true, uniqueness: { message: I18n.t('errors.messages.epp_domain_taken') } validates :name_puny, domain_name: true validates :period, numericality: { only_integer: true, greater_than: 0, less_than: 100 } + validates :owner_contact, presence: true + # validates :tech_contacts_count + # validates :admin_contacts_count def name=(value) value.strip! diff --git a/config/locales/en.yml b/config/locales/en.yml index e813f9aed..11d9c1113 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -39,6 +39,9 @@ en: attributes: name: blank: 'Required parameter missing - name' + owner_contact: + blank: 'Required parameter missing - owner contact' + errors: messages: diff --git a/spec/epp/domain_spec.rb b/spec/epp/domain_spec.rb index 822004ad9..5973d6178 100644 --- a/spec/epp/domain_spec.rb +++ b/spec/epp/domain_spec.rb @@ -6,44 +6,47 @@ describe 'EPP Domain', epp: true do context 'with valid user' do before(:each) { Fabricate(:epp_user) } - # incomplete - it 'creates a domain' do - response = epp_request('domains/create.xml') - expect(response[:result_code]).to eq('1000') - expect(response[:msg]).to eq('Command completed successfully') - expect(response[:clTRID]).to eq('ABC-12345') - expect(Domain.first.registrar.name).to eq('Zone Media OÜ') - end + context 'with citizen as an owner' do + before(:each) { Fabricate(:contact, code: 'jd1234') } - it 'does not create duplicate domain' do - epp_request('domains/create.xml') - response = epp_request('domains/create.xml') - expect(response[:result_code]).to eq('2302') - expect(response[:msg]).to eq('Domain name already exists') - expect(response[:clTRID]).to eq('ABC-12345') - end + it 'creates a domain' do + response = epp_request('domains/create.xml') + expect(response[:result_code]).to eq('1000') + expect(response[:msg]).to eq('Command completed successfully') + expect(response[:clTRID]).to eq('ABC-12345') + expect(Domain.first.registrar.name).to eq('Zone Media OÜ') + end - it 'does not create reserved domain' do - Fabricate(:reserved_domain) - response = epp_request('domains/create_reserved.xml') - expect(response[:result_code]).to eq('2302') - expect(response[:msg]).to eq('Domain name is reserved or restricted') - expect(response[:clTRID]).to eq('ABC-12345') - end + it 'does not create duplicate domain' do + epp_request('domains/create.xml') + response = epp_request('domains/create.xml') + expect(response[:result_code]).to eq('2302') + expect(response[:msg]).to eq('Domain name already exists') + expect(response[:clTRID]).to eq('ABC-12345') + end - it 'creates a domain with contacts' do - Fabricate(:contact, code: 'jd1234') - Fabricate(:contact, code: 'sh8013') - Fabricate(:contact, code: 'sh801333') + it 'does not create reserved domain' do + Fabricate(:reserved_domain) + response = epp_request('domains/create_reserved.xml') + expect(response[:result_code]).to eq('2302') + expect(response[:msg]).to eq('Domain name is reserved or restricted') + expect(response[:clTRID]).to eq('ABC-12345') + end - response = epp_request('domains/create.xml') - expect(response[:result_code]).to eq('1000') - expect(response[:msg]).to eq('Command completed successfully') - expect(response[:clTRID]).to eq('ABC-12345') + it 'creates a domain with contacts' do + Fabricate(:contact, code: 'jd1234') + Fabricate(:contact, code: 'sh8013') + Fabricate(:contact, code: 'sh801333') - expect(Domain.first.tech_contacts.count).to eq 2 - expect(Domain.first.admin_contacts.count).to eq 1 - expect(Domain.first.owner_contact).to_not be nil + response = epp_request('domains/create.xml') + expect(response[:result_code]).to eq('1000') + expect(response[:msg]).to eq('Command completed successfully') + expect(response[:clTRID]).to eq('ABC-12345') + + expect(Domain.first.tech_contacts.count).to eq 2 + expect(Domain.first.admin_contacts.count).to eq 1 + expect(Domain.first.owner_contact).to_not be nil + end end it 'checks a domain' do diff --git a/spec/fabricators/domain_fabricator.rb b/spec/fabricators/domain_fabricator.rb index 1781e97c2..8c4c59698 100644 --- a/spec/fabricators/domain_fabricator.rb +++ b/spec/fabricators/domain_fabricator.rb @@ -1,4 +1,5 @@ Fabricator(:domain) do name { "#{Faker::Internet.domain_word}.ee" } period 1 + owner_contact(fabricator: :contact) end diff --git a/spec/models/domain_spec.rb b/spec/models/domain_spec.rb index f7df745a3..517f752a8 100644 --- a/spec/models/domain_spec.rb +++ b/spec/models/domain_spec.rb @@ -40,7 +40,8 @@ describe Domain do expect(d.errors.messages).to match_array({ name: ['Required parameter missing - name'], - period: ['is not a number'] + period: ['is not a number'], + owner_contact: ['Required parameter missing - owner contact'] }) end