diff --git a/spec/api/repp/contact_v1_spec.rb b/spec/api/repp/contact_v1_spec.rb
deleted file mode 100644
index 77ce38d2e..000000000
--- a/spec/api/repp/contact_v1_spec.rb
+++ /dev/null
@@ -1,50 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe Repp::ContactV1, db: true do
- let(:user) { create(:api_user, registrar: registrar) }
- let(:registrar) { create(:registrar) }
-
- describe '/contacts' do
- let(:returned_attributes) { HashWithIndifferentAccess.new(JSON.parse(response.body)['contacts'].first).keys }
- subject(:address_included) { Contact.address_attribute_names.any? { |attr| returned_attributes.include?(attr.to_s) } }
-
- before do
- Grape::Endpoint.before_each do |endpoint|
- allow(endpoint).to receive(:current_user).and_return(user)
- end
-
- registrar.contacts << create(:contact)
- end
-
- it 'responds with success' do
- get '/repp/v1/contacts', { limit: 1, details: true }, { 'HTTP_AUTHORIZATION' => http_auth_key }
- expect(response).to have_http_status(:success)
- end
-
- context 'when address processing is enabled' do
- before do
- expect(Contact).to receive(:address_processing?).and_return(true)
- get '/repp/v1/contacts', { limit: 1, details: true }, { 'HTTP_AUTHORIZATION' => http_auth_key }
- end
-
- it 'returns contact address' do
- expect(address_included).to be_truthy
- end
- end
-
- context 'when address processing is disabled' do
- before do
- expect(Contact).to receive(:address_processing?).and_return(false)
- get '/repp/v1/contacts', { limit: 1, details: true }, { 'HTTP_AUTHORIZATION' => http_auth_key }
- end
-
- it 'does not return contact address' do
- expect(address_included).to be_falsy
- end
- end
- end
-
- def http_auth_key
- ActionController::HttpAuthentication::Basic.encode_credentials(user.username, user.plain_text_password)
- end
-end
diff --git a/spec/features/admin/billing/prices/edit_spec.rb b/spec/features/admin/billing/prices/edit_spec.rb
deleted file mode 100644
index 8ef87b9a0..000000000
--- a/spec/features/admin/billing/prices/edit_spec.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-require 'rails_helper'
-
-RSpec.feature 'Editing price in admin area', settings: false do
- given!(:price) { create(:effective_price) }
-
- background do
- sign_in_to_admin_area
- end
-
- scenario 'updates price' do
- visit admin_prices_path
- open_form
- submit_form
-
- expect(page).to have_text(t('admin.billing.prices.update.updated'))
- end
-
- def open_form
- find('.edit-price-btn').click
- end
-
- def submit_form
- click_link_or_button t('admin.billing.prices.form.update_btn')
- end
-end
diff --git a/spec/features/admin/billing/prices/expire_spec.rb b/spec/features/admin/billing/prices/expire_spec.rb
deleted file mode 100644
index 9a835f09c..000000000
--- a/spec/features/admin/billing/prices/expire_spec.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-require 'rails_helper'
-
-RSpec.feature 'Expiring price in admin area', settings: false do
- given!(:price) { create(:effective_price) }
-
- background do
- sign_in_to_admin_area
- end
-
- scenario 'expires price' do
- visit admin_prices_path
- open_edit_form
- expire
-
- expect(page).to have_text(t('admin.billing.prices.expire.expired'))
- end
-
- def open_edit_form
- find('.edit-price-btn').click
- end
-
- def expire
- click_link_or_button t('admin.billing.prices.edit.expire_btn')
- end
-end
diff --git a/spec/features/admin/billing/prices/list_spec.rb b/spec/features/admin/billing/prices/list_spec.rb
deleted file mode 100644
index 95ebcb975..000000000
--- a/spec/features/admin/billing/prices/list_spec.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-require 'rails_helper'
-
-RSpec.feature 'Viewing prices in admin area', settings: false do
- given!(:effective_price) { create(:effective_price) }
- given!(:expired_price) { create(:expired_price) }
-
- background do
- sign_in_to_admin_area
- end
-
- describe 'search' do
- context 'when status is not selected' do
- scenario 'shows effective prices' do
- visit admin_prices_path
- expect(page).to have_css('.price', count: 1)
- end
- end
-
- context 'when status is given' do
- scenario 'filters by given status' do
- visit admin_prices_path
- select Admin::Billing::PricesController.default_status.capitalize, from: 'search_status'
- submit_search_form
-
- expect(page).to have_css('.price', count: 1)
- end
- end
-
- def submit_search_form
- find('.price-search-form-search-btn').click
- end
- end
-end
diff --git a/spec/features/admin/billing/prices/new_spec.rb b/spec/features/admin/billing/prices/new_spec.rb
deleted file mode 100644
index 9d11938bb..000000000
--- a/spec/features/admin/billing/prices/new_spec.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-require 'rails_helper'
-
-RSpec.feature 'New price in admin area', settings: false do
- given!(:zone) { create(:zone, origin: 'test') }
-
- background do
- sign_in_to_admin_area
- end
-
- scenario 'it creates new price' do
- open_list
- open_form
- fill_form
- submit_form
-
- expect(page).to have_text(t('admin.billing.prices.create.created'))
- end
-
- def open_list
- click_link_or_button t('admin.base.menu.prices')
- end
-
- def open_form
- click_link_or_button t('admin.billing.prices.index.new_btn')
- end
-
- def fill_form
- select 'test', from: 'price_zone_id'
- select Billing::Price.operation_categories.first, from: 'price_operation_category'
- select '3 months', from: 'price_duration'
- fill_in 'price_price', with: '1'
- end
-
- def submit_form
- click_link_or_button t('admin.billing.prices.form.create_btn')
- end
-end
diff --git a/spec/features/admin/dns/zones/edit_spec.rb b/spec/features/admin/dns/zones/edit_spec.rb
deleted file mode 100644
index 8b61683ce..000000000
--- a/spec/features/admin/dns/zones/edit_spec.rb
+++ /dev/null
@@ -1,29 +0,0 @@
-require 'rails_helper'
-
-RSpec.feature 'Editing zone in admin area', settings: false do
- given!(:zone) { create(:zone) }
-
- background do
- sign_in_to_admin_area
- end
-
- scenario 'updates zone' do
- visit admin_zones_url
- open_form
- submit_form
-
- expect(page).to have_text(t('admin.dns.zones.update.updated'))
- end
-
- def open_list
- click_link_or_button t('admin.base.menu.zones')
- end
-
- def open_form
- click_link_or_button 'admin-edit-zone-btn'
- end
-
- def submit_form
- click_link_or_button t('admin.dns.zones.form.update_btn')
- end
-end
diff --git a/spec/features/admin/dns/zones/new_spec.rb b/spec/features/admin/dns/zones/new_spec.rb
deleted file mode 100644
index 78fd05195..000000000
--- a/spec/features/admin/dns/zones/new_spec.rb
+++ /dev/null
@@ -1,39 +0,0 @@
-require 'rails_helper'
-
-RSpec.feature 'New zone in admin area', settings: false do
- background do
- sign_in_to_admin_area
- end
-
- scenario 'it creates new zone' do
- open_list
- open_form
- fill_form
- submit_form
-
- expect(page).to have_text(t('admin.dns.zones.create.created'))
- end
-
- def open_list
- click_link_or_button t('admin.base.menu.zones')
- end
-
- def open_form
- click_link_or_button t('admin.dns.zones.index.new_btn')
- end
-
- def fill_form
- fill_in 'zone_origin', with: 'test'
- fill_in 'zone_ttl', with: '1'
- fill_in 'zone_refresh', with: '1'
- fill_in 'zone_retry', with: '1'
- fill_in 'zone_expire', with: '1'
- fill_in 'zone_minimum_ttl', with: '1'
- fill_in 'zone_email', with: 'test@test.com'
- fill_in 'zone_master_nameserver', with: 'test.test'
- end
-
- def submit_form
- click_link_or_button t('admin.dns.zones.form.create_btn')
- end
-end
diff --git a/spec/features/admin/settings/create_spec.rb b/spec/features/admin/settings/create_spec.rb
deleted file mode 100644
index d30e93e8e..000000000
--- a/spec/features/admin/settings/create_spec.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-require 'rails_helper'
-
-RSpec.feature 'Admin settings' do
- background do
- sign_in_to_admin_area
- end
-
- it 'saves settings' do
- visit admin_settings_path
- click_link_or_button 'Save'
- expect(page).to have_text(t('admin.settings.create.saved'))
- end
-end
diff --git a/spec/features/registrar/contacts/delete_spec.rb b/spec/features/registrar/contacts/delete_spec.rb
deleted file mode 100644
index d0169ad54..000000000
--- a/spec/features/registrar/contacts/delete_spec.rb
+++ /dev/null
@@ -1,50 +0,0 @@
-require 'rails_helper'
-
-class FakeDeppContact
- include ActiveModel::Model
-
- def id
- 'test'
- end
-
- def name
- 'test'
- end
-
- def persisted?
- true
- end
-
- def password
- 'test'
- end
-
- def delete
- true
- end
-end
-
-RSpec.feature 'Contact deletion in registrar area' do
- given!(:registrar) { create(:registrar) }
- given!(:contact) { create(:contact, registrar: registrar) }
-
- background do
- allow(Depp::Contact).to receive(:find_by_id).and_return(FakeDeppContact.new)
- allow(Depp::Contact).to receive(:new).and_return(FakeDeppContact.new)
- sign_in_to_registrar_area(user: create(:api_user_with_unlimited_balance, registrar: registrar))
- end
-
- it 'deletes contact' do
- visit registrar_contacts_url
- click_link_or_button 'Delete'
- confirm
-
- expect(page).to have_text('Destroyed')
- end
-
- private
-
- def confirm
- click_link_or_button 'Delete'
- end
-end
diff --git a/spec/features/registrar/contacts/list_spec.rb b/spec/features/registrar/contacts/list_spec.rb
deleted file mode 100644
index 96f1f2c98..000000000
--- a/spec/features/registrar/contacts/list_spec.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-require 'rails_helper'
-
-RSpec.feature 'Contact list', settings: false do
- given!(:registrar) { create(:registrar) }
- given!(:contact) { create(:contact, registrar: registrar) }
-
- background do
- sign_in_to_registrar_area(user: create(:api_user_with_unlimited_balance, registrar: registrar))
- end
-
- it 'is visible' do
- visit registrar_contacts_path
- expect(page).to have_css('.contacts')
- end
-end
diff --git a/spec/features/registrar/domains/new_spec.rb b/spec/features/registrar/domains/new_spec.rb
deleted file mode 100644
index 4dd1d85d5..000000000
--- a/spec/features/registrar/domains/new_spec.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-require 'rails_helper'
-
-RSpec.feature 'New domain in registrar area', settings: false do
- background do
- sign_in_to_registrar_area
- end
-
- it 'has default period' do
- visit registrar_domains_path
- click_link_or_button t('new')
-
- expect(page).to have_field('domain_period', with: Depp::Domain.default_period)
- end
-end
diff --git a/spec/features/registrar/domains/renew_spec.rb b/spec/features/registrar/domains/renew_spec.rb
deleted file mode 100644
index 1d6ab0a7e..000000000
--- a/spec/features/registrar/domains/renew_spec.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-require 'rails_helper'
-
-RSpec.feature 'Renew domain in registrar area' do
- given!(:registrar) { create(:registrar) }
- given!(:user) { create(:api_user, registrar: registrar) }
- given!(:domain) { create(:domain, registrar: registrar) }
-
- background do
- sign_in_to_registrar_area(user: user)
- end
-
- it 'has default period' do
- visit registrar_domains_path
- click_link_or_button t('renew')
-
- expect(page).to have_field('period', with: Depp::Domain.default_period)
- end
-end
diff --git a/spec/features/registrar/ip_restriction_spec.rb b/spec/features/registrar/ip_restriction_spec.rb
deleted file mode 100644
index 264c45283..000000000
--- a/spec/features/registrar/ip_restriction_spec.rb
+++ /dev/null
@@ -1,17 +0,0 @@
-require 'rails_helper'
-
-RSpec.feature 'Registrar area IP restriction', settings: false do
- before do
- @original_registrar_ip_whitelist_enabled = Setting.registrar_ip_whitelist_enabled
- end
-
- after do
- Setting.registrar_ip_whitelist_enabled = @original_registrar_ip_whitelist_enabled
- end
-
- scenario 'notifies the user if his IP is not allowed' do
- Setting.registrar_ip_whitelist_enabled = true
- visit registrar_root_path
- expect(page).to have_text('Access denied from IP 127.0.0.1')
- end
-end
diff --git a/spec/features/registrar/linked_users_spec.rb b/spec/features/registrar/linked_users_spec.rb
deleted file mode 100644
index aa1e3785b..000000000
--- a/spec/features/registrar/linked_users_spec.rb
+++ /dev/null
@@ -1,17 +0,0 @@
-require 'rails_helper'
-
-RSpec.feature 'Registrar area linked users', settings: false do
- given!(:current_user) { create(:api_user_with_unlimited_balance, id: 1, identity_code: 'test') }
- given!(:linked_user) { create(:api_user_with_unlimited_balance, id: 2, identity_code: 'test',
- username: 'new-user-name') }
-
- background do
- sign_in_to_registrar_area(user: current_user)
- end
-
- scenario 'switches current user to a linked one' do
- visit registrar_account_path
- click_link_or_button 'switch-current-user-2-btn'
- expect(page).to have_text('You are now signed in as a user "new-user-name"')
- end
-end
diff --git a/spec/jobs/domain_expire_email_job_spec.rb b/spec/jobs/domain_expire_email_job_spec.rb
deleted file mode 100644
index a25999b77..000000000
--- a/spec/jobs/domain_expire_email_job_spec.rb
+++ /dev/null
@@ -1,43 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe DomainExpireEmailJob do
- describe '#run' do
- let(:domain) { instance_double(Domain) }
-
- before :example do
- expect(Domain).to receive(:find).and_return(domain)
- end
-
- after :example do
- domain_id = 1
- described_class.enqueue(domain_id)
- end
-
- context 'when domain is expired' do
- let(:message) { instance_double(ActionMailer::MessageDelivery) }
-
- before :example do
- allow(domain).to receive_messages(
- registrar: 'registrar',
- registered?: false,
- primary_contact_emails: %w(test@test.com test@test.com))
- end
-
- it 'sends email' do
- expect(DomainExpireMailer).to receive(:expired).with(domain: domain, registrar: 'registrar')
- .and_return(message)
- expect(message).to receive(:deliver_now)
- end
- end
-
- context 'when domain is registered' do
- before :example do
- allow(domain).to receive(:registered?).and_return(true)
- end
-
- it 'does not send email' do
- expect(DomainExpireMailer).to_not receive(:expired)
- end
- end
- end
-end
diff --git a/spec/jobs/registrant_change_expired_email_job_spec.rb b/spec/jobs/registrant_change_expired_email_job_spec.rb
deleted file mode 100644
index 1486417ea..000000000
--- a/spec/jobs/registrant_change_expired_email_job_spec.rb
+++ /dev/null
@@ -1,40 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe RegistrantChangeExpiredEmailJob do
- describe '#run' do
- let(:domain) { instance_double(Domain,
- id: 1,
- name: 'test.com',
- new_registrant_email: 'new-registrant@test.com',
- registrar: 'registrar',
- registrant: 'registrant')
- }
- let(:message) { instance_double(ActionMailer::MessageDelivery) }
-
- before :example do
- expect(Domain).to receive(:find).and_return(domain)
- end
-
- after :example do
- domain_id = 1
- described_class.enqueue(domain_id)
- end
-
- it 'creates log record' do
- log_message = 'Send RegistrantChangeMailer#expired email for domain test.com (#1) to new-registrant@test.com'
-
- allow(RegistrantChangeMailer).to receive(:expired).and_return(message)
- allow(message).to receive(:deliver_now)
-
- expect(Rails.logger).to receive(:info).with(log_message)
- end
-
- it 'sends email' do
- expect(RegistrantChangeMailer).to receive(:expired).with(domain: domain,
- registrar: 'registrar',
- registrant: 'registrant')
- .and_return(message)
- expect(message).to receive(:deliver_now)
- end
- end
-end
diff --git a/spec/lib/validators/e164.rb b/spec/lib/validators/e164.rb
deleted file mode 100644
index bfb4914a3..000000000
--- a/spec/lib/validators/e164.rb
+++ /dev/null
@@ -1,29 +0,0 @@
-# https://en.wikipedia.org/wiki/E.164
-
-RSpec.shared_examples 'e164' do
- describe 'validation' do
- it 'rejects invalid format' do
- model.send("#{attribute}=", '+.1')
- model.validate
- expect(model.errors).to be_added(attribute, :invalid)
- end
-
- it 'rejects longer than max length' do
- model.send("#{attribute}=", '1' * 18)
- model.validate
- expect(model.errors).to be_added(attribute, :too_long, count: 17)
- end
-
- it 'accepts valid format' do
- model.send("#{attribute}=", '+123.4')
- model.validate
- expect(model.errors).to_not be_added(attribute, :invalid)
- end
-
- it 'accepts max length' do
- model.send("#{attribute}=", '1' * 17)
- model.validate
- expect(model.errors).to_not be_added(attribute, :too_long, count: 17)
- end
- end
-end
diff --git a/spec/lib/validators/email_validator_spec.rb b/spec/lib/validators/email_validator_spec.rb
deleted file mode 100644
index ecaadc8a7..000000000
--- a/spec/lib/validators/email_validator_spec.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-require 'spec_helper'
-
-RSpec.describe EmailValidator do
- describe '#valid?' do
- subject(:valid) { described_class.new(email).valid? }
-
- context 'when email is valid' do
- let(:email) { 'test@test.com' }
-
- it 'returns truthy' do
- expect(valid).to be_truthy
- end
- end
-
- context 'when email is invalid' do
- let(:email) { 'invalid' }
-
- it 'returns falsey' do
- expect(valid).to be_falsey
- end
- end
- end
-end
diff --git a/spec/lib/validators/iso31661_alpha2.rb b/spec/lib/validators/iso31661_alpha2.rb
deleted file mode 100644
index 618a68cfb..000000000
--- a/spec/lib/validators/iso31661_alpha2.rb
+++ /dev/null
@@ -1,17 +0,0 @@
-# https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
-
-RSpec.shared_examples 'iso31661_alpha2' do
- describe 'validation' do
- it 'rejects invalid' do
- model.send("#{attribute}=", 'invalid')
- model.validate
- expect(model.errors).to be_added(attribute, :invalid_iso31661_alpha2)
- end
-
- it 'accepts valid' do
- model.send("#{attribute}=", 'US')
- model.validate
- expect(model.errors).to_not be_added(attribute, :invalid_iso31661_alpha2)
- end
- end
-end
diff --git a/spec/lib/validators/iso8601.rb b/spec/lib/validators/iso8601.rb
deleted file mode 100644
index 78d8f2c4a..000000000
--- a/spec/lib/validators/iso8601.rb
+++ /dev/null
@@ -1,17 +0,0 @@
-# https://en.wikipedia.org/wiki/ISO_8601
-
-RSpec.shared_examples 'iso8601' do
- describe 'validation' do
- it 'rejects invalid' do
- model.send("#{attribute}=", '2010-07-0')
- model.validate
- expect(model.errors).to be_added(attribute, :invalid_iso8601_date)
- end
-
- it 'accepts valid' do
- model.send("#{attribute}=", '2010-07-05')
- model.validate
- expect(model.errors).to_not be_added(attribute, :invalid_iso8601_date)
- end
- end
-end
diff --git a/spec/models/account_activity_spec.rb b/spec/models/account_activity_spec.rb
deleted file mode 100644
index 59e88c98b..000000000
--- a/spec/models/account_activity_spec.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe AccountActivity do
- describe 'account validation', db: false do
- subject(:account_activity) { described_class.new }
-
- it 'rejects absent' do
- account_activity.account = nil
- account_activity.validate
- expect(account_activity.errors).to have_key(:account)
- end
- end
-end
diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb
deleted file mode 100644
index 46cef0b09..000000000
--- a/spec/models/account_spec.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe Account do
- describe 'registrar validation', db: false do
- subject(:account) { described_class.new }
-
- it 'rejects absent' do
- account.registrar = nil
- account.validate
- expect(account.errors).to have_key(:registrar)
- end
- end
-end
diff --git a/spec/models/admin_user_spec.rb b/spec/models/admin_user_spec.rb
deleted file mode 100644
index 1cb8b5b12..000000000
--- a/spec/models/admin_user_spec.rb
+++ /dev/null
@@ -1,22 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe AdminUser do
- context 'with valid attributes' do
- before do
- @admin_user = create(:admin_user)
- end
-
- it 'should require password confirmation when changing password' do
- @admin_user.valid?.should == true
- @admin_user.password = 'not confirmed'
- @admin_user.valid?
- @admin_user.errors.full_messages.should match_array(["Password confirmation doesn't match Password"])
- end
- end
-
- describe '::min_password_length' do
- it 'returns minimum password length' do
- expect(described_class.min_password_length).to eq(8)
- end
- end
-end
diff --git a/spec/models/api_user_spec.rb b/spec/models/api_user_spec.rb
deleted file mode 100644
index e27cc8771..000000000
--- a/spec/models/api_user_spec.rb
+++ /dev/null
@@ -1,114 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe ApiUser do
- context 'with invalid attribute' do
- before do
- @api_user = ApiUser.new
- end
-
- it 'should not be valid' do
- @api_user.valid?
- @api_user.errors.full_messages.should match_array([
- "Password Password is missing",
- "Password is too short (minimum is #{ApiUser.min_password_length} characters)",
- "Registrar Registrar is missing",
- "Username Username is missing",
- "Roles is missing"
- ])
- end
-
- it 'should be active by default' do
- @api_user.active.should == true
- end
- end
-
- context 'with valid attributes' do
- before do
- @api_user = create(:api_user)
- end
-
- it 'should be valid' do
- @api_user.valid?
- @api_user.errors.full_messages.should match_array([])
- end
-
- it 'should be valid twice' do
- @api_user = create(:api_user)
- @api_user.valid?
- @api_user.errors.full_messages.should match_array([])
- end
- end
-
- describe '::min_password_length', db: false do
- it 'returns minimum password length' do
- expect(described_class.min_password_length).to eq(6)
- end
- end
-
- describe '#linked_users' do
- it 'returns users with the same identity code' do
- api_user = create(:api_user, id: 1, identity_code: 'test')
- create(:api_user, id: 2, identity_code: 'test')
-
- expect(api_user.linked_users.ids).to include(2)
- end
-
- it 'does not return users with another identity code' do
- api_user = create(:api_user, id: 1, identity_code: 'test')
- create(:api_user, id: 2, identity_code: 'another')
-
- expect(api_user.linked_users.ids).to_not include(2)
- end
-
- it 'does not return itself' do
- api_user = create(:api_user)
- expect(api_user.linked_users).to be_empty
- end
-
- it 'returns none if identity code is absent' do
- api_user = create(:api_user, identity_code: nil)
- create(:api_user, identity_code: nil)
-
- expect(api_user.linked_users).to be_empty
- end
-
- it 'returns none if identity code is empty' do
- api_user = create(:api_user, identity_code: '')
- create(:api_user, identity_code: '')
-
- expect(api_user.linked_users).to be_empty
- end
- end
-
- describe '#linked_with?', db: false do
- it 'returns true if identity codes match' do
- api_user = described_class.new(identity_code: 'test')
- another_api_user = described_class.new(identity_code: 'test')
-
- expect(api_user.linked_with?(another_api_user)).to be true
- end
-
- it 'returns false if identity codes do not match' do
- api_user = described_class.new(identity_code: 'test')
- another_api_user = described_class.new(identity_code: 'another-test')
-
- expect(api_user.linked_with?(another_api_user)).to be false
- end
- end
-
- describe '#login', db: false do
- it 'is alias to #username' do
- user = described_class.new(username: 'test-username')
- expect(user.login).to eq('test-username')
- end
- end
-
- describe '#registrar_name', db: false do
- it 'delegates to registrar' do
- registrar = Registrar.new(name: 'test name')
- user = described_class.new(registrar: registrar)
-
- expect(user.registrar_name).to eq('test name')
- end
- end
-end
diff --git a/spec/models/authorization/restricted_ip_spec.rb b/spec/models/authorization/restricted_ip_spec.rb
deleted file mode 100644
index b432d46e4..000000000
--- a/spec/models/authorization/restricted_ip_spec.rb
+++ /dev/null
@@ -1,98 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe Authorization::RestrictedIP do
- describe '::enabled?', db: true, settings: false do
- before do
- @original_registrar_ip_whitelist_enabled = Setting.registrar_ip_whitelist_enabled
- end
-
- after do
- Setting.registrar_ip_whitelist_enabled = @original_registrar_ip_whitelist_enabled
- end
-
- context 'when "registrar_ip_whitelist_enabled" is true' do
- before do
- Setting.registrar_ip_whitelist_enabled = true
- end
-
- specify do
- expect(described_class).to be_enabled
- end
- end
-
- context 'when "registrar_ip_whitelist_enabled" is false' do
- specify do
- expect(described_class).to_not be_enabled
- end
- end
- end
-
- describe '#can_access_registrar_area?', db: true do
- let(:registrar) { create(:registrar) }
- subject(:allowed) { described_class.new('127.0.0.1').can_access_registrar_area?(registrar) }
-
- context 'when enabled' do
- before do
- allow(described_class).to receive(:enabled?).and_return(true)
- end
-
- context 'when ip is whitelisted', db: true do
- let!(:white_ip) { create(:white_ip, registrar: registrar, ipv4: '127.0.0.1', interfaces: [WhiteIp::REGISTRAR]) }
-
- specify do
- expect(allowed).to be true
- end
- end
-
- context 'when ip is not whitelisted' do
- specify do
- expect(allowed).to be false
- end
- end
- end
-
- context 'when disabled' do
- before do
- allow(described_class).to receive(:enabled?).and_return(false)
- end
-
- specify do
- expect(allowed).to be true
- end
- end
- end
-
- describe '#can_access_registrar_area_sign_in_page?' do
- subject(:allowed) { described_class.new('127.0.0.1').can_access_registrar_area_sign_in_page? }
-
- context 'when enabled' do
- before do
- allow(described_class).to receive(:enabled?).and_return(true)
- end
-
- context 'when ip is whitelisted', db: true do
- let!(:white_ip) { create(:white_ip, ipv4: '127.0.0.1', interfaces: [WhiteIp::REGISTRAR]) }
-
- specify do
- expect(allowed).to be true
- end
- end
-
- context 'when ip is not whitelisted' do
- specify do
- expect(allowed).to be false
- end
- end
- end
-
- context 'when disabled' do
- before do
- allow(described_class).to receive(:enabled?).and_return(false)
- end
-
- specify do
- expect(allowed).to be true
- end
- end
- end
-end
diff --git a/spec/models/billing/price_spec.rb b/spec/models/billing/price_spec.rb
deleted file mode 100644
index 2854fb6b6..000000000
--- a/spec/models/billing/price_spec.rb
+++ /dev/null
@@ -1,180 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe Billing::Price do
- it { is_expected.to monetize(:price) }
- it { is_expected.to alias_attribute(:effect_time, :valid_from) }
- it { is_expected.to alias_attribute(:expire_time, :valid_to) }
-
- describe '::operation_categories', db: false do
- it 'returns operation categories' do
- categories = %w[create renew]
- expect(described_class.operation_categories).to eq(categories)
- end
- end
-
- describe '::durations', db: false do
- it 'returns durations' do
- durations = [
- '3 mons',
- '6 mons',
- '9 mons',
- '1 year',
- '2 years',
- '3 years',
- '4 years',
- '5 years',
- '6 years',
- '7 years',
- '8 years',
- '9 years',
- '10 years',
- ]
-
- expect(described_class.durations).to eq(durations)
- end
- end
-
- describe '::statuses', db: false do
- it 'returns statuses' do
- expect(described_class.statuses).to eq(%w[upcoming effective expired])
- end
- end
-
- describe '::upcoming' do
- before :example do
- travel_to Time.zone.parse('05.07.2010 00:00')
-
- create(:price, id: 1, effect_time: Time.zone.parse('05.07.2010 00:00'))
- create(:price, id: 2, effect_time: Time.zone.parse('05.07.2010 00:01'))
- end
-
- it 'returns upcoming' do
- expect(described_class.upcoming.ids).to eq([2])
- end
- end
-
- describe '::effective' do
- before :example do
- travel_to Time.zone.parse('05.07.2010 00:00')
-
- create(:price, id: 1, effect_time: '05.07.2010 00:01', expire_time: '05.07.2010 00:02')
- create(:price, id: 2, effect_time: '05.07.2010 00:00', expire_time: '05.07.2010 00:01')
- create(:price, id: 3, effect_time: '05.07.2010 00:00', expire_time: nil)
- create(:price, id: 4, effect_time: '04.07.2010', expire_time: '04.07.2010 23:59')
- end
-
- it 'returns effective' do
- expect(described_class.effective.ids).to eq([2, 3])
- end
- end
-
- describe 'zone validation', db: false do
- subject(:price) { described_class.new }
-
- it 'rejects absent' do
- price.zone = nil
- price.validate
- expect(price.errors).to have_key(:zone)
- end
- end
-
- describe 'price validation', db: false do
- subject(:price) { described_class.new }
-
- it 'rejects absent' do
- price.price = nil
- price.validate
- expect(price.errors).to have_key(:price)
- end
-
- it 'rejects negative' do
- price.price = -1
- price.validate
- expect(price.errors).to have_key(:price)
- end
-
- it 'accepts zero' do
- price.price = 0
- price.validate
- expect(price.errors).to_not have_key(:price)
- end
-
- it 'accepts greater than zero' do
- price.price = 1
- price.validate
- expect(price.errors).to_not have_key(:price)
- end
-
- it 'accepts fraction' do
- price.price = "1#{I18n.t('number.currency.format.separator')}5"
- price.validate
- expect(price.errors).to_not have_key(:price)
- end
- end
-
- describe 'duration validation', db: false do
- subject(:price) { described_class.new }
-
- it 'rejects absent' do
- price.duration = nil
- price.validate
- expect(price.errors).to have_key(:duration)
- end
-
- it 'rejects invalid' do
- price.duration = 'invalid'
- price.validate
- expect(price.errors).to have_key(:duration)
- end
-
- it 'accepts valid' do
- price.duration = described_class.durations.first
- price.validate
- expect(price.errors).to_not have_key(:duration)
- end
- end
-
- describe 'operation category validation', db: false do
- subject(:price) { described_class.new }
-
- it 'rejects absent' do
- price.operation_category = nil
- price.validate
- expect(price.errors).to have_key(:operation_category)
- end
-
- it 'rejects invalid' do
- price.operation_category = 'invalid'
- price.validate
- expect(price.errors).to have_key(:operation_category)
- end
-
- it 'accepts valid' do
- price.operation_category = described_class.operation_categories.first
- price.validate
- expect(price.errors).to_not have_key(:operation_category)
- end
- end
-
- describe '#name', db: false do
- let(:price) { described_class.new }
-
- before :example do
- allow(price).to receive(:operation_category).and_return('category')
- allow(price).to receive(:zone_name).and_return('zone')
- end
-
- it 'returns operation_category and zone name' do
- expect(price.name).to eq('category zone')
- end
- end
-
- describe '#zone_name', db: false do
- let(:price) { described_class.new(zone: zone) }
- let(:zone) { build_stubbed(:zone, origin: 'test') }
-
- it 'returns zone name' do
- expect(price.zone_name).to eq('test')
- end
- end
-end
diff --git a/spec/models/concerns/billing/price/expirable_spec.rb b/spec/models/concerns/billing/price/expirable_spec.rb
deleted file mode 100644
index 2180af432..000000000
--- a/spec/models/concerns/billing/price/expirable_spec.rb
+++ /dev/null
@@ -1,55 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe Billing::Price do
- describe '::expired' do
- before :example do
- travel_to Time.zone.parse('05.07.2010 00:00')
-
- create(:price, id: 1, expire_time: Time.zone.parse('04.07.2010 23:59'))
- create(:price, id: 2, expire_time: Time.zone.parse('05.07.2010 00:00'))
- create(:price, id: 3, expire_time: Time.zone.parse('05.07.2010 00:01'))
- end
-
- it 'returns prices with expire time in the past ' do
- expect(described_class.expired.ids).to eq([1])
- end
- end
-
- describe '#expire', db: false do
- let(:price) { described_class.new(expire_time: Time.zone.parse('06.07.2010')) }
-
- before :example do
- travel_to Time.zone.parse('05.07.2010 00:00')
- end
-
- it 'expires price' do
- expect { price.expire }.to change { price.expired? }.from(false).to(true)
- end
- end
-
- describe '#expired?', db: false do
- subject(:expired) { domain.expired? }
-
- before :example do
- travel_to Time.zone.parse('05.07.2010 00:00')
- end
-
- context 'when expire time is in the past' do
- let(:domain) { described_class.new(expire_time: Time.zone.parse('04.07.2010 23:59')) }
-
- specify { expect(expired).to be true }
- end
-
- context 'when expire time is now' do
- let(:domain) { described_class.new(expire_time: Time.zone.parse('05.07.2010 00:00')) }
-
- specify { expect(expired).to be false }
- end
-
- context 'when expire time is in the future' do
- let(:domain) { described_class.new(expire_time: Time.zone.parse('05.07.2010 00:01')) }
-
- specify { expect(expired).to be false }
- end
- end
-end
diff --git a/spec/models/concerns/domain/activatable_spec.rb b/spec/models/concerns/domain/activatable_spec.rb
deleted file mode 100644
index aeb5b0bfd..000000000
--- a/spec/models/concerns/domain/activatable_spec.rb
+++ /dev/null
@@ -1,68 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe Domain, db: false do
- describe '#active?' do
- context 'when :statuses does not contain :inactive' do
- let(:domain) { described_class.new(statuses: []) }
-
- it 'returns true' do
- expect(domain.active?).to be true
- end
- end
-
- context 'when :statuses contains :inactive' do
- let(:domain) { described_class.new(statuses: [DomainStatus::INACTIVE]) }
-
- it 'returns false' do
- expect(domain.active?).to be false
- end
- end
- end
-
- describe '#inactive?' do
- context 'when :statuses contains :inactive' do
- let(:domain) { described_class.new(statuses: [DomainStatus::INACTIVE]) }
-
- it 'returns true' do
- expect(domain.inactive?).to be true
- end
- end
-
- context 'when :statuses does not contain :inactive' do
- let(:domain) { described_class.new(statuses: []) }
-
- it 'returns false' do
- expect(domain.inactive?).to be false
- end
- end
- end
-
- describe '#activate' do
- let(:domain) { described_class.new(statuses: [DomainStatus::INACTIVE]) }
-
- it 'activates domain' do
- domain.activate
- expect(domain).to be_active
- end
- end
-
- describe '#deactivate' do
- context 'when active' do
- let(:domain) { described_class.new }
-
- it 'deactivates domain' do
- domain.deactivate
- expect(domain).to be_inactive
- end
- end
-
- context 'when inactive' do
- let(:domain) { described_class.new(statuses: [DomainStatus::INACTIVE]) }
-
- it 'does not add :inactive status' do
- domain.deactivate
- expect(domain.statuses).to eq([DomainStatus::INACTIVE])
- end
- end
- end
-end
diff --git a/spec/models/concerns/domain/expirable_spec.rb b/spec/models/concerns/domain/expirable_spec.rb
deleted file mode 100644
index 242d9818a..000000000
--- a/spec/models/concerns/domain/expirable_spec.rb
+++ /dev/null
@@ -1,65 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe Domain, db: false do
- it { is_expected.to alias_attribute(:expire_time, :valid_to) }
-
- describe '::expired', db: true do
- before :example do
- travel_to Time.zone.parse('05.07.2010 00:00')
-
- create(:zone, origin: 'ee')
-
- create(:domain, id: 1, expire_time: Time.zone.parse('04.07.2010 23:59'))
- create(:domain, id: 2, expire_time: Time.zone.parse('05.07.2010 00:00'))
- create(:domain, id: 3, expire_time: Time.zone.parse('05.07.2010 00:01'))
- end
-
- it 'returns expired domains' do
- expect(described_class.expired.ids).to eq([1, 2])
- end
- end
-
- describe '#registered?' do
- let(:domain) { described_class.new }
-
- context 'when not expired' do
- before :example do
- expect(domain).to receive(:expired?).and_return(false)
- end
-
- specify { expect(domain).to be_registered }
- end
-
- context 'when expired' do
- before :example do
- expect(domain).to receive(:expired?).and_return(true)
- end
-
- specify { expect(domain).to_not be_registered }
- end
- end
-
- describe '#expired?' do
- before :example do
- travel_to Time.zone.parse('05.07.2010 00:00')
- end
-
- context 'when :expire_time is in the past' do
- let(:domain) { described_class.new(expire_time: Time.zone.parse('04.07.2010 23:59')) }
-
- specify { expect(domain).to be_expired }
- end
-
- context 'when :expire_time is now' do
- let(:domain) { described_class.new(expire_time: Time.zone.parse('05.07.2010 00:00')) }
-
- specify { expect(domain).to be_expired }
- end
-
- context 'when :expire_time is in the future' do
- let(:domain) { described_class.new(expire_time: Time.zone.parse('05.07.2010 00:01')) }
-
- specify { expect(domain).to_not be_expired }
- end
- end
-end
diff --git a/spec/models/contact/contact_phone_spec.rb b/spec/models/contact/contact_phone_spec.rb
deleted file mode 100644
index cc1ecbec0..000000000
--- a/spec/models/contact/contact_phone_spec.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-require 'rails_helper'
-require 'lib/validators/e164'
-
-RSpec.describe Contact do
- let(:contact) { described_class.new }
-
- describe 'phone', db: false do
- it_behaves_like 'e164' do
- let(:model) { contact }
- let(:attribute) { :phone }
- end
- end
-
- describe 'phone validation', db: false do
- it 'rejects absent' do
- contact.phone = nil
- contact.validate
- expect(contact.errors).to be_added(:phone, :blank)
- end
-
- it 'rejects all zeros in country code' do
- contact.phone = '+000.1'
- contact.validate
- expect(contact.errors).to be_added(:phone, :invalid)
- end
-
- it 'rejects all zeros in subscriber number' do
- contact.phone = '+123.0'
- contact.validate
- expect(contact.errors).to be_added(:phone, :invalid)
- end
- end
-end
diff --git a/spec/models/contact/ident_spec.rb b/spec/models/contact/ident_spec.rb
deleted file mode 100644
index d26f76d0f..000000000
--- a/spec/models/contact/ident_spec.rb
+++ /dev/null
@@ -1,227 +0,0 @@
-require 'active_model'
-require 'lib/validators/iso31661_alpha2'
-require 'lib/validators/iso8601'
-
-RSpec.describe Contact::Ident, db: false do
- let(:ident) { described_class.new }
-
- describe 'country code' do
- it_behaves_like 'iso31661_alpha2' do
- let(:model) { ident }
- let(:attribute) { :country_code }
- end
- end
-
- describe 'code validation' do
- it 'rejects absent' do
- ident.code = nil
- ident.validate
- expect(ident.errors).to be_added(:code, :blank)
- end
-
- context 'when type is :birthday' do
- let(:ident) { described_class.new(type: 'birthday') }
-
- it_behaves_like 'iso8601' do
- let(:model) { ident }
- let(:attribute) { :code }
- end
- end
-
- context 'when type is not :birthday' do
- let(:ident) { described_class.new(type: 'priv') }
-
- it 'accepts any' do
- ident.code = '%123456789%'
- ident.validate
- expect(ident.errors).to_not include(:code)
- end
- end
-
- context 'when country code is EE' do
- context 'when type is :priv' do
- let(:ident) { described_class.new(country_code: 'EE', type: 'priv') }
-
- it 'rejects invalid' do
- ident.code = 'invalid'
- ident.validate
- expect(ident.errors).to be_added(:code, :invalid_national_id, country: 'Estonia')
- end
-
- it 'accepts valid' do
- ident.code = '47101010033'
- ident.validate
- expect(ident.errors).to_not be_added(:code, :invalid_national_id, country: 'Estonia')
- end
- end
-
- context 'when ident type is :org' do
- let(:ident) { described_class.new(country_code: 'EE', type: 'org') }
-
- it 'rejects invalid' do
- ident.code = '1' * 7
- ident.validate
- expect(ident.errors).to be_added(:code, :invalid_reg_no, country: 'Estonia')
- end
-
- it 'accepts valid length' do
- ident.code = '1' * 8
- ident.validate
- expect(ident.errors).to_not be_added(:code, :invalid_reg_no, country: 'Estonia')
- end
- end
- end
-
- context 'when ident country code is not EE' do
- let(:ident) { described_class.new(country_code: 'US') }
-
- it 'accepts any' do
- ident.code = 'test-123456789'
- ident.validate
- expect(ident.errors).to_not include(:code)
- end
- end
-
- it 'translates :invalid_national_id error message' do
- expect(ident.errors.generate_message(:code, :invalid_national_id, country: 'Germany'))
- .to eq('does not conform to national identification number format of Germany')
- end
-
- it 'translates :invalid_reg_no error message' do
- expect(ident.errors.generate_message(:code, :invalid_reg_no, country: 'Germany'))
- .to eq('does not conform to registration number format of Germany')
- end
- end
-
- describe 'type validation' do
- before do
- allow(described_class).to receive(:types).and_return(%w(valid))
- end
-
- it 'rejects absent' do
- ident.type = nil
- ident.validate
- expect(ident.errors).to be_added(:type, :blank)
- end
-
- it 'rejects invalid' do
- ident.type = 'invalid'
- ident.validate
- expect(ident.errors).to be_added(:type, :inclusion)
- end
-
- it 'accepts valid' do
- ident.type = 'valid'
- ident.validate
- expect(ident.errors).to_not be_added(:type, :inclusion)
- end
- end
-
- describe 'country code validation' do
- it 'rejects absent' do
- ident.country_code = nil
- ident.validate
- expect(ident.errors).to be_added(:country_code, :blank)
- end
- end
-
- describe 'mismatch validation' do
- let(:ident) { described_class.new(type: 'test', country_code: 'DE') }
-
- before do
- mismatches = [Contact::Ident::MismatchValidator::Mismatch.new('test', Country.new('DE'))]
- allow(Contact::Ident::MismatchValidator).to receive(:mismatches).and_return(mismatches)
- end
-
- it 'rejects mismatched' do
- ident.validate
- expect(ident.errors).to be_added(:base, :mismatch, type: 'test', country: 'Germany')
- end
-
- it 'accepts matched' do
- ident.validate
- expect(ident.errors).to_not be_added(:base, :mismatch, type: 'another-test', country: 'Germany')
- end
-
- it 'translates :mismatch error message' do
- expect(ident.errors.generate_message(:base, :mismatch, type: 'test', country: 'Germany'))
- .to eq('Ident type "test" is invalid for Germany')
- end
- end
-
- describe '::types' do
- it 'returns types' do
- types = %w[
- org
- priv
- birthday
- ]
-
- expect(described_class.types).to eq(types)
- end
- end
-
- describe '#birthday?' do
- context 'when type is birthday' do
- subject(:ident) { described_class.new(type: 'birthday') }
- it { is_expected.to be_birthday }
- end
-
- context 'when type is not birthday' do
- subject(:ident) { described_class.new(type: 'priv') }
- it { is_expected.to_not be_birthday }
- end
- end
-
- describe '#national_id?' do
- context 'when type is priv' do
- subject(:ident) { described_class.new(type: 'priv') }
- it { is_expected.to be_national_id }
- end
-
- context 'when type is not' do
- subject(:ident) { described_class.new(type: 'org') }
- it { is_expected.to_not be_national_id }
- end
- end
-
- describe '#reg_no?' do
- context 'when type is birthday' do
- subject(:ident) { described_class.new(type: 'org') }
- it { is_expected.to be_reg_no }
- end
-
- context 'when type is not birthday' do
- subject(:ident) { described_class.new(type: 'priv') }
- it { is_expected.to_not be_reg_no }
- end
- end
-
- describe '#country' do
- let(:ident) { described_class.new(country_code: 'US') }
-
- it 'returns country' do
- expect(ident.country).to eq(Country.new('US'))
- end
- end
-
- describe '#==' do
- let(:ident) { described_class.new(code: 'test', type: 'test', country_code: 'US') }
-
- context 'when code, type and country code are the same' do
- let(:another_ident) { described_class.new(code: 'test', type: 'test', country_code: 'US') }
-
- it 'returns true' do
- expect(ident).to eq(another_ident)
- end
- end
-
- context 'when code, type and country code are not the same' do
- let(:another_ident) { described_class.new(code: 'another-test', type: 'test', country_code: 'US') }
-
- it 'returns false' do
- expect(ident).to_not eq(another_ident)
- end
- end
- end
-end
diff --git a/spec/models/contact_spec.rb b/spec/models/contact_spec.rb
deleted file mode 100644
index 52469b28f..000000000
--- a/spec/models/contact_spec.rb
+++ /dev/null
@@ -1,414 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe Contact do
- before :example do
- create(:zone, origin: 'ee')
- end
-
- context 'with invalid attribute' do
- before :example do
- @contact = Contact.new
- end
-
- it 'should not have creator' do
- @contact.creator.should == nil
- end
-
- it 'should not have updater' do
- @contact.updator.should == nil
- end
-
- it 'should not accept long code' do
- @contact.code = 'verylongcode' * 100
- @contact.valid?
- @contact.errors[:code].should == ['Contact code is too long, max 100 characters']
- end
-
- it 'should not allow double status' do
- contact = described_class.new(statuses: %w(ok ok))
-
- contact.validate
-
- expect(contact.statuses).to eq(%w(ok))
- end
-
- it 'should have no related domain descriptions' do
- @contact.related_domain_descriptions.should == {}
- end
-
- it 'should fully validate email syntax for new records' do
- @contact.email = 'not@correct'
- @contact.valid?
- @contact.errors[:email].should == ['Email is invalid']
- end
-
- it 'should have ident updated because the logic itself is dedicated for legacy contacts ' do
- @contact.ident_updated_at.should_not == nil
- end
- end
-
- context 'with valid attributes' do
- before :example do
- @contact = create(:contact)
- end
-
- it 'should not overwrite code' do
- old_code = @contact.code
- @contact.code = 'CID:REG1:should-not-overwrite-old-code-12345'
- @contact.save.should == true
- @contact.code.should == old_code
- end
-
- it 'should have ok status by default' do
- @contact.statuses.should == %w(ok)
- end
-
- it 'should not remove ok status after save' do
- @contact.statuses.should == %w(ok)
- @contact.save
- @contact.statuses.should == %w(ok)
- end
-
- it 'should remove ok status when other non linked status present' do
- contact = create(:contact)
- contact.statuses = [Contact::SERVER_UPDATE_PROHIBITED]
- contact.statuses.should == [Contact::SERVER_UPDATE_PROHIBITED] # temp test
- contact.save
- contact.statuses.should == [Contact::SERVER_UPDATE_PROHIBITED]
- end
-
- it 'should have code' do
- registrar = create(:registrar, code: 'registrarcode')
-
- contact = build(:contact, registrar: registrar, code: 'contactcode')
- contact.generate_code
- contact.save!
-
- expect(contact.code).to eq('REGISTRARCODE:CONTACTCODE')
- end
-
- it 'should save status notes' do
- contact = create(:contact)
- contact.statuses = ['serverDeleteProhibited', 'serverUpdateProhibited']
- contact.status_notes_array = [nil, 'update manually turned off']
- contact.status_notes['serverDeleteProhibited'].should == nil
- contact.status_notes['serverUpdateProhibited'].should == 'update manually turned off'
- contact.status_notes['someotherstatus'].should == nil
- end
-
- it 'should have ident already updated because the logic itself is only for legacy contacts' do
- @contact.ident_updated_at.should_not == nil
- end
-
- it 'should have not update ident updated at when initializing old contact' do
- # creating a legacy contact
- contact = create(:contact)
- contact.update_column(:ident_updated_at, nil)
-
- Contact.find(contact.id).ident_updated_at.should == nil
- end
-
- context 'as birthday' do
- before do
- @domain = create(:domain)
- end
-
- it 'should have related domain descriptions hash' do
- contact = @domain.registrant
- contact.reload # somehow it registrant_domains are empty?
- contact.related_domain_descriptions.should == { "#{@domain.name}" => [:registrant] }
- end
-
- it 'should have related domain descriptions hash when find directly' do
- contact = @domain.registrant
- Contact.find(contact.id).related_domain_descriptions.should == { "#{@domain.name}" => [:registrant] }
- end
-
- it 'should have related domain descriptions hash' do
- contact = @domain.contacts.first
- contact.related_domain_descriptions.should == { "#{@domain.name}" => [:admin] }
- end
-
- it 'should fully validate email syntax for old records' do
- old = @contact.email
- @contact.email = 'legacy@support-not-correct'
- @contact.valid?
- @contact.errors[:email].should == ['Email is invalid']
- @contact.email = old
- end
- end
-
- context 'with callbacks' do
- context 'after create' do
- it 'should not allow to use same code' do
- registrar = create(:registrar, code: 'FIXED')
-
- create(:contact,
- registrar: registrar,
- code: 'FIXED:new-code')
- @contact = build(:contact,
- registrar: registrar,
- code: 'FIXED:new-code')
-
- @contact.validate
-
- expect(@contact.errors).to have_key(:code)
- end
-
- it 'should allow supported code format' do
- @contact = build(:contact, code: 'CID:REG1:12345', registrar: create(:registrar, code: 'FIXED'))
- @contact.valid?
- @contact.errors.full_messages.should == []
- end
-
- it 'should not allow unsupported characters in code' do
- @contact = build(:contact, code: 'unsupported!ÄÖÜ~?', registrar: create(:registrar, code: 'FIXED'))
- @contact.valid?
- @contact.errors.full_messages.should == ['Code is invalid']
- end
-
- it 'should generate code if empty code is given' do
- @contact = build(:contact, code: '')
- @contact.generate_code
- @contact.save!
- @contact.code.should_not == ''
- end
-
- it 'should not ignore empty spaces as code and generate new one' do
- @contact = build(:contact, code: ' ', registrar: create(:registrar, code: 'FIXED'))
- @contact.generate_code
- @contact.valid?.should == true
- @contact.code.should =~ /FIXED:..../
- end
- end
- end
- end
-end
-
-describe Contact, '.destroy_orphans' do
- before do
- create(:zone, origin: 'ee')
- @contact_1 = create(:contact, code: 'asd12')
- @contact_2 = create(:contact, code: 'asd13')
- end
-
- it 'destroys orphans' do
- Contact.find_orphans.count.should == 2
- Contact.destroy_orphans
- Contact.find_orphans.count.should == 0
- end
-
- it 'should find one orphan' do
- create(:domain, registrant: Registrant.find(@contact_1.id))
- Contact.find_orphans.count.should == 1
- Contact.find_orphans.last.should == @contact_2
- end
-
- it 'should find no orphans' do
- create(:domain, registrant: Registrant.find(@contact_1.id), admin_contacts: [@contact_2])
- cc = Contact.count
- Contact.find_orphans.count.should == 0
- Contact.destroy_orphans
- Contact.count.should == cc
- end
-end
-
-RSpec.describe Contact do
- it { is_expected.to alias_attribute(:kind, :ident_type) }
-
- describe '::emails' do
- before :example do
- expect(described_class).to receive(:pluck).with(:email).and_return('emails')
- end
-
- it 'returns emails' do
- expect(described_class.emails).to eq('emails')
- end
- end
-
- describe '::address_processing?' do
- before do
- Setting.address_processing = 'test'
- end
-
- it 'returns setting value' do
- expect(described_class.address_processing?).to eq('test')
- end
- end
-
- describe '::address_attribute_names', db: false do
- it 'returns address attributes' do
- attributes = %w(
- city
- street
- zip
- country_code
- state
- )
- expect(described_class.address_attribute_names).to eq(attributes)
- end
- end
-
- describe 'registrar validation', db: false do
- let(:contact) { described_class.new }
-
- it 'rejects absent' do
- contact.registrar = nil
- contact.validate
- expect(contact.errors).to have_key(:registrar)
- end
- end
-
- describe 'address validation', db: false do
- let(:contact) { described_class.new }
- subject(:errors) { contact.errors }
-
- required_attributes = %i(street city zip country_code)
-
- context 'when address processing is enabled' do
- before do
- allow(described_class).to receive(:address_processing?).and_return(true)
- end
-
- required_attributes.each do |attr_name|
- it "rejects absent #{attr_name}" do
- contact.send("#{attr_name}=", nil)
- contact.validate
- expect(errors).to have_key(attr_name)
- end
- end
- end
-
- context 'when address processing is disabled' do
- before do
- allow(described_class).to receive(:address_processing?).and_return(false)
- end
-
- required_attributes.each do |attr_name|
- it "accepts absent #{attr_name}" do
- contact.send("#{attr_name}=", nil)
- contact.validate
- expect(errors).to_not have_key(attr_name)
- end
- end
- end
- end
-
- describe 'country code validation', db: false do
- let(:contact) { described_class.new(country_code: 'test') }
-
- it 'rejects invalid' do
- contact.country_code = 'invalid'
- contact.validate
- expect(contact.errors).to have_key(:country_code)
- end
- end
-
- describe 'identifier validation', db: false do
- let(:contact) { described_class.new }
-
- it 'rejects invalid' do
- ident = Contact::Ident.new
- ident.validate
- contact.identifier = ident
- contact.validate
-
- expect(contact.errors).to be_added(:identifier, :invalid)
- end
-
- it 'accepts valid' do
- ident = Contact::Ident.new(code: 'test', type: 'priv', country_code: 'US')
- ident.validate
- contact.identifier = ident
- contact.validate
-
- expect(contact.errors).to_not be_added(:identifier, :invalid)
- end
- end
-
- describe '#remove_address' do
- let(:contact) { described_class.new(city: 'test',
- street: 'test',
- zip: 'test',
- country_code: 'test',
- state: 'test')
- }
- subject(:address_removed) { contact.attributes.slice(*described_class.address_attribute_names).compact.empty? }
-
- it 'removes address attributes' do
- contact.remove_address
- expect(address_removed).to be_truthy
- end
- end
-
- describe '#reg_no' do
- subject(:reg_no) { contact.reg_no }
-
- context 'when contact is legal entity' do
- let(:contact) { build_stubbed(:contact_legal_entity, ident: '1234') }
-
- specify { expect(reg_no).to eq('1234') }
- end
-
- context 'when contact is private entity' do
- let(:contact) { build_stubbed(:contact_private_entity, ident: '1234') }
-
- specify { expect(reg_no).to be_nil }
- end
- end
-
- describe '#id_code' do
- context 'when contact is private entity' do
- let(:contact) { build_stubbed(:contact_private_entity, ident: '1234') }
-
- specify { expect(contact.id_code).to eq('1234') }
- end
-
- context 'when contact is legal entity' do
- let(:contact) { build_stubbed(:contact_legal_entity, ident: '1234') }
-
- specify { expect(contact.id_code).to be_nil }
- end
- end
-
- describe '#ident_country' do
- let(:contact) { described_class.new(ident_country_code: 'US') }
-
- it 'returns ident country' do
- expect(contact.ident_country).to eq(Country.new('US'))
- end
- end
-
- describe '#domain_names_with_roles' do
- let(:contact) { create(:registrant) }
- subject(:domain_names) { contact.domain_names_with_roles }
-
- it 'returns associated domains with roles' do
- domain = create(:domain, registrant: contact, name: 'test.com')
- domain.admin_domain_contacts << create(:admin_domain_contact, contact: contact)
- domain.tech_domain_contacts << create(:tech_domain_contact, contact: contact)
-
- contact.reload
-
- expect(domain_names).to eq({ 'test.com' => %i[registrant admin_domain_contact tech_domain_contact].to_set })
- end
-
- it 'returns unique roles' do
- domain = create(:domain, name: 'test.com')
- 2.times { domain.admin_domain_contacts << create(:admin_domain_contact, contact: contact) }
-
- contact.reload
-
- expect(domain_names).to eq({ 'test.com' => %i[admin_domain_contact].to_set })
- end
- end
-
- it 'normalizes ident country code', db: false do
- contact = described_class.new
-
- contact.ident_country_code = 'ee'
- contact.validate
-
- expect(contact.ident_country_code).to eq('EE')
- end
-end
diff --git a/spec/models/depp/domain_spec.rb b/spec/models/depp/domain_spec.rb
deleted file mode 100644
index c780e6a00..000000000
--- a/spec/models/depp/domain_spec.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe Depp::Domain do
- describe '::default_period', db: false, settings: false do
- it 'returns default period' do
- expect(described_class.default_period).to eq('1y')
- end
- end
-end
diff --git a/spec/models/dns/zone_spec.rb b/spec/models/dns/zone_spec.rb
deleted file mode 100644
index a5d7861e6..000000000
--- a/spec/models/dns/zone_spec.rb
+++ /dev/null
@@ -1,102 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe DNS::Zone do
- describe '::origins' do
- before :example do
- expect(described_class).to receive(:pluck).with(:origin).and_return('origins')
- end
-
- it 'returns origins' do
- expect(described_class.origins).to eq('origins')
- end
- end
-
- describe 'validation' do
- let(:zone) { described_class.new }
-
- required_attributes = %i[
- origin
- ttl
- refresh
- retry
- expire
- minimum_ttl
- email
- master_nameserver
- ]
-
- required_attributes.each do |attr_name|
- it "rejects absent #{attr_name}", db: false do
- zone.send("#{attr_name}=", nil)
- zone.validate
- expect(zone.errors).to have_key(attr_name)
- end
- end
-
- integer_attributes = %i[
- ttl
- refresh
- retry
- expire
- minimum_ttl
- ]
-
- integer_attributes.each do |attr_name|
- it "rejects non-integer #{attr_name}", db: false do
- zone.send("#{attr_name}=", 'test')
- zone.validate
- expect(zone.errors).to have_key(attr_name)
- end
-
- it "accepts integer #{attr_name}", db: false do
- zone.send("#{attr_name}=", '1')
- zone.validate
- expect(zone.errors).to_not have_key(attr_name)
- end
- end
- end
-
- describe '#used?', db: false do
- let!(:zone) { described_class.new }
-
- context 'when domain uses zone' do
- before :example do
- allow(Domain).to receive(:uses_zone?).and_return(true)
- end
-
- specify { expect(zone).to be_used }
- end
-
- context 'when domain does not use zone' do
- before :example do
- allow(Domain).to receive(:uses_zone?).and_return(false)
- end
-
- specify { expect(zone).to_not be_used }
- end
- end
-
- describe 'deletion', settings: false do
- let!(:zone) { create(:zone) }
-
- context 'when zone is unused' do
- before :example do
- allow(zone).to receive(:used?).and_return(false)
- end
-
- it 'is allowed' do
- expect { zone.destroy }.to change { described_class.count }.from(1).to(0)
- end
- end
-
- context 'when zone is used' do
- before :example do
- allow(zone).to receive(:used?).and_return(true)
- end
-
- it 'is disallowed' do
- expect { zone.destroy }.to_not change { described_class.count }
- end
- end
- end
-end
diff --git a/spec/models/dnskey_spec.rb b/spec/models/dnskey_spec.rb
deleted file mode 100644
index d21968214..000000000
--- a/spec/models/dnskey_spec.rb
+++ /dev/null
@@ -1,102 +0,0 @@
-require 'rails_helper'
-
-describe Dnskey do
- before :example do
- Setting.ds_algorithm = 2
- Setting.ds_data_allowed = true
- Setting.ds_data_with_key_allowed = true
- Setting.key_data_allowed = true
-
- Setting.dnskeys_min_count = 0
- Setting.dnskeys_max_count = 9
- Setting.ns_min_count = 2
- Setting.ns_max_count = 11
-
- Setting.transfer_wait_time = 0
-
- Setting.admin_contacts_min_count = 1
- Setting.admin_contacts_max_count = 10
- Setting.tech_contacts_min_count = 0
- Setting.tech_contacts_max_count = 10
-
- Setting.client_side_status_editing_enabled = true
-
- create(:zone, origin: 'ee')
- end
-
- context 'with invalid attribute' do
- before :example do
- @dnskey = Dnskey.new
- end
-
- it 'should not be valid' do
- @dnskey.valid?
- @dnskey.errors.full_messages.should match_array([
- ])
- end
- end
-
- context 'with valid attributes' do
- before :example do
- @dnskey = create(:dnskey,
- alg: 8,
- flags: 257,
- protocol: 3,
- public_key: 'AwEAAaOf5+lz3ftsL+0CCvfJbhUF/NVsNh8BKo61oYs5fXVbuWDiH872 '\
- 'LC8uKDO92TJy7Q4TF9XMAKMMlf1GMAxlRspD749SOCTN00sqfWx1OMTu '\
- 'a28L1PerwHq7665oDJDKqR71btcGqyLKhe2QDvCdA0mENimF1NudX1BJ '\
- 'DDFi6oOZ0xE/0CuveB64I3ree7nCrwLwNs56kXC4LYoX3XdkOMKiJLL/ '\
- 'MAhcxXa60CdZLoRtTEW3z8/oBq4hEAYMCNclpbd6y/exScwBxFTdUfFk '\
- 'KsdNcmvai1lyk9vna0WQrtpYpHKMXvY9LFHaJxCOLR4umfeQ42RuTd82 lqfU6ClMeXs=',
- ds_digest_type: 2)
- end
-
- it 'should be valid' do
- @dnskey.valid?
- @dnskey.errors.full_messages.should match_array([])
- end
-
- it 'should be valid twice' do
- @dnskey = create(:dnskey)
- @dnskey.valid?
- @dnskey.errors.full_messages.should match_array([])
- end
-
- it 'generates correct DS digest and DS key tag for ria.ee' do
- d = create(:domain, name: 'ria.ee', dnskeys: [@dnskey])
- dk = d.dnskeys.last
-
- dk.generate_digest
- dk.ds_digest.should == '0B62D1BC64EFD1EE652FB102BDF1011BF514CCD9A1A0CFB7472AEA3B01F38C92'
- dk.ds_key_tag.should == '30607'
- end
-
- it 'generates correct DS digest and DS key tag for emta.ee' do
- d = create(:domain, name: 'emta.ee', dnskeys: [@dnskey])
-
- dk = d.dnskeys.last
-
- pk = 'AwEAAfB9jK8rj/FAdE3t9bYXiTLpelwlgUyxbHEtvMvhdxs+yHv0h9fE '\
- '710u94LPAeVmXumT6SZPsoo+ALKdmTexkcU9DGQvb2+sPfModBKM/num '\
- 'rScUw1FBe3HwRa9SqQpgpnCjIt0kEVKHAQdLOP86YznSA9uHAg9TTJuT '\
- 'LkUtgtmwNAVFr6/mG+smE1v5NbxPccsFwVTA/T1IyaI4Z48VGCP2WNro '\
- 'R7P6vet1gWhssirnnVYnur8DwWuMJ89o/HjzXeiEGUB8k5SOX+//67FN '\
- 'm8Zs+1ObuAfY8xAHe0L5bxluEbh1T1ARp41QX77EMKVbkcSj7nuBeY8H '\
- 'KiN8HsTvmZyDbRAQQaAJi68qOXsUIoQcpn89PoNoc60F7WlueA6ExSGX '\
- 'KMWIH6nfLXFgidoZ6HxteyUUnZbHEdULjpAoCRuUDjjUnUgFS7eRANfw '\
- 'RCcu9aLziMDp4UU61zVjtmQ7xn3G2W2+2ycqn/vEl/yFyBmHZ+7stpoC '\
- 'd6NTZUn4/ellYSm9lx/vaXdPSinARpYMWtU79Hu/VRifaCQjYkBGAMwK '\
- 'DshX4yJPjza/bqo0XV4WHj1szDFHe0tLN7g1Ojwtf5FR0zyHU3FN9uUa '\
- 'y8a+dowd/fqOQA1jXR04g2PIfFYe0VudCEpmxSV9YDoqjghHeIKUX7Jn '\
- 'KiHL5gk404S5a/Bv'
-
- dk.public_key = pk
-
- dk.save
- dk.ds_digest.should == 'D7045D3C2EF7332409A132D935C8E2834A2AAB769B35BC370FA68C9445398288'
- dk.ds_key_tag.should == '31051'
-
- dk.public_key.should == pk
- end
- end
-end
diff --git a/spec/models/domain_contact_spec.rb b/spec/models/domain_contact_spec.rb
deleted file mode 100644
index f5476c49b..000000000
--- a/spec/models/domain_contact_spec.rb
+++ /dev/null
@@ -1,95 +0,0 @@
-require 'rails_helper'
-
-describe DomainContact do
- before :example do
- @api_user = create(:domain_contact)
- end
-
- context 'with invalid attribute' do
- before :example do
- @domain_contact = DomainContact.new
- end
-
- it 'should not be valid' do
- @domain_contact.valid?
- @domain_contact.errors.full_messages.should match_array([
- "Contact Contact was not found"
- ])
- end
-
- it 'should not have creator' do
- @domain_contact.creator.should == nil
- end
-
- it 'should not have updater' do
- @domain_contact.updator.should == nil
- end
-
- it 'should not have any name' do
- @domain_contact.name.should == ''
- end
- end
-
- context 'with valid attributes' do
- before :example do
- @domain_contact = create(:domain_contact, type: 'TechDomainContact')
- end
-
- it 'should be valid' do
- @domain_contact.valid?
- @domain_contact.errors.full_messages.should match_array([])
- end
-
- it 'should be valid twice' do
- @domain_contact = create(:domain_contact)
- @domain_contact.valid?
- @domain_contact.errors.full_messages.should match_array([])
- end
-
- it 'should have Tech name' do
- @domain_contact.name.should == 'Tech'
- end
- end
-
- context 'with valid attributes with tech domain contact' do
- before :example do
- @domain_contact = create(:tech_domain_contact)
- end
-
- it 'should be valid' do
- @domain_contact.valid?
- @domain_contact.errors.full_messages.should match_array([])
- end
-
- it 'should be valid twice' do
- @domain_contact = create(:tech_domain_contact)
- @domain_contact.valid?
- @domain_contact.errors.full_messages.should match_array([])
- end
-
- it 'should have Tech name' do
- @domain_contact.name.should == 'Tech'
- end
- end
-
- context 'with valid attributes with admin domain contact' do
- before :example do
- @domain_contact = create(:admin_domain_contact)
- end
-
- it 'should be valid' do
- @domain_contact.valid?
- @domain_contact.errors.full_messages.should match_array([])
- end
-
- it 'should be valid twice' do
- @domain_contact = create(:admin_domain_contact)
- @domain_contact.valid?
- @domain_contact.errors.full_messages.should match_array([])
- end
-
- it 'should have Tech name' do
- @domain_contact.name.should == 'Admin'
- end
- end
-end
diff --git a/spec/models/domain_cron_spec.rb b/spec/models/domain_cron_spec.rb
deleted file mode 100644
index 0d25e375b..000000000
--- a/spec/models/domain_cron_spec.rb
+++ /dev/null
@@ -1,41 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe DomainCron do
- it 'should expire domains' do
- create(:zone, origin: 'ee')
- @domain = create(:domain)
-
- Setting.expire_warning_period = 1
- Setting.redemption_grace_period = 1
-
- described_class.start_expire_period
- @domain.statuses.include?(DomainStatus::EXPIRED).should == false
-
- old_valid_to = Time.zone.now - 10.days
- @domain.valid_to = old_valid_to
- @domain.save
-
- described_class.start_expire_period
- @domain.reload
- @domain.statuses.include?(DomainStatus::EXPIRED).should == true
-
- described_class.start_expire_period
- @domain.reload
- @domain.statuses.include?(DomainStatus::EXPIRED).should == true
- end
-
- it 'should start redemption grace period' do
- create(:zone, origin: 'ee')
- @domain = create(:domain)
-
- old_valid_to = Time.zone.now - 10.days
- @domain.valid_to = old_valid_to
- @domain.statuses = [DomainStatus::EXPIRED]
- @domain.outzone_at, @domain.delete_date = nil, nil
- @domain.save
-
- described_class.start_expire_period
- @domain.reload
- @domain.statuses.include?(DomainStatus::EXPIRED).should == true
- end
-end
diff --git a/spec/models/domain_spec.rb b/spec/models/domain_spec.rb
deleted file mode 100644
index ac424bcbe..000000000
--- a/spec/models/domain_spec.rb
+++ /dev/null
@@ -1,744 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe Domain do
- before :example do
- Setting.ds_algorithm = 2
- Setting.ds_data_allowed = true
- Setting.ds_data_with_key_allowed = true
- Setting.key_data_allowed = true
-
- Setting.dnskeys_min_count = 0
- Setting.dnskeys_max_count = 9
- Setting.ns_min_count = 2
- Setting.ns_max_count = 11
-
- Setting.transfer_wait_time = 0
-
- Setting.admin_contacts_min_count = 1
- Setting.admin_contacts_max_count = 10
- Setting.tech_contacts_min_count = 0
- Setting.tech_contacts_max_count = 10
-
- Setting.client_side_status_editing_enabled = true
-
- create(:zone, origin: 'ee')
- create(:zone, origin: 'pri.ee')
- create(:zone, origin: 'med.ee')
- create(:zone, origin: 'fie.ee')
- create(:zone, origin: 'com.ee')
- end
-
- context 'with invalid attribute' do
- before :example do
- @domain = Domain.new
- end
-
- it 'should not have whois body' do
- @domain.whois_record.should == nil
- end
-
- it 'should not be registrant update confirm ready' do
- @domain.registrant_update_confirmable?('123').should == false
- end
-
- it 'should not have pending update' do
- @domain.pending_update?.should == false
- end
-
- it 'should allow pending update' do
- @domain.pending_update_prohibited?.should == false
- end
-
- it 'should not have pending delete' do
- @domain.pending_delete?.should == false
- end
-
- it 'should allow pending delete' do
- @domain.pending_delete_prohibited?.should == false
- end
- end
-
- context 'with valid attributes' do
- before :example do
- @domain = create(:domain)
- end
-
- it 'should be valid' do
- @domain.valid?
- @domain.errors.full_messages.should match_array([])
- end
-
- it 'should be valid twice' do
- @domain = create(:domain)
- @domain.valid?
- @domain.errors.full_messages.should match_array([])
- end
-
- it 'should validate uniqueness of tech contacts' do
- same_contact = create(:contact, code: 'same_contact')
- domain = create(:domain)
- domain.tech_contacts << same_contact
- domain.tech_contacts << same_contact
- domain.valid?
- domain.errors.full_messages.should match_array(["Tech domain contacts is invalid"])
- end
-
- it 'should validate uniqueness of tech contacts' do
- same_contact = create(:contact, code: 'same_contact')
- domain = create(:domain)
- domain.admin_contacts << same_contact
- domain.admin_contacts << same_contact
- domain.valid?
- domain.errors.full_messages.should match_array(["Admin domain contacts is invalid"])
- end
-
- it 'should have whois body by default' do
- @domain.whois_record.present?.should == true
- end
-
- it 'should have whois json by default' do
- @domain.whois_record.json.present?.should == true
- end
-
- it 'should not be registrant update confirm ready' do
- @domain.registrant_update_confirmable?('123').should == false
- end
-
- it 'should expire domains' do
- Setting.expire_warning_period = 1
- Setting.redemption_grace_period = 1
-
- DomainCron.start_expire_period
- @domain.statuses.include?(DomainStatus::EXPIRED).should == false
-
- old_valid_to = Time.zone.now - 10.days
- @domain.valid_to = old_valid_to
- @domain.save
-
- DomainCron.start_expire_period
- @domain.reload
- @domain.statuses.include?(DomainStatus::EXPIRED).should == true
-
- DomainCron.start_expire_period
- @domain.reload
- @domain.statuses.include?(DomainStatus::EXPIRED).should == true
- end
-
- it 'should start redemption grace period' do
- old_valid_to = Time.zone.now - 10.days
- @domain.valid_to = old_valid_to
- @domain.statuses = [DomainStatus::EXPIRED]
- @domain.outzone_at, @domain.delete_date = nil, nil
- @domain.save
-
- DomainCron.start_expire_period
- @domain.reload
- @domain.statuses.include?(DomainStatus::EXPIRED).should == true
- end
-
- context 'with time period settings' do
- before :example do
- @save_days_to_renew = Setting.days_to_renew_domain_before_expire
- @save_warning_period = Setting.expire_warning_period
- @save_grace_period = Setting.redemption_grace_period
- end
-
- after :all do
- Setting.days_to_renew_domain_before_expire = @save_days_to_renew
- Setting.expire_warning_period = @save_warning_period
- Setting.redemption_grace_period = @save_grace_period
- end
-
- before :example do
- @domain.valid?
- end
-
- context 'with no renewal limit, renew anytime' do
- before do
- Setting.days_to_renew_domain_before_expire = 0
- end
-
- it 'should always renew with no policy' do
- @domain.renewable?.should be true
- end
-
- it 'should not allow to renew after force delete' do
- Setting.redemption_grace_period = 1
- @domain.schedule_force_delete
- @domain.renewable?.should be false
- end
- end
-
- context 'with renew policy' do
- before :example do
- @policy = 30
- Setting.days_to_renew_domain_before_expire = @policy
- end
-
- it 'should not allow renew before policy' do
- @domain.valid_to = Time.zone.now.beginning_of_day + @policy.days * 2
- @domain.renewable?.should be false
- end
-
- context 'ready to renew' do
- before { @domain.valid_to = Time.zone.now + (@policy - 2).days }
-
- it 'should allow renew' do
- @domain.renewable?.should be true
- end
-
- it 'should not allow to renew after force delete' do
- Setting.redemption_grace_period = 1
- @domain.schedule_force_delete
- @domain.renewable?.should be false
- end
- end
- end
- end
-
- it 'should set pending update' do
- @domain.statuses = DomainStatus::OK # restore
- @domain.save
- @domain.pending_update?.should == false
-
- @domain.set_pending_update
- @domain.pending_update?.should == true
- @domain.statuses = DomainStatus::OK # restore
- end
-
- it 'should not set pending update' do
- @domain.statuses = DomainStatus::OK # restore
- @domain.statuses << DomainStatus::CLIENT_UPDATE_PROHIBITED
- @domain.save
-
- @domain.set_pending_update.should == nil # not updated
- @domain.pending_update?.should == false
- @domain.statuses = DomainStatus::OK # restore
- end
-
- it 'should set pending delete' do
- @domain.nameservers.build(attributes_for(:nameserver))
- @domain.nameservers.build(attributes_for(:nameserver))
-
- @domain.statuses = DomainStatus::OK # restore
- @domain.save
- @domain.pending_delete?.should == false
-
- @domain.set_pending_delete
- @domain.save
- @domain.statuses.should == ['pendingDelete', 'serverHold']
- @domain.pending_delete?.should == true
- @domain.statuses = ['serverManualInzone']
- @domain.save
- @domain.set_pending_delete
- @domain.statuses.sort.should == ['pendingDelete', 'serverManualInzone'].sort
- @domain.statuses = DomainStatus::OK # restore
- end
-
- it 'should not set pending delele' do
- @domain.statuses = DomainStatus::OK # restore
- @domain.pending_delete?.should == false
- @domain.statuses << DomainStatus::CLIENT_DELETE_PROHIBITED
- @domain.save
-
- @domain.set_pending_delete.should == nil
-
- @domain.pending_delete?.should == false
- @domain.statuses = DomainStatus::OK # restore
- end
-
- it 'should notify registrar' do
- text = 'Registrant confirmed domain update: testpollmessage123.ee'
- domain = create(:domain, name: 'testpollmessage123.ee')
- domain.notify_registrar(:poll_pending_update_confirmed_by_registrant)
- domain.registrar.notifications.first.text.should == text
- end
-
- context 'about registrant update confirm' do
- before :example do
- @domain.registrant_verification_token = 123
- @domain.registrant_verification_asked_at = Time.zone.now
- @domain.statuses << DomainStatus::PENDING_UPDATE
- end
-
- it 'should be registrant update confirm ready' do
- @domain.registrant_update_confirmable?('123').should == true
- end
-
- it 'should not be registrant update confirm ready when token does not match' do
- @domain.registrant_update_confirmable?('wrong-token').should == false
- end
-
- it 'should not be registrant update confirm ready when no correct status' do
- @domain.statuses = []
- @domain.registrant_update_confirmable?('123').should == false
- end
- end
-
- context 'about registrant update confirm when domain is invalid' do
- before :example do
- @domain.registrant_verification_token = 123
- @domain.registrant_verification_asked_at = Time.zone.now
- @domain.statuses << DomainStatus::PENDING_UPDATE
- end
-
- it 'should be registrant update confirm ready' do
- @domain.registrant_update_confirmable?('123').should == true
- end
-
- it 'should not be registrant update confirm ready when token does not match' do
- @domain.registrant_update_confirmable?('wrong-token').should == false
- end
-
- it 'should not be registrant update confirm ready when no correct status' do
- @domain.statuses = []
- @domain.registrant_update_confirmable?('123').should == false
- end
- end
- end
-
- it 'validates domain name' do
- d = create(: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', 'www.ab.ee', 'test.eu', ' .ee', 'a b.ee',
- 'Ž .ee', 'test.edu.ee'
- ]
-
- invalid.each do |x|
- expect(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.each do |x|
- expect(build(:domain, name: x).valid?).to be true
- end
-
- invalid_punycode = ['xn--geaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-4we.pri.ee']
-
- invalid_punycode.each do |x|
- expect(build(:domain, name: x).valid?).to be false
- end
-
- valid_punycode = ['xn--ge-uia.pri.ee', 'xn--geaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-9te.pri.ee']
-
- valid_punycode.each do |x|
- expect(build(:domain, name: x).valid?).to be true
- end
- end
-
- it 'should not create zone origin domain' do
- d = build(:domain, name: 'ee')
- d.save.should == false
- expect(d.errors.full_messages).to include('Data management policy violation: Domain name is blocked [name]')
-
- d = build(:domain, name: 'bla')
- d.save.should == false
- expect(d.errors.full_messages).to include('Domain name Domain name is invalid')
- end
-
- it 'downcases domain' do
- d = Domain.new(name: 'TesT.Ee')
- expect(d.name).to eq('test.ee')
- expect(d.name_puny).to eq('test.ee')
- expect(d.name_dirty).to eq('test.ee')
- end
-
- it 'should be valid when name length is exatly 63 in characters' do
- d = create(:domain, name: "#{'a' * 63}.ee")
- d.valid?
- d.errors.full_messages.should == []
- end
-
- it 'should not be valid when name length is longer than 63 characters' do
- d = build(:domain, name: "#{'a' * 64}.ee")
- d.valid?
- d.errors.full_messages.should match_array([
- "Domain name Domain name is invalid",
- "Puny label Domain name is too long (maximum is 63 characters)"
- ])
- end
-
- it 'should not be valid when name length is longer than 63 characters' do
- d = build(:domain,
- name: "xn--4caaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.ee")
- d.valid?
- d.errors.full_messages.should match_array([
- "Domain name Domain name is invalid",
- "Puny label Domain name is too long (maximum is 63 characters)"
- ])
- end
-
- it 'should be valid when name length is 63 characters' do
- d = build(:domain,
- name: "õäöüšžõäöüšžõäöüšžõäöüšžõäöüšžõäöüšžõäöüšžab123.pri.ee")
- d.valid?
- d.errors.full_messages.should match_array([
- ])
- end
-
- it 'should not be valid when name length is longer than 63 punycode characters' do
- d = build(:domain, name: "#{'ä' * 63}.ee")
- d.valid?
- d.errors.full_messages.should == [
- "Puny label Domain name is too long (maximum is 63 characters)"
- ]
- end
-
- it 'should not be valid when name length is longer than 63 punycode characters' do
- d = build(:domain, name: "#{'ä' * 64}.ee")
- d.valid?
- d.errors.full_messages.should match_array([
- "Domain name Domain name is invalid",
- "Puny label Domain name is too long (maximum is 63 characters)"
- ])
- end
-
- it 'should not be valid when name length is longer than 63 punycode characters' do
- d = build(:domain, name: "#{'ä' * 63}.pri.ee")
- d.valid?
- d.errors.full_messages.should match_array([
- "Puny label Domain name is too long (maximum is 63 characters)"
- ])
- end
-
- it 'should be valid when punycode name length is not longer than 63' do
- d = build(:domain, name: "#{'ä' * 53}.pri.ee")
- d.valid?
- d.errors.full_messages.should == []
- end
-
- it 'should be valid when punycode name length is not longer than 63' do
- d = build(:domain, name: "#{'ä' * 57}.ee")
- d.valid?
- d.errors.full_messages.should == []
- end
-
- it 'should not be valid when name length is one pynicode' do
- d = build(:domain, name: "xn--4ca.ee")
- d.valid?
- d.errors.full_messages.should == ["Domain name Domain name is invalid"]
- end
-
- it 'should not be valid with at character' do
- d = build(:domain, name: 'dass@sf.ee')
- d.valid?
- d.errors.full_messages.should == ["Domain name Domain name is invalid"]
- end
-
- it 'should not be valid with invalid characters' do
- d = build(:domain, name: '@ba)s(?ä_:-df.ee')
- d.valid?
- d.errors.full_messages.should == ["Domain name Domain name is invalid"]
- end
-
- it 'should be valid when name length is two pynicodes' do
- d = build(:domain, name: "xn--4caa.ee")
- d.valid?
- d.errors.full_messages.should == []
- end
-
- it 'should be valid when name length is two pynicodes' do
- d = build(:domain, name: "xn--4ca0b.ee")
- d.valid?
- d.errors.full_messages.should == []
- end
-
- it 'does not create a reserved domain' do
- create(:reserved_domain, name: 'test.ee')
-
- domain = build(:domain, name: 'test.ee')
- domain.validate
-
- expect(domain.errors[:base]).to include('Required parameter missing; reserved>pw element required for reserved domains')
- end
-
- it 'manages statuses automatically' do
- d = build(:domain)
-
- d.nameservers.build(attributes_for(:nameserver))
- d.nameservers.build(attributes_for(:nameserver))
-
- d.save!
-
- expect(d.statuses.count).to eq(1)
- expect(d.statuses.first).to eq(DomainStatus::OK)
-
- d.period = 2
- d.save
-
- d.reload
- expect(d.statuses.count).to eq(1)
- expect(d.statuses.first).to eq(DomainStatus::OK)
-
- d.statuses << DomainStatus::CLIENT_DELETE_PROHIBITED
- d.save
-
- d.reload
-
- expect(d.statuses.count).to eq(1)
- expect(d.statuses.first).to eq(DomainStatus::CLIENT_DELETE_PROHIBITED)
- end
-end
-
-RSpec.describe Domain do
- it { is_expected.to alias_attribute(:on_hold_time, :outzone_at) }
- it { is_expected.to alias_attribute(:outzone_time, :outzone_at) }
-
- describe 'registrar validation', db: false do
- let(:domain) { described_class.new }
-
- it 'rejects absent' do
- domain.registrar = nil
- domain.validate
- expect(domain.errors).to have_key(:registrar)
- end
- end
-
- describe 'registrant validation', db: false do
- let(:domain) { described_class.new }
-
- it 'rejects absent' do
- domain.registrant = nil
- domain.validate
- expect(domain.errors).to have_key(:registrant)
- end
- end
-
- describe 'period validation', db: false do
- let(:domain) { described_class.new }
-
- it 'rejects absent' do
- domain.period = nil
- domain.validate
- expect(domain.errors).to have_key(:period)
- end
-
- it 'rejects fractional' do
- domain.period = 1.1
- domain.validate
- expect(domain.errors).to have_key(:period)
- end
-
- it 'accepts integer' do
- domain.period = 1
- domain.validate
- expect(domain.errors).to_not have_key(:period)
- end
- end
-
- describe 'admin contact count validation' do
- let(:domain) { described_class.new }
-
- before :example do
- Setting.admin_contacts_min_count = 1
- Setting.admin_contacts_max_count = 2
- end
-
- it 'rejects less than min' do
- domain.validate
- expect(domain.errors).to have_key(:admin_domain_contacts)
- end
-
- it 'rejects more than max' do
- (Setting.admin_contacts_max_count + 1).times { domain.admin_domain_contacts << build(:admin_domain_contact) }
- domain.validate
- expect(domain.errors).to have_key(:admin_domain_contacts)
- end
-
- it 'accepts min' do
- Setting.admin_contacts_min_count.times { domain.admin_domain_contacts << build(:admin_domain_contact) }
- domain.validate
- expect(domain.errors).to_not have_key(:admin_domain_contacts)
- end
-
- it 'accepts max' do
- Setting.admin_contacts_max_count.times { domain.admin_domain_contacts << build(:admin_domain_contact) }
- domain.validate
- expect(domain.errors).to_not have_key(:admin_domain_contacts)
- end
- end
-
- describe 'nameserver validation', db: true do
- let(:domain) { described_class.new(name: 'whatever.test') }
-
- it 'rejects less than min' do
- Setting.ns_min_count = 2
- domain.nameservers.build(attributes_for(:nameserver))
- domain.validate
- expect(domain.errors).to have_key(:nameservers)
- end
-
- it 'rejects more than max' do
- Setting.ns_min_count = 1
- Setting.ns_max_count = 1
- domain.nameservers.build(attributes_for(:nameserver))
- domain.nameservers.build(attributes_for(:nameserver))
- domain.validate
- expect(domain.errors).to have_key(:nameservers)
- end
-
- it 'accepts min' do
- Setting.ns_min_count = 1
- domain.nameservers.build(attributes_for(:nameserver))
- domain.validate
- expect(domain.errors).to_not have_key(:nameservers)
- end
-
- it 'accepts max' do
- Setting.ns_min_count = 1
- Setting.ns_max_count = 2
- domain.nameservers.build(attributes_for(:nameserver))
- domain.nameservers.build(attributes_for(:nameserver))
- domain.validate
- expect(domain.errors).to_not have_key(:nameservers)
- end
-
- context 'when nameserver is optional' do
- before :example do
- allow(Domain).to receive(:nameserver_required?).and_return(false)
- end
-
- it 'rejects less than min' do
- Setting.ns_min_count = 2
- domain.nameservers.build(attributes_for(:nameserver))
- domain.validate
- expect(domain.errors).to have_key(:nameservers)
- end
-
- it 'accepts absent' do
- domain.validate
- expect(domain.errors).to_not have_key(:nameservers)
- end
- end
-
- context 'when nameserver is required' do
- before :example do
- allow(Domain).to receive(:nameserver_required?).and_return(true)
- end
-
- it 'rejects absent' do
- domain.validate
- expect(domain.errors).to have_key(:nameservers)
- end
- end
- end
-
- describe '::nameserver_required?' do
- before do
- Setting.nameserver_required = 'test'
- end
-
- it 'returns setting value' do
- expect(described_class.nameserver_required?).to eq('test')
- end
- end
-
- describe '::expire_warning_period', db: true do
- before :example do
- Setting.expire_warning_period = 1
- end
-
- it 'returns expire warning period' do
- expect(described_class.expire_warning_period).to eq(1.day)
- end
- end
-
- describe '::redemption_grace_period', db: true do
- before :example do
- Setting.redemption_grace_period = 1
- end
-
- it 'returns redemption grace period' do
- expect(described_class.redemption_grace_period).to eq(1.day)
- end
- end
-
- describe '#set_server_hold' do
- let(:domain) { described_class.new }
-
- before :example do
- travel_to Time.zone.parse('05.07.2010')
- domain.set_server_hold
- end
-
- it 'sets corresponding status' do
- expect(domain.statuses).to include(DomainStatus::SERVER_HOLD)
- end
-
- it 'sets :outzone_at to now' do
- expect(domain.outzone_at).to eq(Time.zone.parse('05.07.2010'))
- end
- end
-
- describe '#set_graceful_expired' do
- let(:domain) { described_class.new }
-
- before :example do
- expect(described_class).to receive(:expire_warning_period).and_return(1.day)
- expect(described_class).to receive(:redemption_grace_period).and_return(2.days)
- expect(domain).to receive(:valid_to).and_return(Time.zone.parse('05.07.2010 10:30'))
-
- domain.set_graceful_expired
- end
-
- it 'sets :outzone_at to :valid_to + expire warning period' do
- expect(domain.outzone_at).to eq(Time.zone.parse('06.07.2010 10:30'))
- end
-
- it 'sets :delete_date to :outzone_at + redemption grace period' do
- expect(domain.delete_date).to eq(Date.parse('08.07.2010'))
- end
- end
-
- describe '::outzone_candidates', db: true do
- before :example do
- travel_to Time.zone.parse('05.07.2010 00:00')
-
- create(:zone, origin: 'ee')
-
- create(:domain, id: 1, outzone_time: Time.zone.parse('04.07.2010 23:59'))
- create(:domain, id: 2, outzone_time: Time.zone.parse('05.07.2010 00:00'))
- create(:domain, id: 3, outzone_time: Time.zone.parse('05.07.2010 00:01'))
- end
-
- it 'returns domains with outzone time in the past' do
- expect(described_class.outzone_candidates.ids).to eq([1])
- end
- end
-
- describe '::uses_zone?', db: true do
- let!(:zone) { create(:zone, origin: 'domain.tld') }
-
- context 'when zone is used' do
- let!(:domain) { create(:domain, name: 'test.domain.tld') }
- specify { expect(described_class.uses_zone?(zone)).to be true }
- end
-
- context 'when zone is unused' do
- specify { expect(described_class.uses_zone?(zone)).to be false }
- end
- end
-
- describe '#new_registrant_email' do
- let(:domain) { described_class.new(pending_json: { new_registrant_email: 'test@test.com' }) }
-
- it 'returns new registrant\'s email' do
- expect(domain.new_registrant_email).to eq('test@test.com')
- end
- end
-
- describe '#new_registrant_id' do
- let(:domain) { described_class.new(pending_json: { new_registrant_id: 1 }) }
-
- it 'returns new registrant\'s id' do
- expect(domain.new_registrant_id).to eq(1)
- end
- end
-end
diff --git a/spec/models/epp/domain_spec.rb b/spec/models/epp/domain_spec.rb
deleted file mode 100644
index 402305527..000000000
--- a/spec/models/epp/domain_spec.rb
+++ /dev/null
@@ -1,29 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe Epp::Domain, db: false do
- describe '::new_from_epp' do
- let(:domain_blueprint) { described_class.new }
- subject(:domain) { described_class.new_from_epp(nil, nil) }
-
- before :example do
- travel_to Time.zone.parse('05.07.2010')
-
- domain_blueprint.period = 1
- domain_blueprint.period_unit = 'y'
-
- expect(described_class).to receive(:new).and_return(domain_blueprint)
- expect(domain_blueprint).to receive(:attrs_from).and_return({})
- expect(domain_blueprint).to receive(:attach_default_contacts)
- end
-
- describe 'domain' do
- it 'has :registered_at set to now' do
- expect(domain.registered_at).to eq(Time.zone.parse('05.07.2010'))
- end
-
- it 'has :valid_to set to the beginning of next day after :registered_at' do
- expect(domain.valid_to).to eq(Time.zone.parse('06.07.2011 00:00'))
- end
- end
- end
-end
diff --git a/spec/models/epp_contact_spec.rb b/spec/models/epp_contact_spec.rb
deleted file mode 100644
index 401a63cc6..000000000
--- a/spec/models/epp_contact_spec.rb
+++ /dev/null
@@ -1,32 +0,0 @@
-require 'rails_helper'
-
-describe Epp::Contact, '.check_availability' do
- before do
- create(:contact, code: 'asd12')
- create(:contact, code: 'asd13')
- end
-
- it 'should return array if argument is string' do
- response = Epp::Contact.check_availability('asd12')
- response.class.should == Array
- response.length.should == 1
- end
-
- it 'should return in_use and available codes' do
- code = Contact.first.code
- code_ = Contact.last.code
-
- response = Epp::Contact.check_availability([code, code_, 'asd14'])
- response.class.should == Array
- response.length.should == 3
-
- response[0][:avail].should == 0
- response[0][:code].should == code
-
- response[1][:avail].should == 0
- response[1][:code].should == code_
-
- response[2][:avail].should == 1
- response[2][:code].should == 'asd14'
- end
-end
diff --git a/spec/models/keyrelay_spec.rb b/spec/models/keyrelay_spec.rb
deleted file mode 100644
index fc388dfed..000000000
--- a/spec/models/keyrelay_spec.rb
+++ /dev/null
@@ -1,77 +0,0 @@
-require 'rails_helper'
-
-describe Keyrelay do
- before :example do
- Setting.ds_algorithm = 2
- Setting.ds_data_allowed = true
- Setting.ds_data_with_key_allowed = true
- Setting.key_data_allowed = true
-
- Setting.dnskeys_min_count = 0
- Setting.dnskeys_max_count = 9
- Setting.ns_min_count = 2
- Setting.ns_max_count = 11
-
- Setting.transfer_wait_time = 0
-
- Setting.admin_contacts_min_count = 1
- Setting.admin_contacts_max_count = 10
- Setting.tech_contacts_min_count = 0
- Setting.tech_contacts_max_count = 10
-
- Setting.client_side_status_editing_enabled = true
-
- create(:zone, origin: 'ee')
- end
-
- context 'with invalid attribute' do
- before :example do
- @keyrelay = Keyrelay.new
- end
-
- it 'should not be valid' do
- @keyrelay.valid?
- @keyrelay.errors.full_messages.should match_array([
- "Auth info pw Password is missing",
- "Domain is missing",
- "Key data alg Algorithm is missing",
- "Key data flags Flag is missing",
- "Key data protocol Protocol is missing",
- "Key data public key Public key is missing",
- "Only one parameter allowed: relative or absolute"
- ])
- end
- end
-
- context 'with valid attributes' do
- before :example do
- @keyrelay = create(:keyrelay)
- end
-
- it 'should be valid' do
- @keyrelay.valid?
- @keyrelay.errors.full_messages.should match_array([])
- end
-
- it 'should be valid twice' do
- @keyrelay = create(:keyrelay)
- @keyrelay.valid?
- @keyrelay.errors.full_messages.should match_array([])
- end
-
- it 'is in pending status' do
- @keyrelay.status.should == 'pending'
- end
- end
-
- it 'is in expired status' do
- kr = create(:keyrelay, pa_date: Time.zone.now - 2.weeks)
- expect(kr.status).to eq('expired')
- end
-
- it 'does not accept invalid relative expiry' do
- kr = build(:keyrelay, expiry_relative: 'adf')
- expect(kr.save).to eq(false)
- expect(kr.errors[:expiry_relative].first).to eq('Expiry relative must be compatible to ISO 8601')
- end
-end
diff --git a/spec/models/legal_document_spec.rb b/spec/models/legal_document_spec.rb
deleted file mode 100644
index 03c83bc89..000000000
--- a/spec/models/legal_document_spec.rb
+++ /dev/null
@@ -1,68 +0,0 @@
-require 'rails_helper'
-
-describe LegalDocument do
- context 'tasks' do
- it 'make files uniq' do
- create(:zone, origin: 'ee')
- create(:zone, origin: 'pri.ee')
- create(:zone, origin: 'med.ee')
- create(:zone, origin: 'fie.ee')
- create(:zone, origin: 'com.ee')
- LegalDocument.explicitly_write_file = true
- PaperTrail.enabled = true
-
- domain = create(:domain)
- domain2 = create(:domain)
- legals = []
- legals << original = domain.legal_documents.create!(body: Base64.encode64('S' * 4.kilobytes))
- legals << copy = domain.legal_documents.create!(body: Base64.encode64('S' * 4.kilobytes))
- legals << skipping_as_different_domain = domain2.legal_documents.create!(body: Base64.encode64('S' * 4.kilobytes))
- legals << skipping_as_different = domain.legal_documents.create!(body: Base64.encode64('D' * 4.kilobytes))
- legals << skipping_as_no_checksum = domain.legal_documents.create!(checksum: nil, body: Base64.encode64('S' * 4.kilobytes))
- legals << skipping_as_no_checksum2 = domain.legal_documents.create!(checksum: "", body: Base64.encode64('S' * 4.kilobytes))
- legals << registrant_copy = domain.registrant.legal_documents.create!(body: Base64.encode64('S' * 4.kilobytes))
- legals << registrant_skipping_as_different = domain.registrant.legal_documents.create!(body: Base64.encode64('Q' * 4.kilobytes))
- legals << tech_copy = domain.tech_contacts.first.legal_documents.create!(body: Base64.encode64('S' * 4.kilobytes))
- legals << tech_skipping_as_different = domain.tech_contacts.first.legal_documents.create!(body: Base64.encode64('W' * 4.kilobytes))
- legals << admin_copy = domain.admin_contacts.first.legal_documents.create!(body: Base64.encode64('S' * 4.kilobytes))
- legals << admin_skipping_as_different = domain.admin_contacts.first.legal_documents.create!(body: Base64.encode64('E' * 4.kilobytes))
- legals << new_second_tech_contact = domain2.tech_contacts.first.legal_documents.create!(body: Base64.encode64('S' * 4.kilobytes))
- domain.tech_contacts << domain2.tech_contacts.first
-
-
- # writing nesting to history
- domain.update(updated_at: Time.now)
- domain2.update(updated_at: Time.now)
- domain.reload
-
- skipping_as_no_checksum.update_columns(checksum: nil)
- skipping_as_no_checksum2.update_columns(checksum: "")
- skipping_as_no_checksum.reload
- skipping_as_no_checksum2.reload
- skipping_as_no_checksum.path.should_not == skipping_as_no_checksum2.path
-
- skipping_as_no_checksum.checksum.should == nil
- skipping_as_no_checksum2.checksum.should == ""
- original.checksum.should == copy.checksum
- original.checksum.should_not == skipping_as_different.checksum
- domain.tech_contacts.count.should == 2
-
- LegalDocument.remove_duplicates
- LegalDocument.remove_duplicates
- LegalDocument.remove_duplicates
- legals.each(&:reload)
-
- skipping_as_no_checksum.path.should_not be(skipping_as_no_checksum2.path)
- original.path.should_not == skipping_as_different.path
- original.path.should_not == skipping_as_different_domain.path
- original.path.should_not == registrant_skipping_as_different.path
- original.path.should_not == tech_skipping_as_different.path
- original.path.should_not == admin_skipping_as_different.path
- original.path.should == copy.path
- original.path.should == registrant_copy.path
-
- skipping_as_different_domain.path.should_not == new_second_tech_contact.path
- end
- end
-
-end
diff --git a/spec/models/registrant_verification_spec.rb b/spec/models/registrant_verification_spec.rb
deleted file mode 100644
index 6438fda84..000000000
--- a/spec/models/registrant_verification_spec.rb
+++ /dev/null
@@ -1,59 +0,0 @@
-require 'rails_helper'
-
-describe RegistrantVerification do
- before :example do
- Setting.ds_algorithm = 2
- Setting.ds_data_allowed = true
- Setting.ds_data_with_key_allowed = true
- Setting.key_data_allowed = true
-
- Setting.dnskeys_min_count = 0
- Setting.dnskeys_max_count = 9
- Setting.ns_min_count = 2
- Setting.ns_max_count = 11
-
- Setting.transfer_wait_time = 0
-
- Setting.admin_contacts_min_count = 1
- Setting.admin_contacts_max_count = 10
- Setting.tech_contacts_min_count = 0
- Setting.tech_contacts_max_count = 10
-
- Setting.client_side_status_editing_enabled = true
-
- create(:zone, origin: 'ee')
- end
- context 'with invalid attribute' do
- before :example do
- @registrant_verification = RegistrantVerification.new
- end
-
- it 'should not be valid' do
- @registrant_verification.valid?
- @registrant_verification.errors.full_messages.should match_array([
- "Domain name is missing",
- "Verification token is missing",
- "Action is missing",
- "Action type is missing",
- "Domain is missing"
- ])
- end
- end
-
- context 'with valid attributes' do
- before :example do
- @registrant_verification = create(:registrant_verification)
- end
-
- it 'should be valid' do
- @registrant_verification.valid?
- @registrant_verification.errors.full_messages.should match_array([])
- end
-
- it 'should be valid twice' do
- @registrant_verification = create(:registrant_verification)
- @registrant_verification.valid?
- @registrant_verification.errors.full_messages.should match_array([])
- end
- end
-end
diff --git a/spec/models/setting_spec.rb b/spec/models/setting_spec.rb
deleted file mode 100644
index fd392c6d2..000000000
--- a/spec/models/setting_spec.rb
+++ /dev/null
@@ -1,60 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe Setting do
- describe 'integer_settings', db: false do
- it 'returns integer settings' do
- settings = %i[
- admin_contacts_min_count
- admin_contacts_max_count
- tech_contacts_min_count
- tech_contacts_max_count
- orphans_contacts_in_months
- ds_digest_type
- dnskeys_min_count
- dnskeys_max_count
- ns_min_count
- ns_max_count
- transfer_wait_time
- invoice_number_min
- invoice_number_max
- days_to_keep_invoices_active
- days_to_keep_overdue_invoices_active
- days_to_renew_domain_before_expire
- expire_warning_period
- redemption_grace_period
- expire_pending_confirmation
- ]
-
- expect(described_class.integer_settings).to eq(settings)
- end
- end
-
- describe 'float_settings', db: false do
- it 'returns float settings' do
- settings = %i[
- registry_vat_prc
- minimum_deposit
- ]
-
- expect(described_class.float_settings).to eq(settings)
- end
- end
-
- describe 'boolean_settings', db: false do
- it 'returns boolean settings' do
- settings = %i[
- ds_data_allowed
- key_data_allowed
- client_side_status_editing_enabled
- registrar_ip_whitelist_enabled
- api_ip_whitelist_enabled
- request_confrimation_on_registrant_change_enabled
- request_confirmation_on_domain_deletion_enabled
- nameserver_required
- address_processing
- ]
-
- expect(described_class.boolean_settings).to eq(settings)
- end
- end
-end
diff --git a/spec/models/white_ip_spec.rb b/spec/models/white_ip_spec.rb
deleted file mode 100644
index fa28991f1..000000000
--- a/spec/models/white_ip_spec.rb
+++ /dev/null
@@ -1,53 +0,0 @@
-require 'rails_helper'
-
-describe WhiteIp do
- context 'with invalid attribute' do
- before :all do
- @white_ip = WhiteIp.new
- end
-
- it 'is not valid' do
- @white_ip.valid?
- @white_ip.errors.full_messages.should match_array([
- 'IPv4 or IPv6 must be present'
- ])
- end
-
- it 'returns an error with invalid ips' do
- @white_ip.ipv4 = 'bla'
- @white_ip.ipv6 = 'bla'
-
- @white_ip.valid?
- @white_ip.errors[:ipv4].should == ['is invalid']
- @white_ip.errors[:ipv6].should == ['is invalid']
- end
- end
-
- describe '#include_ip?' do
- context 'when given ip v4 exists' do
- before do
- create(:white_ip, ipv4: '127.0.0.1')
- end
-
- specify do
- expect(described_class.include_ip?('127.0.0.1')).to be true
- end
- end
-
- context 'when given ip v6 exists' do
- before do
- create(:white_ip, ipv6: '::1')
- end
-
- specify do
- expect(described_class.include_ip?('::1')).to be true
- end
- end
-
- context 'when given ip does not exists', db: false do
- specify do
- expect(described_class.include_ip?('127.0.0.1')).to be false
- end
- end
- end
-end
diff --git a/spec/presenters/domain_presenter_spec.rb b/spec/presenters/domain_presenter_spec.rb
deleted file mode 100644
index 2a1b1bc45..000000000
--- a/spec/presenters/domain_presenter_spec.rb
+++ /dev/null
@@ -1,98 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe DomainPresenter do
- let(:presenter) { described_class.new(domain: domain, view: view) }
-
- describe '#expire_time' do
- let(:domain) { instance_double(Domain, expire_time: Time.zone.parse('05.07.2010')) }
-
- it 'returns localized time' do
- expect(view).to receive(:l).with(Time.zone.parse('05.07.2010')).and_return('expire time')
- expect(presenter.expire_time).to eq('expire time')
- end
- end
-
- describe '#expire_date' do
- let(:domain) { instance_double(Domain, expire_time: Time.zone.parse('05.07.2010')) }
-
- it 'returns localized date' do
- expect(view).to receive(:l).with(Time.zone.parse('05.07.2010'), format: :date).and_return('expire date')
- expect(presenter.expire_date).to eq('expire date')
- end
- end
-
- describe '#on_hold_date' do
- subject(:on_hold_date) { presenter.on_hold_date }
-
- context 'when present' do
- let(:domain) { instance_double(Domain, on_hold_time: '05.07.2010') }
-
- it 'returns localized date' do
- expect(view).to receive(:l).with('05.07.2010', format: :date).and_return('on hold date')
- expect(on_hold_date).to eq('on hold date')
- end
- end
-
- context 'when absent' do
- let(:domain) { instance_double(Domain, on_hold_time: nil) }
-
- specify { expect(on_hold_date).to be_nil }
- end
- end
-
- describe '#delete_date' do
- subject(:delete_date) { presenter.delete_date }
-
- context 'when present' do
- let(:domain) { instance_double(Domain, delete_date: '05.07.2010') }
-
- it 'returns localized date' do
- expect(view).to receive(:l).with('05.07.2010').and_return('delete date')
- expect(delete_date).to eq('delete date')
- end
- end
-
- context 'when absent' do
- let(:domain) { instance_double(Domain, delete_date: nil) }
-
- specify { expect(delete_date).to be_nil }
- end
- end
-
- describe '#force_delete_date' do
- subject(:force_delete_date) { presenter.force_delete_date }
-
- context 'when present' do
- let(:domain) { instance_double(Domain, force_delete_date: '05.07.2010', force_delete_scheduled?: true) }
-
- it 'returns localized date' do
- expect(view).to receive(:l).with('05.07.2010').and_return('delete date')
- expect(force_delete_date).to eq('delete date')
- end
- end
-
- context 'when absent' do
- let(:domain) { instance_double(Domain, force_delete_date: nil, force_delete_scheduled?: false) }
-
- specify { expect(force_delete_date).to be_nil }
- end
- end
-
- domain_delegatable_attributes = %i(
- name
- transfer_code
- registrant
- registrant_id
- )
-
- domain_delegatable_attributes.each do |attribute_name|
- describe "##{attribute_name}" do
- let(:domain) { instance_spy(Domain) }
-
- it 'delegates to domain' do
- presenter.send(attribute_name)
- expect(domain).to have_received(attribute_name)
- end
- end
- end
-end
diff --git a/spec/presenters/registrant_presenter_spec.rb b/spec/presenters/registrant_presenter_spec.rb
deleted file mode 100644
index 224a0504f..000000000
--- a/spec/presenters/registrant_presenter_spec.rb
+++ /dev/null
@@ -1,81 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe RegistrantPresenter do
- let(:registrant) { instance_double(Registrant) }
- let(:presenter) { described_class.new(registrant: registrant, view: view) }
-
- describe '#country' do
- let(:country) { instance_double(Country) }
-
- before :example do
- allow(registrant).to receive(:country).and_return(country)
- end
-
- it 'returns country name in current locale by default' do
- expect(country).to receive(:translation).with(I18n.locale).and_return('test country')
- expect(presenter.country).to eq('test country')
- end
-
- it 'returns country name in given locale' do
- expect(country).to receive(:translation).with(:de).and_return('test country')
- expect(presenter.country(locale: :de)).to eq('test country')
- end
- end
-
- describe '#ident_country' do
- let(:ident_country) { instance_double(Country) }
-
- before :example do
- allow(registrant).to receive(:ident_country).and_return(ident_country)
- end
-
- it 'returns country name in current locale by default' do
- expect(ident_country).to receive(:translation).with(I18n.locale).and_return('test country')
- expect(presenter.ident_country).to eq('test country')
- end
-
- it 'returns country name in given locale' do
- expect(ident_country).to receive(:translation).with(:de).and_return('test country')
- expect(presenter.ident_country(locale: :de)).to eq('test country')
- end
- end
-
- describe '#domain_names_with_roles' do
- before :example do
- roles = %i[registrant admin_domain_contact tech_domain_contact]
- allow(registrant).to receive(:domain_names_with_roles)
- .and_return({ 'test.com' => roles,
- 'test.org' => %i[registrant] })
- end
-
- it 'returns domain names with unique roles in current locale by default' do
- text = "test.com (Registrant, Administrative contact, Technical contact)" \
- "\ntest.org (Registrant)"
- expect(presenter.domain_names_with_roles).to eq(text)
- end
- end
-
- registrant_delegatable_attributes = %i(
- name
- ident
- phone
- email
- priv?
- street
- city
- state
- zip
- id_code
- reg_no
- linked?
- )
-
- registrant_delegatable_attributes.each do |attr_name|
- describe "##{attr_name}" do
- it 'delegates to registrant' do
- expect(registrant).to receive(attr_name).and_return('test')
- expect(presenter.send(attr_name)).to eq('test')
- end
- end
- end
-end
diff --git a/spec/presenters/registrar_presenter_spec.rb b/spec/presenters/registrar_presenter_spec.rb
deleted file mode 100644
index 8c0196c51..000000000
--- a/spec/presenters/registrar_presenter_spec.rb
+++ /dev/null
@@ -1,34 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe RegistrarPresenter do
- let(:registrar) { instance_double(Registrar) }
- let(:presenter) { described_class.new(registrar: registrar, view: view) }
-
- describe '#name' do
- it 'returns name' do
- expect(registrar).to receive(:name).and_return('test name')
- expect(presenter.name).to eq('test name')
- end
- end
-
- describe '#email' do
- it 'returns email' do
- expect(registrar).to receive(:email).and_return('test email')
- expect(presenter.email).to eq('test email')
- end
- end
-
- describe '#phone' do
- it 'returns phone' do
- expect(registrar).to receive(:phone).and_return('test phone')
- expect(presenter.phone).to eq('test phone')
- end
- end
-
- describe '#website' do
- it 'returns website' do
- expect(registrar).to receive(:website).and_return('test')
- expect(presenter.website).to eq('test')
- end
- end
-end
diff --git a/spec/presenters/user_presenter_spec.rb b/spec/presenters/user_presenter_spec.rb
deleted file mode 100644
index ba9e1673f..000000000
--- a/spec/presenters/user_presenter_spec.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe UserPresenter do
- let(:presenter) { described_class.new(user: user, view: view) }
-
- describe '#login_with_role' do
- let(:user) { instance_double(ApiUser,
- login: 'login',
- roles: %w[role],
- registrar_name: 'registrar') }
-
- it 'returns username with role and registrar' do
- expect(presenter.login_with_role).to eq('login (role) - registrar')
- end
- end
-end
diff --git a/spec/requests/admin/billing/prices/create_spec.rb b/spec/requests/admin/billing/prices/create_spec.rb
deleted file mode 100644
index 14fe63c08..000000000
--- a/spec/requests/admin/billing/prices/create_spec.rb
+++ /dev/null
@@ -1,51 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe 'admin price create', settings: false do
- let!(:zone) { create(:zone, id: 1, origin: 'test') }
- subject(:price) { Billing::Price.first }
-
- before :example do
- sign_in_to_admin_area
- end
-
- it 'creates new price' do
- expect { post admin_prices_path, price: attributes_for(:price, zone_id: '1') }
- .to change { Billing::Price.count }.from(0).to(1)
- end
-
- it 'saves zone' do
- post admin_prices_path, price: attributes_for(:price, zone_id: '1')
- expect(price.zone_id).to eq(1)
- end
-
- it 'saves operation category' do
- post admin_prices_path, price:
- attributes_for(:price, zone_id: '1', operation_category: Billing::Price.operation_categories.first)
- expect(price.operation_category).to eq(Billing::Price.operation_categories.first)
- end
-
- it 'saves duration in months' do
- post admin_prices_path, price: attributes_for(:price, zone_id: '1', duration: '3 mons')
- expect(price.duration).to eq('3 mons')
- end
-
- it 'saves duration in years' do
- post admin_prices_path, price: attributes_for(:price, zone_id: '1', duration: '1 year')
- expect(price.duration).to eq('1 year')
- end
-
- it 'saves valid_from' do
- post admin_prices_path, price: attributes_for(:price, zone_id: '1', valid_from: '2010-07-06')
- expect(price.valid_from).to eq(Time.zone.parse('06.07.2010'))
- end
-
- it 'saves valid_to' do
- post admin_prices_path, price: attributes_for(:price, zone_id: '1', valid_to: '2010-07-06')
- expect(price.valid_to).to eq(Time.zone.parse('06.07.2010'))
- end
-
- it 'redirects to :index' do
- post admin_prices_path, price: attributes_for(:price, zone_id: '1')
- expect(response).to redirect_to admin_prices_url
- end
-end
diff --git a/spec/requests/admin/billing/prices/expire_spec.rb b/spec/requests/admin/billing/prices/expire_spec.rb
deleted file mode 100644
index 79612bbc9..000000000
--- a/spec/requests/admin/billing/prices/expire_spec.rb
+++ /dev/null
@@ -1,22 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe 'admin price expire', settings: false do
- before :example do
- sign_in_to_admin_area
- end
-
- it 'expires price' do
- price = create(:effective_price)
-
- expect { patch expire_admin_price_path(price); price.reload }
- .to change { price.expired? }.from(false).to(true)
- end
-
- it 'redirects to :index' do
- price = create(:effective_price)
-
- patch expire_admin_price_path(price)
-
- expect(response).to redirect_to admin_prices_url
- end
-end
diff --git a/spec/requests/admin/billing/prices/update_spec.rb b/spec/requests/admin/billing/prices/update_spec.rb
deleted file mode 100644
index 0b8abcb83..000000000
--- a/spec/requests/admin/billing/prices/update_spec.rb
+++ /dev/null
@@ -1,71 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe 'admin price update', settings: false do
- before :example do
- sign_in_to_admin_area
- end
-
- it 'updates zone' do
- price = create(:price)
- create(:zone, id: 2)
-
- patch admin_price_path(price), price: attributes_for(:price, zone_id: '2')
- price.reload
-
- expect(price.zone_id).to eq(2)
- end
-
- it 'updates operation category' do
- price = create(:price, operation_category: Billing::Price.operation_categories.first)
-
- patch admin_price_path(price),
- price: attributes_for(:price, operation_category: Billing::Price.operation_categories.second)
- price.reload
-
- expect(price.operation_category).to eq(Billing::Price.operation_categories.second)
- end
-
- it 'updates duration in months' do
- price = create(:price, duration: '3 mons')
-
- patch admin_price_path(price), price: attributes_for(:price, duration: '6 mons')
- price.reload
-
- expect(price.duration).to eq('6 mons')
- end
-
- it 'updates duration in years' do
- price = create(:price, duration: '1 year')
-
- patch admin_price_path(price), price: attributes_for(:price, duration: '2 years')
- price.reload
-
- expect(price.duration).to eq('2 years')
- end
-
- it 'updates valid_from' do
- price = create(:price, valid_from: '2010-07-05')
-
- patch admin_price_path(price), price: attributes_for(:price, valid_from: '2010-07-06')
- price.reload
-
- expect(price.valid_from).to eq(Time.zone.parse('06.07.2010'))
- end
-
- it 'updates valid_to' do
- price = create(:price, valid_to: '2010-07-05')
-
- patch admin_price_path(price), price: attributes_for(:price, valid_to: '2010-07-06')
- price.reload
-
- expect(price.valid_to).to eq(Time.zone.parse('06.07.2010'))
- end
-
- it 'redirects to :index' do
- price = create(:price)
-
- patch admin_price_path(price), price: attributes_for(:price)
-
- expect(response).to redirect_to admin_prices_url
- end
-end
diff --git a/spec/requests/admin/dns/zones/create_spec.rb b/spec/requests/admin/dns/zones/create_spec.rb
deleted file mode 100644
index 898359ed2..000000000
--- a/spec/requests/admin/dns/zones/create_spec.rb
+++ /dev/null
@@ -1,36 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe 'admin zone create', settings: false do
- subject(:zone) { DNS::Zone.first }
-
- before :example do
- sign_in_to_admin_area
- end
-
- it 'creates new zone' do
- expect { post admin_zones_path, zone: attributes_for(:zone) }
- .to change { DNS::Zone.count }.from(0).to(1)
- end
-
- text_attributes = %i[origin email master_nameserver ns_records a_records a4_records]
- integer_attributes = %i[ttl refresh retry expire minimum_ttl]
-
- text_attributes.each do |attr_name|
- it "saves #{attr_name}" do
- post admin_zones_path, zone: attributes_for(:zone, attr_name => 'test')
- expect(zone.send(attr_name)).to eq('test')
- end
- end
-
- integer_attributes.each do |attr_name|
- it "saves #{attr_name}" do
- post admin_zones_path, zone: attributes_for(:zone, attr_name => '1')
- expect(zone.send(attr_name)).to eq(1)
- end
- end
-
- it 'redirects to :index' do
- post admin_zones_path, zone: attributes_for(:zone)
- expect(response).to redirect_to admin_zones_url
- end
-end
diff --git a/spec/requests/admin/dns/zones/update_spec.rb b/spec/requests/admin/dns/zones/update_spec.rb
deleted file mode 100644
index df0f4bab2..000000000
--- a/spec/requests/admin/dns/zones/update_spec.rb
+++ /dev/null
@@ -1,40 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe 'admin zone update', settings: false do
- before :example do
- sign_in_to_admin_area
- end
-
- text_attributes = %i[origin email master_nameserver ns_records a_records a4_records]
- integer_attributes = %i[ttl refresh retry expire minimum_ttl]
-
- text_attributes.each do |attr_name|
- it "updates #{attr_name}" do
- zone = create(:zone, attr_name => 'test')
-
- patch admin_zone_path(zone), zone: attributes_for(:zone, attr_name => 'new-test')
- zone.reload
-
- expect(zone.send(attr_name)).to eq('new-test')
- end
- end
-
- integer_attributes.each do |attr_name|
- it "updates #{attr_name}" do
- zone = create(:zone, attr_name => '1')
-
- patch admin_zone_path(zone), zone: attributes_for(:zone, attr_name => '2')
- zone.reload
-
- expect(zone.send(attr_name)).to eq(2)
- end
- end
-
- it 'redirects to :index' do
- zone = create(:zone)
-
- patch admin_zone_path(zone), zone: attributes_for(:zone)
-
- expect(response).to redirect_to admin_zones_url
- end
-end
diff --git a/spec/requests/admin/settings/create_spec.rb b/spec/requests/admin/settings/create_spec.rb
deleted file mode 100644
index c9e7e443d..000000000
--- a/spec/requests/admin/settings/create_spec.rb
+++ /dev/null
@@ -1,35 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe 'Admin settings saving' do
- before do
- sign_in_to_admin_area
- end
-
- it 'saves integer setting' do
- allow(Setting).to receive(:integer_settings) { %i[test_setting] }
- post admin_settings_path, settings: { test_setting: '1' }
- expect(Setting.test_setting).to eq(1)
- end
-
- it 'saves float setting' do
- allow(Setting).to receive(:float_settings) { %i[test_setting] }
- post admin_settings_path, settings: { test_setting: '1.2' }
- expect(Setting.test_setting).to eq(1.2)
- end
-
- it 'saves boolean setting' do
- allow(Setting).to receive(:boolean_settings) { %i[test_setting] }
- post admin_settings_path, settings: { test_setting: 'true' }
- expect(Setting.test_setting).to be true
- end
-
- it 'saves string setting' do
- post admin_settings_path, settings: { test_setting: 'test' }
- expect(Setting.test_setting).to eq('test')
- end
-
- it 'redirects to :index' do
- post admin_settings_path, settings: { test: 'test' }
- expect(response).to redirect_to admin_settings_path
- end
-end
diff --git a/spec/requests/admin/zonefiles/create_spec.rb b/spec/requests/admin/zonefiles/create_spec.rb
deleted file mode 100644
index e9dfb62c8..000000000
--- a/spec/requests/admin/zonefiles/create_spec.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe 'Admin area zone file generation', settings: false do
- let!(:zone) { create(:zone, origin: 'com') }
-
- before do
- sign_in_to_admin_area
- end
-
- it 'generates new' do
- post admin_zonefiles_path(origin: 'com')
- expect(response).to be_success
- end
-end
diff --git a/spec/requests/epp/contact/create/ident_spec.rb b/spec/requests/epp/contact/create/ident_spec.rb
deleted file mode 100644
index 2de0e59a1..000000000
--- a/spec/requests/epp/contact/create/ident_spec.rb
+++ /dev/null
@@ -1,286 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe 'EPP contact:create' do
- let(:registrar) { create(:registrar) }
- let(:user) { create(:api_user_epp, registrar: registrar) }
- let(:session_id) { create(:epp_session, user: user).session_id }
- let(:request) { post '/epp/command/create', { frame: request_xml }, 'HTTP_COOKIE' => "session=#{session_id}" }
-
- before do
- Setting.address_processing = false
- sign_in user
- end
-
- context 'when all ident params are valid' do
- let(:ident) { Contact.first.identifier }
- let(:request_xml) { <<-XML
-
-
-
-
-
-
- test
-
- +1.2
- test@test.com
-
-
-
-
- test
-
-
-
-
- XML
- }
-
- it 'creates a contact' do
- expect { request }.to change { Contact.count }.from(0).to(1)
- end
-
- it 'saves ident type' do
- request
- expect(ident.type).to eq('priv')
- end
-
- it 'saves ident country code' do
- request
- expect(ident.country_code).to eq('US')
- end
-
- specify do
- request
- expect(Epp::Response.xml(response.body).code?(Epp::Response::Result::Code.key(:completed_successfully))).to be_truthy
- end
- end
-
- context 'when code is blank' do
- let(:request_xml) { <<-XML
-
-
-
-
-
-
- test
-
- +1.2
- test@test.com
-
-
-
-
-
-
-
-
-
- XML
- }
-
- it 'does not create a contact' do
- expect { request }.to_not change { Contact.count }
- end
-
- specify do
- request
- expect(Epp::Response.xml(response.body).code?(Epp::Response::Result::Code.key(:required_parameter_missing))).to be_truthy
- end
- end
-
- context 'when code is not valid national id' do
- let(:request_xml) { <<-XML
-
-
-
-
-
-
- test
-
- +1.2
- test@test.com
-
-
-
-
- invalid
-
-
-
-
- XML
- }
-
- before do
- country_specific_validations = {
- Country.new('DE') => proc { false },
- }
-
- allow(Contact::Ident::NationalIdValidator).to receive(:country_specific_validations)
- .and_return(country_specific_validations)
- end
-
- it 'does not create a contact' do
- expect { request }.to_not change { Contact.count }
- end
-
- specify do
- request
- expect(Epp::Response.xml(response.body).code?(Epp::Response::Result::Code.key(:parameter_value_syntax_error))).to be_truthy
- end
- end
-
- context 'when code is not valid registration number' do
- let(:request_xml) { <<-XML
-
-
-
-
-
-
- test
-
- +1.2
- test@test.com
-
-
-
-
- invalid
-
-
-
-
- XML
- }
-
- before do
- country_specific_formats = {
- Country.new('DE') => /\Avalid\z/,
- }
-
- allow(Contact::Ident::RegNoValidator).to receive(:country_specific_formats).and_return(country_specific_formats)
- end
-
- it 'does not create a contact' do
- expect { request }.to_not change { Contact.count }
- end
-
- specify do
- request
- expect(Epp::Response.xml(response.body).code?(Epp::Response::Result::Code.key(:parameter_value_syntax_error))).to be_truthy
- end
- end
-
- context 'when country code is absent' do
- let(:request_xml) { <<-XML
-
-
-
-
-
-
- test
-
- +1.2
- test@test.com
-
-
-
-
- test
-
-
-
-
- XML
- }
-
- it 'does not create a contact' do
- expect { request }.to_not change { Contact.count }
- end
-
- specify do
- request
- expect(Epp::Response.xml(response.body).code?(Epp::Response::Result::Code.key(:required_parameter_missing))).to be_truthy
- end
- end
-
- context 'when country code is blank' do
- let(:request_xml) { <<-XML
-
-
-
-
-
-
- test
-
- +1.2
- test@test.com
-
-
-
-
- test
-
-
-
-
- XML
- }
-
- it 'does not create a contact' do
- expect { request }.to_not change { Contact.count }
- end
-
- specify do
- request
- expect(Epp::Response.xml(response.body).code?(Epp::Response::Result::Code.key(:syntax_error))).to be_truthy
- end
- end
-
- context 'when mismatches' do
- let(:request_xml) { <<-XML
-
-
-
-
-
-
- test
-
- +1.2
- test@test.com
-
-
-
-
- test
-
-
-
-
- XML
- }
-
- before do
- mismatches = [
- Contact::Ident::MismatchValidator::Mismatch.new('priv', Country.new('DE'))
- ]
- allow(Contact::Ident::MismatchValidator).to receive(:mismatches).and_return(mismatches)
- end
-
- it 'does not create a contact' do
- expect { request }.to_not change { Contact.count }
- end
-
- specify do
- request
- expect(Epp::Response.xml(response.body).code?(Epp::Response::Result::Code.key(:parameter_value_syntax_error))).to be_truthy
- end
- end
-end
diff --git a/spec/requests/epp/contact/create/phone_spec.rb b/spec/requests/epp/contact/create/phone_spec.rb
deleted file mode 100644
index fa340abf6..000000000
--- a/spec/requests/epp/contact/create/phone_spec.rb
+++ /dev/null
@@ -1,38 +0,0 @@
-require 'rails_helper'
-require_relative '../shared/phone'
-
-RSpec.describe 'EPP contact:create' do
- let(:registrar) { create(:registrar) }
- let(:user) { create(:api_user_epp, registrar: registrar) }
- let(:session_id) { create(:epp_session, user: user).session_id }
- let(:request) { post '/epp/command/create', { frame: request_xml }, 'HTTP_COOKIE' => "session=#{session_id}" }
- let(:request_xml) { <<-XML
-
-
-
-
-
-
- test
-
- #{phone}
- test@test.com
-
-
-
-
- 123456
-
-
-
-
- XML
- }
-
- before do
- sign_in user
- allow(Contact).to receive(:address_processing?).and_return(false)
- end
-
- include_examples 'EPP contact phone'
-end
diff --git a/spec/requests/epp/contact/create_spec.rb b/spec/requests/epp/contact/create_spec.rb
deleted file mode 100644
index 3d461a041..000000000
--- a/spec/requests/epp/contact/create_spec.rb
+++ /dev/null
@@ -1,126 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe 'EPP contact:create' do
- let(:registrar) { create(:registrar) }
- let(:user) { create(:api_user_epp, registrar: registrar) }
- let(:session_id) { create(:epp_session, user: user).session_id }
- let(:request_xml_with_address) { '
-
-
-
-
-
- test name
-
- test street
- test city
- 12345
- US
-
-
- +372.1234567
- test@example.com
-
-
-
-
- 1234567
- dGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCg
-
-
-
- ABC-12345
-
- '
- }
- subject(:response_xml) { Nokogiri::XML(response.body) }
- subject(:response_code) { response_xml.xpath('//xmlns:result').first['code'] }
- subject(:response_description) { response_xml.css('result msg').text }
- subject(:address_saved) { Contact.last.attributes.slice(*Contact.address_attribute_names).compact.any? }
-
- before do
- sign_in user
- end
-
- context 'when address processing is enabled' do
- before do
- allow(Contact).to receive(:address_processing?).and_return(true)
- end
-
- context 'with address' do
- it 'returns epp code of 1000' do
- post '/epp/command/create', { frame: request_xml_with_address }, 'HTTP_COOKIE' => "session=#{session_id}"
- expect(response_code).to eq('1000')
- end
-
- it 'returns epp description' do
- post '/epp/command/create', { frame: request_xml_with_address}, 'HTTP_COOKIE' => "session=#{session_id}"
- expect(response_description).to eq('Command completed successfully')
- end
-
- it 'saves address' do
- post '/epp/command/create', { frame: request_xml_with_address }, 'HTTP_COOKIE' => "session=#{session_id}"
- expect(address_saved).to be_truthy
- end
- end
- end
-
- context 'when address processing is disabled' do
- before do
- allow(Contact).to receive(:address_processing?).and_return(false)
- end
-
- context 'with address' do
- it 'returns epp code of 1100' do
- post '/epp/command/create', { frame: request_xml_with_address }, 'HTTP_COOKIE' => "session=#{session_id}"
- expect(response_code).to eq('1100')
- end
-
- it 'returns epp description' do
- post '/epp/command/create', { frame: request_xml_with_address }, 'HTTP_COOKIE' => "session=#{session_id}"
- expect(response_description).to eq('Command completed successfully; Postal address data discarded')
- end
-
- it 'does not save address' do
- post '/epp/command/create', { frame: request_xml_with_address }, 'HTTP_COOKIE' => "session=#{session_id}"
- expect(address_saved).to be_falsey
- end
- end
-
- context 'without address' do
- let(:request_xml_without_address) { '
-
-
-
-
-
- test name
-
- +372.1234567
- test@test.com
-
-
-
-
- 123456
- dGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCg
-
-
-
- ABC-12345
-
- '
- }
-
- it 'returns epp code of 1000' do
- post '/epp/command/create', { frame: request_xml_without_address }, 'HTTP_COOKIE' => "session=#{session_id}"
- expect(response_code).to eq('1000')
- end
-
- it 'returns epp description' do
- post '/epp/command/create', { frame: request_xml_without_address }, 'HTTP_COOKIE' => "session=#{session_id}"
- expect(response_description).to eq('Command completed successfully')
- end
- end
- end
-end
diff --git a/spec/requests/epp/contact/info_spec.rb b/spec/requests/epp/contact/info_spec.rb
deleted file mode 100644
index dcfbcbede..000000000
--- a/spec/requests/epp/contact/info_spec.rb
+++ /dev/null
@@ -1,60 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe 'EPP contact:update' do
- let(:registrar) { create(:registrar) }
- let(:user) { create(:api_user_epp, registrar: registrar) }
- let(:session_id) { create(:epp_session, user: user).session_id }
- let(:request_xml) { '
-
-
-
-
- test
-
-
-
- '
- }
- subject(:response_xml) { Nokogiri::XML(response.body) }
- subject(:response_code) { response_xml.xpath('//xmlns:result').first['code'] }
- subject(:address_count) { response_xml
- .xpath('//contact:addr', contact: 'https://epp.tld.ee/schema/contact-ee-1.1.xsd')
- .count }
-
- before do
- sign_in user
- create(:contact, code: 'TEST')
- end
-
- context 'when address processing is enabled' do
- before do
- allow(Contact).to receive(:address_processing?).and_return(true)
- end
-
- it 'returns epp code of 1000' do
- post '/epp/command/info', { frame: request_xml }, 'HTTP_COOKIE' => "session=#{session_id}"
- expect(response_code).to eq('1000')
- end
-
- it 'returns address' do
- post '/epp/command/info', { frame: request_xml }, 'HTTP_COOKIE' => "session=#{session_id}"
- expect(address_count).to_not be_zero
- end
- end
-
- context 'when address processing is disabled' do
- before do
- allow(Contact).to receive(:address_processing?).and_return(false)
- end
-
- it 'returns epp code of 1000' do
- post '/epp/command/info', { frame: request_xml }, 'HTTP_COOKIE' => "session=#{session_id}"
- expect(response_code).to eq('1000')
- end
-
- it 'does not return address' do
- post '/epp/command/info', { frame: request_xml }, 'HTTP_COOKIE' => "session=#{session_id}"
- expect(address_count).to be_zero
- end
- end
-end
diff --git a/spec/requests/epp/contact/shared/phone.rb b/spec/requests/epp/contact/shared/phone.rb
deleted file mode 100644
index 51a0a758c..000000000
--- a/spec/requests/epp/contact/shared/phone.rb
+++ /dev/null
@@ -1,28 +0,0 @@
-RSpec.shared_examples 'EPP contact phone' do
- context 'when phone is valid' do
- let(:phone) { '+123.4' }
-
- specify do
- request
- expect(Epp::Response.xml(response.body).code?(Epp::Response::Result::Code.key(:completed_successfully))).to be_truthy
- end
- end
-
- context 'when phone has invalid format' do
- let(:phone) { '1234' }
-
- specify do
- request
- expect(Epp::Response.xml(response.body).code?(Epp::Response::Result::Code.key(:parameter_value_syntax_error))).to be_truthy
- end
- end
-
- context 'when phone has only zeros' do
- let(:phone) { '+000.0' }
-
- specify do
- request
- expect(Epp::Response.xml(response.body).code?(Epp::Response::Result::Code.key(:parameter_value_syntax_error))).to be_truthy
- end
- end
-end
diff --git a/spec/requests/epp/contact/update/ident_spec.rb b/spec/requests/epp/contact/update/ident_spec.rb
deleted file mode 100644
index c8e1fe389..000000000
--- a/spec/requests/epp/contact/update/ident_spec.rb
+++ /dev/null
@@ -1,195 +0,0 @@
-require 'rails_helper'
-
-# https://github.com/internetee/registry/issues/576
-
-RSpec.describe 'EPP contact:update' do
- let(:registrar) { create(:registrar) }
- let(:user) { create(:api_user_epp, registrar: registrar) }
- let(:session_id) { create(:epp_session, user: user).session_id }
- let(:ident) { contact.identifier }
- let(:request) { post '/epp/command/update', { frame: request_xml }, 'HTTP_COOKIE' => "session=#{session_id}" }
- let(:request_xml) { <<-XML
-
-
-
-
-
- TEST
-
-
- test
-
-
-
-
-
-
- test
-
-
-
-
- XML
- }
-
- before do
- sign_in user
- end
-
- context 'when contact ident is valid' do
- context 'when submitted ident matches current one' do
- let!(:contact) { create(:contact, code: 'TEST',
- ident: 'test',
- ident_type: 'priv',
- ident_country_code: 'US') }
-
- specify do
- request
- expect(Epp::Response.xml(response.body).code?(Epp::Response::Result::Code.key(:completed_successfully))).to be_truthy
- end
- end
-
- context 'when submitted ident does not match current one' do
- let!(:contact) { create(:contact, code: 'TEST',
- ident: 'another-test',
- ident_type: 'priv',
- ident_country_code: 'US') }
-
- it 'does not update code' do
- expect do
- request
- contact.reload
- end.to_not change { ident.code }
- end
-
- it 'does not update type' do
- expect do
- request
- contact.reload
- end.to_not change { ident.type }
- end
-
- it 'does not update country code' do
- expect do
- request
- contact.reload
- end.to_not change { ident.country_code }
- end
-
- specify do
- request
- expect(Epp::Response.xml(response.body).code?(Epp::Response::Result::Code.key(:data_management_policy_violation))).to be_truthy
- end
- end
- end
-
- context 'when contact ident is invalid' do
- let(:contact) { build(:contact, code: 'TEST', ident: 'test', ident_type: nil, ident_country_code: nil) }
-
- before do
- contact.save(validate: false)
- end
-
- context 'when submitted ident is the same as current one' do
- let(:request_xml) { <<-XML
-
-
-
-
-
- TEST
-
-
- test
-
-
-
-
-
-
- test
-
-
-
-
- XML
- }
-
- it 'does not update code' do
- expect do
- request
- contact.reload
- end.to_not change { ident.code }
- end
-
- it 'updates type' do
- request
- contact.reload
- expect(ident.type).to eq('priv')
- end
-
- it 'updates country code' do
- request
- contact.reload
- expect(ident.country_code).to eq('US')
- end
-
- specify do
- request
- expect(Epp::Response.xml(response.body).code?(Epp::Response::Result::Code.key(:completed_successfully))).to be_truthy
- end
- end
-
- context 'when submitted ident is different from current one' do
- let(:request_xml) { <<-XML
-
-
-
-
-
- TEST
-
-
- test
-
-
-
-
-
-
- another-test
-
-
-
-
- XML
- }
-
- it 'does not update code' do
- expect do
- request
- contact.reload
- end.to_not change { ident.code }
- end
-
- it 'does not update type' do
- expect do
- request
- contact.reload
- end.to_not change { ident.type }
- end
-
- it 'does not update country code' do
- expect do
- request
- contact.reload
- end.to_not change { ident.country_code }
- end
-
- specify do
- request
- expect(Epp::Response.xml(response.body).code?(Epp::Response::Result::Code.key(:data_management_policy_violation))).to be_truthy
- end
- end
- end
-end
diff --git a/spec/requests/epp/contact/update/phone_spec.rb b/spec/requests/epp/contact/update/phone_spec.rb
deleted file mode 100644
index 9955308b6..000000000
--- a/spec/requests/epp/contact/update/phone_spec.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-require 'rails_helper'
-require_relative '../shared/phone'
-
-RSpec.describe 'EPP contact:update' do
- let(:registrar) { create(:registrar) }
- let(:user) { create(:api_user_epp, registrar: registrar) }
- let(:session_id) { create(:epp_session, user: user).session_id }
- let!(:contact) { create(:contact, code: 'TEST') }
- let(:request) { post '/epp/command/update', { frame: request_xml }, 'HTTP_COOKIE' => "session=#{session_id}" }
- let(:request_xml) { <<-XML
-
-
-
-
-
- TEST
-
- #{phone}
-
-
-
-
-
- XML
- }
-
- before do
- sign_in user
- allow(Contact).to receive(:address_processing?).and_return(false)
- end
-
- include_examples 'EPP contact phone'
-end
diff --git a/spec/requests/epp/contact/update_spec.rb b/spec/requests/epp/contact/update_spec.rb
deleted file mode 100644
index 9ac3a99bb..000000000
--- a/spec/requests/epp/contact/update_spec.rb
+++ /dev/null
@@ -1,108 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe 'EPP contact:update' do
- let(:registrar) { create(:registrar) }
- let(:user) { create(:api_user_epp, registrar: registrar) }
- let(:session_id) { create(:epp_session, user: user).session_id }
- let(:request_xml_with_address) { '
-
-
-
-
- test
-
-
-
- test street
- test city
- 12345
- DE
-
-
-
-
-
-
-
- dGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCg
-
-
- ABC-12345
-
- '
- }
- subject(:response_xml) { Nokogiri::XML(response.body) }
- subject(:response_code) { response_xml.xpath('//xmlns:result').first['code'] }
- subject(:response_description) { response_xml.css('result msg').text }
-
- before do
- sign_in user
- create(:contact, code: 'TEST')
- end
-
- context 'when address processing is enabled' do
- before do
- allow(Contact).to receive(:address_processing?).and_return(true)
- end
-
- context 'with address' do
- it 'returns epp code of 1000' do
- post '/epp/command/update', { frame: request_xml_with_address }, 'HTTP_COOKIE' => "session=#{session_id}"
- expect(response_code).to eq('1000')
- end
-
- it 'returns epp description' do
- post '/epp/command/update', { frame: request_xml_with_address }, 'HTTP_COOKIE' => "session=#{session_id}"
- expect(response_description).to eq('Command completed successfully')
- end
- end
- end
-
- context 'when address processing is disabled' do
- before do
- allow(Contact).to receive(:address_processing?).and_return(false)
- end
-
- context 'with address' do
- it 'returns epp code of 1100' do
- post '/epp/command/update', { frame: request_xml_with_address }, 'HTTP_COOKIE' => "session=#{session_id}"
- expect(response_code).to eq('1100')
- end
-
- it 'returns epp description' do
- post '/epp/command/update', { frame: request_xml_with_address }, 'HTTP_COOKIE' => "session=#{session_id}"
- expect(response_description).to eq('Command completed successfully; Postal address data discarded')
- end
- end
-
- context 'without address' do
- let(:request_xml_without_address) { '
-
-
-
-
- test
-
-
-
-
- dGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCg
-
-
- ABC-12345
-
- '
- }
-
- it 'returns epp code of 1000' do
- post '/epp/command/update', { frame: request_xml_without_address }, 'HTTP_COOKIE' => "session=#{session_id}"
- expect(response_code).to eq('1000')
- end
-
- it 'returns epp description' do
- post '/epp/command/update', { frame: request_xml_without_address }, 'HTTP_COOKIE' => "session=#{session_id}"
- expect(response_description).to eq('Command completed successfully')
- end
- end
- end
-end
diff --git a/spec/requests/epp/domain/create/account_balance_spec.rb b/spec/requests/epp/domain/create/account_balance_spec.rb
deleted file mode 100644
index d4acc7141..000000000
--- a/spec/requests/epp/domain/create/account_balance_spec.rb
+++ /dev/null
@@ -1,68 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe 'EPP domain:create', settings: false do
- let(:session_id) { create(:epp_session, user: user).session_id }
- let(:request) { post '/epp/command/create', { frame: request_xml }, 'HTTP_COOKIE' => "session=#{session_id}" }
- let!(:user) { create(:api_user_epp, registrar: registrar) }
- let!(:contact) { create(:contact, code: 'test') }
- let!(:zone) { create(:zone, origin: 'test') }
- let!(:price) { create(:price,
- duration: '1 year',
- price: Money.from_amount(1),
- operation_category: 'create',
- valid_from: Time.zone.parse('05.07.2010'),
- valid_to: Time.zone.parse('05.07.2010'),
- zone: zone)
- }
- let(:request_xml) { <<-XML
-
-
-
-
-
- test.test
- test
-
-
-
-
- #{valid_legal_document}
-
-
-
-
- XML
- }
-
- before :example do
- travel_to Time.zone.parse('05.07.2010')
- Setting.days_to_renew_domain_before_expire = 0
- sign_in user
- end
-
- context 'when account balance is sufficient' do
- let!(:registrar) { create(:registrar_with_unlimited_balance) }
-
- it 'creates domain' do
- expect { request }.to change { Domain.count }.from(0).to(1)
- end
-
- specify do
- request
- expect(Epp::Response.xml(response.body).code?(Epp::Response::Result::Code.key(:completed_successfully))).to be_truthy
- end
- end
-
- context 'when account balance is not sufficient' do
- let!(:registrar) { create(:registrar_with_zero_balance) }
-
- it 'does not create domain' do
- expect { request }.to_not change { Domain.count }
- end
-
- specify do
- request
- expect(Epp::Response.xml(response.body).code?(Epp::Response::Result::Code.key(:billing_failure))).to be_truthy
- end
- end
-end
diff --git a/spec/requests/epp/domain/create/default_period_spec.rb b/spec/requests/epp/domain/create/default_period_spec.rb
deleted file mode 100644
index a3a7c6f70..000000000
--- a/spec/requests/epp/domain/create/default_period_spec.rb
+++ /dev/null
@@ -1,60 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe 'EPP domain:create', settings: false do
- let(:session_id) { create(:epp_session, user: user).session_id }
- let(:request) { post '/epp/command/create', { frame: request_xml }, 'HTTP_COOKIE' => "session=#{session_id}" }
- let!(:user) { create(:api_user_epp, registrar: registrar) }
- let!(:contact) { create(:contact, code: 'test') }
- let!(:zone) { create(:zone, origin: 'test') }
- let!(:registrar) { create(:registrar_with_unlimited_balance) }
- let!(:price) { create(:price,
- duration: '1 year',
- price: Money.from_amount(1),
- operation_category: 'create',
- valid_from: Time.zone.parse('05.07.2010'),
- valid_to: Time.zone.parse('05.07.2010'),
- zone: zone)
- }
- let(:request_xml) { <<-XML
-
-
-
-
-
- test.test
- test
-
-
-
-
- #{valid_legal_document}
-
-
-
-
- XML
- }
-
- before :example do
- travel_to Time.zone.parse('05.07.2010 10:30')
- Setting.days_to_renew_domain_before_expire = 0
- sign_in user
- end
-
- context 'when period is absent' do
- it 'creates domain' do
- expect { request }.to change { Domain.count }.from(0).to(1)
- end
-
- it 'uses default duration of 1 year' do
- request
- expire_time = (Time.zone.parse('05.07.2010') + 1.year + 1.day).beginning_of_day
- expect(Domain.first.expire_time).to eq(expire_time)
- end
-
- specify do
- request
- expect(Epp::Response.xml(response.body).code?(Epp::Response::Result::Code.key(:completed_successfully))).to be_truthy
- end
- end
-end
diff --git a/spec/requests/epp/domain/create/optional_nameserver_spec.rb b/spec/requests/epp/domain/create/optional_nameserver_spec.rb
deleted file mode 100644
index 920deb14e..000000000
--- a/spec/requests/epp/domain/create/optional_nameserver_spec.rb
+++ /dev/null
@@ -1,110 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe 'EPP domain:create', settings: false do
- let(:session_id) { create(:epp_session, user: user).session_id }
- let(:request) { post '/epp/command/create', { frame: request_xml }, 'HTTP_COOKIE' => "session=#{session_id}" }
- let!(:registrar) { create(:registrar_with_unlimited_balance) }
- let!(:user) { create(:api_user_epp, registrar: registrar) }
- let!(:contact) { create(:contact, code: 'test') }
- let!(:zone) { create(:zone, origin: 'test') }
- let!(:price) { create(:price,
- duration: '1 year',
- price: Money.from_amount(1),
- operation_category: 'create',
- valid_from: Time.zone.parse('05.07.2010'),
- valid_to: Time.zone.parse('05.07.2010'),
- zone: zone)
- }
-
- before :example do
- travel_to Time.zone.parse('05.07.2010')
- sign_in user
- end
-
- context 'when nameserver is optional' do
- before :example do
- allow(Domain).to receive(:nameserver_required?).and_return(false)
- end
-
- context 'when minimum nameserver count requirement is not satisfied' do
- let(:request_xml) { <<-XML
-
-
-
-
-
- test.test
- 1
-
-
- ns.test.com
- 192.168.1.1
-
-
- test
-
-
-
-
- #{valid_legal_document}
-
-
-
-
- XML
- }
-
- before :example do
- Setting.ns_min_count = 2
- end
-
- it 'does not create domain' do
- expect { request }.to_not change { Domain.count }
- end
-
- specify do
- request
- expect(Epp::Response.xml(response.body).code?(Epp::Response::Result::Code.key(:data_management_policy_violation))).to be_truthy
- end
- end
-
- context 'when nameserver is absent' do
- let(:request_xml) { <<-XML
-
-
-
-
-
- test.test
- 1
- test
-
-
-
-
- #{valid_legal_document}
-
-
-
-
- XML
- }
-
- it 'creates new domain' do
- expect { request }.to change { Domain.count }.from(0).to(1)
- end
-
- describe 'new domain' do
- it 'has status of inactive' do
- request
- expect(Domain.first.statuses).to include(DomainStatus::INACTIVE)
- end
- end
-
- specify do
- request
- expect(Epp::Response.xml(response.body).code?(Epp::Response::Result::Code.key(:completed_successfully))).to be_truthy
- end
- end
- end
-end
diff --git a/spec/requests/epp/domain/create/period_spec.rb b/spec/requests/epp/domain/create/period_spec.rb
deleted file mode 100644
index 7bd290852..000000000
--- a/spec/requests/epp/domain/create/period_spec.rb
+++ /dev/null
@@ -1,109 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe 'EPP domain:create', settings: false do
- let(:session_id) { create(:epp_session, user: user).session_id }
- let(:request) { post '/epp/command/create', { frame: request_xml }, 'HTTP_COOKIE' => "session=#{session_id}" }
- let!(:user) { create(:api_user_epp, registrar: registrar) }
- let!(:contact) { create(:contact, code: 'test') }
- let!(:zone) { create(:zone, origin: 'test') }
- let!(:registrar) { create(:registrar_with_unlimited_balance) }
-
- before :example do
- travel_to Time.zone.parse('05.07.2010 10:30')
- Setting.days_to_renew_domain_before_expire = 0
- sign_in user
- end
-
- context 'when period is 3 months' do
- let!(:price) { create(:price,
- duration: '3 mons',
- price: Money.from_amount(1),
- operation_category: 'create',
- valid_from: Time.zone.parse('05.07.2010'),
- valid_to: Time.zone.parse('05.07.2010'),
- zone: zone)
- }
- let(:request_xml) { <<-XML
-
-
-
-
-
- test.test
- 3
- test
-
-
-
-
- #{valid_legal_document}
-
-
-
-
- XML
- }
-
-
- it 'creates domain' do
- expect { request }.to change { Domain.count }.from(0).to(1)
- end
-
- specify 'expire_time' do
- request
- expire_time = (Time.zone.parse('05.07.2010 10:30') + 3.months + 1.day).beginning_of_day
- expect(Domain.first.expire_time).to eq(expire_time)
- end
-
- specify do
- request
- expect(Epp::Response.xml(response.body).code?(Epp::Response::Result::Code.key(:completed_successfully))).to be_truthy
- end
- end
-
- context 'when period is 10 years' do
- let!(:price) { create(:price,
- duration: '10 years',
- price: Money.from_amount(1),
- operation_category: 'create',
- valid_from: Time.zone.parse('05.07.2010'),
- valid_to: Time.zone.parse('05.07.2010'),
- zone: zone)
- }
- let(:request_xml) { <<-XML
-
-
-
-
-
- test.test
- 10
- test
-
-
-
-
- #{valid_legal_document}
-
-
-
-
- XML
- }
-
- it 'creates domain' do
- expect { request }.to change { Domain.count }.from(0).to(1)
- end
-
- specify 'expire_time' do
- request
- expire_time = (Time.zone.parse('05.07.2010 10:30') + 10.years + 1.day).beginning_of_day
- expect(Domain.first.expire_time).to eq(expire_time)
- end
-
- specify do
- request
- expect(Epp::Response.xml(response.body).code?(Epp::Response::Result::Code.key(:completed_successfully))).to be_truthy
- end
- end
-end
diff --git a/spec/requests/epp/domain/create/price_spec.rb b/spec/requests/epp/domain/create/price_spec.rb
deleted file mode 100644
index 69f97633a..000000000
--- a/spec/requests/epp/domain/create/price_spec.rb
+++ /dev/null
@@ -1,67 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe 'EPP domain:create', settings: false do
- let(:session_id) { create(:epp_session, user: user).session_id }
- let(:request) { post '/epp/command/create', { frame: request_xml }, 'HTTP_COOKIE' => "session=#{session_id}" }
- let!(:user) { create(:api_user_epp, registrar: registrar) }
- let!(:contact) { create(:contact, code: 'test') }
- let!(:zone) { create(:zone, origin: 'test') }
- let!(:registrar) { create(:registrar_with_unlimited_balance) }
- let(:request_xml) { <<-XML
-
-
-
-
-
- test.test
- 1
- test
-
-
-
-
- #{valid_legal_document}
-
-
-
-
- XML
- }
-
- before :example do
- travel_to Time.zone.parse('05.07.2010')
- Setting.days_to_renew_domain_before_expire = 0
- sign_in user
- end
-
- context 'when price is present' do
- let!(:price) { create(:price,
- duration: '1 year',
- price: Money.from_amount(1),
- operation_category: 'create',
- valid_from: Time.zone.parse('05.07.2010'),
- valid_to: Time.zone.parse('05.07.2010'),
- zone: zone)
- }
-
- it 'creates domain' do
- expect { request }.to change { Domain.count }.from(0).to(1)
- end
-
- specify do
- request
- expect(Epp::Response.xml(response.body).code?(Epp::Response::Result::Code.key(:completed_successfully))).to be_truthy
- end
- end
-
- context 'when price is absent' do
- it 'does not create domain' do
- expect { request }.to_not change { Domain.count }
- end
-
- specify do
- request
- expect(Epp::Response.xml(response.body).code?(Epp::Response::Result::Code.key(:billing_failure))).to be_truthy
- end
- end
-end
diff --git a/spec/requests/epp/domain/create/required_nameserver_spec.rb b/spec/requests/epp/domain/create/required_nameserver_spec.rb
deleted file mode 100644
index 08b5208e1..000000000
--- a/spec/requests/epp/domain/create/required_nameserver_spec.rb
+++ /dev/null
@@ -1,100 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe 'EPP domain:create', settings: false do
- let(:session_id) { create(:epp_session, user: user).session_id }
- let(:request) { post '/epp/command/create', { frame: request_xml }, 'HTTP_COOKIE' => "session=#{session_id}" }
- let!(:registrar) { create(:registrar_with_unlimited_balance) }
- let!(:user) { create(:api_user_epp, registrar: registrar) }
- let!(:contact) { create(:contact, code: 'test') }
- let!(:zone) { create(:zone, origin: 'test') }
- let!(:price) { create(:price,
- duration: '1 year',
- price: Money.from_amount(1),
- operation_category: 'create',
- valid_from: Time.zone.parse('05.07.2010'),
- valid_to: Time.zone.parse('05.07.2010'),
- zone: zone)
- }
-
- before :example do
- travel_to Time.zone.parse('05.07.2010')
- sign_in user
- end
-
- context 'when nameserver is required' do
- before :example do
- allow(Domain).to receive(:nameserver_required?).and_return(true)
- Setting.ns_min_count = 1
- end
-
- context 'when minimum nameserver count requirement is satisfied' do
- let(:request_xml) { <<-XML
-
-
-
-
-
- test.test
- 1
-
-
- ns.test.com
- 192.168.1.1
-
-
- test
-
-
-
-
- #{valid_legal_document}
-
-
-
-
- XML
- }
-
- it 'creates new domain' do
- expect { request }.to change { Domain.count }.from(0).to(1)
- end
-
- specify do
- request
- expect(Epp::Response.xml(response.body).code?(Epp::Response::Result::Code.key(:completed_successfully))).to be_truthy
- end
- end
-
- context 'when nameservers are absent' do
- let(:request_xml) { <<-XML
-
-
-
-
-
- test.test
- 1
- test
-
-
-
-
- #{valid_legal_document}
-
-
-
-
- XML
- }
-
- it 'does not create domain' do
- expect { request }.to_not change { Domain.count }
- end
-
- specify do
- request
- expect(Epp::Response.xml(response.body).code?(Epp::Response::Result::Code.key(:required_parameter_missing))).to be_truthy
- end
- end
- end
-end
diff --git a/spec/requests/epp/domain/renew/account_balance_spec.rb b/spec/requests/epp/domain/renew/account_balance_spec.rb
deleted file mode 100644
index 465469100..000000000
--- a/spec/requests/epp/domain/renew/account_balance_spec.rb
+++ /dev/null
@@ -1,92 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe 'EPP domain:renew' do
- let(:session_id) { create(:epp_session, user: user).session_id }
- let(:request) { post '/epp/command/renew', { frame: request_xml }, 'HTTP_COOKIE' => "session=#{session_id}" }
- let!(:user) { create(:api_user_epp, registrar: registrar) }
- let!(:zone) { create(:zone, origin: 'test') }
- let!(:price) { create(:price,
- duration: '1 year',
- price: Money.from_amount(1),
- operation_category: 'renew',
- valid_from: Time.zone.parse('05.07.2010'),
- valid_to: Time.zone.parse('05.07.2010'),
- zone: zone)
- }
-
- before :example do
- Setting.days_to_renew_domain_before_expire = 0
- travel_to Time.zone.parse('05.07.2010')
- sign_in user
- end
-
- context 'when account balance is sufficient' do
- let!(:registrar) { create(:registrar_with_unlimited_balance) }
- let!(:domain) { create(:domain,
- registrar: registrar,
- name: 'test.test',
- expire_time: Time.zone.parse('05.07.2010'))
- }
- let(:request_xml) { <<-XML
-
-
-
-
-
- test.test
- 2010-07-05
- 1
-
-
-
-
- XML
- }
-
- it 'renews domain' do
- request
- domain.reload
- expect(domain.expire_time).to eq(Time.zone.parse('05.07.2011'))
- end
-
- specify do
- request
- expect(Epp::Response.xml(response.body).code?(Epp::Response::Result::Code.key(:completed_successfully))).to be_truthy
- end
- end
-
- context 'when account balance is not sufficient' do
- let!(:registrar) { create(:registrar_with_zero_balance) }
- let!(:domain) { create(:domain,
- registrar: registrar,
- name: 'test.test',
- expire_time: Time.zone.parse('05.07.2010'))
- }
- let(:request_xml) { <<-XML
-
-
-
-
-
- test.test
- 2010-07-04
- 1
-
-
-
-
- XML
- }
-
- it 'does not renew domain' do
- request
- domain.reload
- expect(domain.expire_time).to eq(Time.zone.parse('05.07.2010'))
- end
-
- specify do
- request
- expect(Epp::Response.xml(response.body).code?(Epp::Response::Result::Code.key(:billing_failure))).to be_truthy
- end
- end
-end
diff --git a/spec/requests/epp/domain/renew/default_period_spec.rb b/spec/requests/epp/domain/renew/default_period_spec.rb
deleted file mode 100644
index 623199cf4..000000000
--- a/spec/requests/epp/domain/renew/default_period_spec.rb
+++ /dev/null
@@ -1,56 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe 'EPP domain:renew', settings: false do
- let(:session_id) { create(:epp_session, user: user).session_id }
- let(:request) { post '/epp/command/renew', { frame: request_xml }, 'HTTP_COOKIE' => "session=#{session_id}" }
- let!(:user) { create(:api_user_epp, registrar: registrar) }
- let!(:zone) { create(:zone, origin: 'test') }
- let!(:registrar) { create(:registrar_with_unlimited_balance) }
- let!(:price) { create(:price,
- duration: '1 year',
- price: Money.from_amount(1),
- operation_category: 'renew',
- valid_from: Time.zone.parse('05.07.2010'),
- valid_to: Time.zone.parse('05.07.2010'),
- zone: zone)
- }
- let!(:domain) { create(:domain,
- registrar: registrar,
- name: 'test.test',
- expire_time: Time.zone.parse('05.07.2010'))
- }
- let(:request_xml) { <<-XML
-
-
-
-
-
- test.test
- 2010-07-05
- 1
-
-
-
-
- XML
- }
-
- before :example do
- travel_to Time.zone.parse('05.07.2010')
- Setting.days_to_renew_domain_before_expire = 0
- sign_in user
- end
-
- context 'when period is absent' do
- it 'renews domain for 1 year' do
- request
- domain.reload
- expect(domain.expire_time).to eq(Time.zone.parse('05.07.2011'))
- end
-
- specify do
- request
- expect(Epp::Response.xml(response.body).code?(Epp::Response::Result::Code.key(:completed_successfully))).to be_truthy
- end
- end
-end
diff --git a/spec/requests/epp/domain/renew/expire_time_spec.rb b/spec/requests/epp/domain/renew/expire_time_spec.rb
deleted file mode 100644
index e4321386a..000000000
--- a/spec/requests/epp/domain/renew/expire_time_spec.rb
+++ /dev/null
@@ -1,89 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe 'EPP domain:renew' do
- let(:session_id) { create(:epp_session, user: user).session_id }
- let(:request) { post '/epp/command/renew', { frame: request_xml }, 'HTTP_COOKIE' => "session=#{session_id}" }
- let!(:user) { create(:api_user_epp, registrar: registrar) }
- let!(:registrar) { create(:registrar_with_unlimited_balance) }
- let!(:zone) { create(:zone, origin: 'test') }
- let!(:price) { create(:price,
- duration: '1 year',
- price: Money.from_amount(1),
- operation_category: 'renew',
- valid_from: Time.zone.parse('05.07.2010'),
- valid_to: Time.zone.parse('05.07.2010'),
- zone: zone)
- }
-
- before :example do
- Setting.days_to_renew_domain_before_expire = 0
- travel_to Time.zone.parse('05.07.2010')
- sign_in user
- end
-
- context 'when given expire time and current match' do
- let!(:domain) { create(:domain,
- registrar: registrar,
- name: 'test.test',
- expire_time: Time.zone.parse('05.07.2010'))
- }
- let(:request_xml) { <<-XML
-
-
-
-
-
- test.test
- 2010-07-05
- 1
-
-
-
-
- XML
- }
-
- it 'renews domain' do
- request
- domain.reload
- expect(domain.expire_time).to eq(Time.zone.parse('05.07.2011'))
- end
-
- specify do
- request
- expect(Epp::Response.xml(response.body).code?(Epp::Response::Result::Code.key(:completed_successfully))).to be_truthy
- end
- end
-
- context 'when given expire time and current do not match' do
- let!(:domain) { create(:domain,
- registrar: registrar,
- name: 'test.test',
- expire_time: Time.zone.parse('05.07.2010'))
- }
- let(:request_xml) { <<-XML
-
-
-
-
-
- test.test
- 2010-07-04
- 1
-
-
-
-
- XML
- }
-
- it 'does not renew domain' do
- expect { request; domain.reload }.to_not change { domain.expire_time }
- end
-
- specify do
- request
- expect(Epp::Response.xml(response.body).code?(Epp::Response::Result::Code.key(:parameter_value_policy_error))).to be_truthy
- end
- end
-end
diff --git a/spec/requests/epp/domain/renew/max_expire_time_spec.rb b/spec/requests/epp/domain/renew/max_expire_time_spec.rb
deleted file mode 100644
index 79362aa15..000000000
--- a/spec/requests/epp/domain/renew/max_expire_time_spec.rb
+++ /dev/null
@@ -1,92 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe 'EPP domain:renew' do
- let(:session_id) { create(:epp_session, user: user).session_id }
- let(:user) { create(:api_user_epp, registrar: registrar) }
- let(:registrar) { create(:registrar_with_unlimited_balance) }
- let!(:zone) { create(:zone, origin: 'test') }
- let!(:price) { create(:price,
- duration: '10 years',
- price: Money.from_amount(1),
- operation_category: 'renew',
- valid_from: Time.zone.parse('05.07.2010'),
- valid_to: Time.zone.parse('05.07.2010'),
- zone: zone)
- }
- subject(:response_xml) { Nokogiri::XML(response.body) }
- subject(:response_code) { response_xml.xpath('//xmlns:result').first['code'] }
- subject(:response_description) { response_xml.css('result msg').text }
-
- before :example do
- travel_to Time.zone.parse('05.07.2010')
- Setting.days_to_renew_domain_before_expire = 0
- sign_in user
- end
-
- context 'when domain can be renewed' do
- let!(:domain) { create(:domain,
- registrar: registrar,
- name: 'test.test',
- expire_time: Time.zone.parse('05.07.2010'))
- }
- let(:request_xml) { <<-XML
-
-
-
-
-
- test.test
- 2010-07-05
- 10
-
-
-
-
- XML
- }
-
- it 'returns epp code of 1000' do
- post '/epp/command/renew', { frame: request_xml }, 'HTTP_COOKIE' => "session=#{session_id}"
- expect(response_code).to eq('1000')
- end
-
- it 'returns epp description' do
- post '/epp/command/renew', { frame: request_xml }, 'HTTP_COOKIE' => "session=#{session_id}"
- expect(response_description).to eq('Command completed successfully')
- end
- end
-
- context 'when domain cannot be renewed' do
- let!(:domain) { create(:domain,
- registrar: registrar,
- name: 'test.test',
- expire_time: Time.zone.parse('05.07.2011'))
- }
- let(:request_xml) { <<-XML
-
-
-
-
-
- test.test
- 2011-07-05
- 10
-
-
-
-
- XML
- }
-
- it 'returns epp code of 2105' do
- post '/epp/command/renew', { frame: request_xml }, 'HTTP_COOKIE' => "session=#{session_id}"
- expect(response_code).to eq('2105')
- end
-
- it 'returns epp description' do
- post '/epp/command/renew', { frame: request_xml }, 'HTTP_COOKIE' => "session=#{session_id}"
- expect(response_description).to eq('Object is not eligible for renewal; ' \
- 'Expiration date must be before 2021-07-05')
- end
- end
-end
diff --git a/spec/requests/epp/domain/renew/period_spec.rb b/spec/requests/epp/domain/renew/period_spec.rb
deleted file mode 100644
index 0b2e6ed24..000000000
--- a/spec/requests/epp/domain/renew/period_spec.rb
+++ /dev/null
@@ -1,94 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe 'EPP domain:renew', settings: false do
- let(:session_id) { create(:epp_session, user: user).session_id }
- let(:request) { post '/epp/command/renew', { frame: request_xml }, 'HTTP_COOKIE' => "session=#{session_id}" }
- let!(:user) { create(:api_user_epp, registrar: registrar) }
- let!(:zone) { create(:zone, origin: 'test') }
- let!(:registrar) { create(:registrar_with_unlimited_balance) }
- let!(:domain) { create(:domain,
- registrar: registrar,
- name: 'test.test',
- expire_time: Time.zone.parse('05.07.2010 10:30'))
- }
-
- before :example do
- travel_to Time.zone.parse('05.07.2010')
- Setting.days_to_renew_domain_before_expire = 0
- sign_in user
- end
-
- context 'when period is 3 months' do
- let!(:price) { create(:price,
- duration: '3 mons',
- price: Money.from_amount(1),
- operation_category: 'renew',
- valid_from: Time.zone.parse('05.07.2010'),
- valid_to: Time.zone.parse('05.07.2010'),
- zone: zone)
- }
- let(:request_xml) { <<-XML
-
-
-
-
-
- test.test
- 2010-07-05
- 3
-
-
-
-
- XML
- }
-
- it 'renews domain for 3 months' do
- request
- domain.reload
- expect(domain.expire_time).to eq(Time.zone.parse('05.10.2010 10:30'))
- end
-
- specify do
- request
- expect(Epp::Response.xml(response.body).code?(Epp::Response::Result::Code.key(:completed_successfully))).to be_truthy
- end
- end
-
- context 'when period is 10 years' do
- let!(:price) { create(:price,
- duration: '10 years',
- price: Money.from_amount(1),
- operation_category: 'renew',
- valid_from: Time.zone.parse('05.07.2010'),
- valid_to: Time.zone.parse('05.07.2010'),
- zone: zone)
- }
- let(:request_xml) { <<-XML
-
-
-
-
-
- test.test
- 2010-07-05
- 10
-
-
-
-
- XML
- }
-
- it 'renews domain for 10 years' do
- request
- domain.reload
- expect(domain.expire_time).to eq(Time.zone.parse('05.07.2020 10:30'))
- end
-
- specify do
- request
- expect(Epp::Response.xml(response.body).code?(Epp::Response::Result::Code.key(:completed_successfully))).to be_truthy
- end
- end
-end
diff --git a/spec/requests/epp/domain/renew/price_spec.rb b/spec/requests/epp/domain/renew/price_spec.rb
deleted file mode 100644
index da2ad4022..000000000
--- a/spec/requests/epp/domain/renew/price_spec.rb
+++ /dev/null
@@ -1,68 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe 'EPP domain:renew', settings: false do
- let(:session_id) { create(:epp_session, user: user).session_id }
- let(:request) { post '/epp/command/renew', { frame: request_xml }, 'HTTP_COOKIE' => "session=#{session_id}" }
- let!(:user) { create(:api_user_epp, registrar: registrar) }
- let!(:zone) { create(:zone, origin: 'test') }
- let!(:registrar) { create(:registrar_with_unlimited_balance) }
- let!(:domain) { create(:domain,
- registrar: registrar,
- name: 'test.test',
- expire_time: Time.zone.parse('05.07.2010 10:30'))
- }
- let(:request_xml) { <<-XML
-
-
-
-
-
- test.test
- 2010-07-05
- 1
-
-
-
-
- XML
- }
-
- before :example do
- travel_to Time.zone.parse('05.07.2010')
- Setting.days_to_renew_domain_before_expire = 0
- sign_in user
- end
-
- context 'when price is present' do
- let!(:price) { create(:price,
- duration: '1 year',
- price: Money.from_amount(1),
- operation_category: 'renew',
- valid_from: Time.zone.parse('05.07.2010'),
- valid_to: Time.zone.parse('05.07.2010'),
- zone: zone)
- }
-
- it 'renews domain for 1 year' do
- request
- domain.reload
- expect(domain.expire_time).to eq(Time.zone.parse('05.07.2011 10:30'))
- end
-
- specify do
- request
- expect(Epp::Response.xml(response.body).code?(Epp::Response::Result::Code.key(:completed_successfully))).to be_truthy
- end
- end
-
- context 'when price is absent' do
- it 'does not renew domain' do
- expect { request; domain.reload }.to_not change { domain.expire_time }
- end
-
- specify do
- request
- expect(Epp::Response.xml(response.body).code?(Epp::Response::Result::Code.key(:billing_failure))).to be_truthy
- end
- end
-end
diff --git a/spec/requests/epp/domain/update/nameserver_add_spec.rb b/spec/requests/epp/domain/update/nameserver_add_spec.rb
deleted file mode 100644
index ffad74176..000000000
--- a/spec/requests/epp/domain/update/nameserver_add_spec.rb
+++ /dev/null
@@ -1,95 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe 'EPP domain:update' do
- let(:registrar) { create(:registrar) }
- let(:user) { create(:api_user_epp, registrar: registrar) }
- let(:session_id) { create(:epp_session, user: user).session_id }
- let!(:domain) { create(:domain, name: 'test.com') }
- subject(:response_xml) { Nokogiri::XML(response.body) }
- subject(:response_code) { response_xml.xpath('//xmlns:result').first['code'] }
- subject(:response_description) { response_xml.css('result msg').text }
-
- before :example do
- sign_in user
-
- allow(Domain).to receive(:nameserver_required?).and_return(false)
- Setting.ns_min_count = 2
- Setting.ns_max_count = 3
- end
-
- context 'when nameserver count is less than minimum' do
- let(:request_xml) { <<-XML
-
-
-
-
-
- test.com
-
-
-
- ns1.test.ee
-
-
-
-
-
-
-
- XML
- }
-
- it 'returns epp code of 2308' do
- post '/epp/command/update', { frame: request_xml }, 'HTTP_COOKIE' => "session=#{session_id}"
- expect(response_code).to eq('2308'), "Expected EPP code of 2308, got #{response_code} (#{response_description})"
- end
-
- it 'returns epp description' do
- post '/epp/command/update', { frame: request_xml }, 'HTTP_COOKIE' => "session=#{session_id}"
-
- description = 'Data management policy violation;' \
- " Nameserver count must be between #{Setting.ns_min_count}-#{Setting.ns_max_count}" \
- ' for active domains [nameservers]'
- expect(response_description).to eq(description)
- end
- end
-
- context 'when nameserver count satisfies required minimum' do
- let!(:domain) { create(:domain, name: 'test.com') }
- let(:request_xml) { <<-XML
-
-
-
-
-
- test.com
-
-
-
- ns1.test.ee
-
-
- ns2.test.ee
-
-
-
-
-
-
-
- XML
- }
-
- it 'returns epp code of 1000' do
- post '/epp/command/update', { frame: request_xml }, 'HTTP_COOKIE' => "session=#{session_id}"
- expect(response_code).to eq('1000'), "Expected EPP code of 1000, got #{response_code} (#{response_description})"
- end
-
- it 'removes inactive status' do
- post '/epp/command/update', { frame: request_xml }, 'HTTP_COOKIE' => "session=#{session_id}"
-
- domain = Domain.find_by(name: 'test.com')
- expect(domain.statuses).to_not include(DomainStatus::INACTIVE)
- end
- end
-end
diff --git a/spec/requests/epp/domain/update/nameserver_remove_spec.rb b/spec/requests/epp/domain/update/nameserver_remove_spec.rb
deleted file mode 100644
index 4fcaa61dc..000000000
--- a/spec/requests/epp/domain/update/nameserver_remove_spec.rb
+++ /dev/null
@@ -1,108 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe 'EPP domain:update' do
- let(:registrar) { create(:registrar) }
- let(:user) { create(:api_user_epp, registrar: registrar) }
- let(:session_id) { create(:epp_session, user: user).session_id }
- subject(:response_xml) { Nokogiri::XML(response.body) }
- subject(:response_code) { response_xml.xpath('//xmlns:result').first['code'] }
- subject(:response_description) { response_xml.css('result msg').text }
-
- before :example do
- sign_in user
- allow(Domain).to receive(:nameserver_required?).and_return(false)
- end
-
- context 'when remaining nameserver count is less than required minimum' do
- let!(:domain) { create(:domain, name: 'test.com') }
- let(:request_xml) { <<-XML
-
-
-
-
-
- test.com
-
-
-
- ns1.test.ee
-
-
-
-
-
-
-
- XML
- }
-
- before :example do
- Setting.ns_min_count = 2
- Setting.ns_max_count = 3
-
- domain.nameservers << create(:nameserver, hostname: 'ns1.test.ee')
- domain.nameservers << create(:nameserver, hostname: 'ns2.test.ee')
- end
-
- it 'returns epp code of 2308' do
- post '/epp/command/update', { frame: request_xml }, 'HTTP_COOKIE' => "session=#{session_id}"
- expect(response_code).to eq('2308'), "Expected EPP code of 2308, got #{response_code} (#{response_description})"
- end
-
- it 'returns epp description' do
- post '/epp/command/update', { frame: request_xml }, 'HTTP_COOKIE' => "session=#{session_id}"
-
- description = 'Data management policy violation;' \
- " Nameserver count must be between #{Setting.ns_min_count}-#{Setting.ns_max_count}" \
- ' for active domains [nameservers]'
- expect(response_description).to eq(description)
- end
- end
-
- context 'when all nameservers are removed' do
- let!(:domain) { create(:domain, name: 'test.com') }
- let(:request_xml) { <<-XML
-
-
-
-
-
- test.com
-
-
-
- ns1.test.ee
-
-
- ns2.test.ee
-
-
-
-
-
-
-
- XML
- }
-
- before :example do
- domain.nameservers << create(:nameserver, hostname: 'ns1.test.ee')
- domain.nameservers << create(:nameserver, hostname: 'ns2.test.ee')
- domain.activate
- domain.save!
- end
-
- it 'returns epp code of 1000' do
- post '/epp/command/update', { frame: request_xml }, 'HTTP_COOKIE' => "session=#{session_id}"
- expect(response_code).to eq('1000'), "Expected EPP code of 1000, got #{response_code} (#{response_description})"
- end
-
- describe 'domain' do
- it 'has status of inactive' do
- post '/epp/command/update', { frame: request_xml }, 'HTTP_COOKIE' => "session=#{session_id}"
- domain = Domain.find_by(name: 'test.com')
- expect(domain.statuses).to include(DomainStatus::INACTIVE)
- end
- end
- end
-end
diff --git a/spec/requests/epp/domain/update/registrant_change/same_as_current_spec.rb b/spec/requests/epp/domain/update/registrant_change/same_as_current_spec.rb
deleted file mode 100644
index bafe6fb0a..000000000
--- a/spec/requests/epp/domain/update/registrant_change/same_as_current_spec.rb
+++ /dev/null
@@ -1,215 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe 'EPP domain:update' do
- let(:registrar) { create(:registrar) }
- let(:user) { create(:api_user_epp, registrar: registrar) }
- let(:session_id) { create(:epp_session, user: user).session_id }
- let(:request) { post '/epp/command/update', { frame: request_xml }, 'HTTP_COOKIE' => "session=#{session_id}" }
- let!(:domain) { create(:domain, name: 'test.com', registrant: registrant) }
-
- before :example do
- sign_in user
- end
-
- context 'when registrant change confirmation is enabled' do
- before :example do
- Setting.request_confrimation_on_registrant_change_enabled = true
- end
-
- context 'when given registrant is the same as current one' do
- let!(:registrant) { create(:registrant, code: 'TEST') }
- let(:request_xml) { <<-XML
-
-
-
-
-
- test.com
-
- TEST
-
-
-
-
-
- #{valid_legal_document}
-
-
-
-
- XML
- }
-
- specify do
- request
- expect(Epp::Response.xml(response.body).code?(Epp::Response::Result::Code.key(:completed_successfully))).to be_truthy
- end
-
- it 'keeps same registrant' do
- expect { request; domain.reload }.to_not change { domain.registrant.code }
- end
-
- it 'does not ask for confirmation' do
- request
- domain.reload
- expect(domain.registrant_verification_asked?).to be false
- end
-
- it 'does not send confirmation and notice emails' do
- expect { request }.to_not change { ActionMailer::Base.deliveries.count }
- end
- end
-
- context 'when given registrant is different than current one' do
- let!(:registrant) { create(:registrant, code: 'OLD-CODE') }
- let!(:new_registrant) { create(:registrant, code: 'NEW-CODE') }
- let(:request_xml) { <<-XML
-
-
-
-
-
- test.com
-
- NEW-CODE
-
-
-
-
-
- #{valid_legal_document}
-
-
-
-
- XML
- }
-
- specify do
- request
- expect(Epp::Response.xml(response.body).code?(Epp::Response::Result::Code.key(:completed_successfully_action_pending))).to be_truthy
- end
-
- it 'does not change registrant without confirmation' do
- expect { request; domain.reload }.to_not change { domain.registrant.code }
- end
-
- it 'asks for confirmation' do
- request
- domain.reload
- expect(domain.registrant_verification_asked?).to be true
- end
-
- it 'sets PENDING_UPDATE status' do
- request
- domain.reload
- expect(domain.statuses).to include(DomainStatus::PENDING_UPDATE)
- end
-
- it 'sends confirmation and notice emails' do
- expect { request }.to change { ActionMailer::Base.deliveries.count }.by(2)
- end
- end
- end
-
- context 'when registrant change confirmation is disabled' do
- before :example do
- Setting.request_confrimation_on_registrant_change_enabled = false
- end
-
- context 'when given registrant is the same as current one' do
- let!(:registrant) { create(:registrant, code: 'TEST') }
- let(:request_xml) { <<-XML
-
-
-
-
-
- test.com
-
- TEST
-
-
-
-
-
- #{valid_legal_document}
-
-
-
-
- XML
- }
-
- specify do
- request
- expect(Epp::Response.xml(response.body).code?(Epp::Response::Result::Code.key(:completed_successfully))).to be_truthy
- end
-
- it 'keeps same registrant' do
- expect { request; domain.reload }.to_not change { domain.registrant.code }
- end
-
- it 'does not ask for confirmation' do
- request
- domain.reload
- expect(domain.registrant_verification_asked?).to be false
- end
-
- it 'does not send confirmation and notice emails' do
- expect { request }.to_not change { ActionMailer::Base.deliveries.count }
- end
- end
-
- context 'when given registrant is different than current one' do
- let!(:registrant) { create(:registrant, code: 'OLD-CODE') }
- let!(:new_registrant) { create(:registrant, code: 'NEW-CODE') }
- let(:request_xml) { <<-XML
-
-
-
-
-
- test.com
-
- NEW-CODE
-
-
-
-
-
- #{valid_legal_document}
-
-
-
-
- XML
- }
-
- specify do
- request
- expect(Epp::Response.xml(response.body).code?(Epp::Response::Result::Code.key(:completed_successfully))).to be_truthy
- end
-
- it 'changes registrant without confirmation' do
- expect { request; domain.reload }.to change { domain.registrant.code }.from('OLD-CODE').to('NEW-CODE')
- end
-
- it 'does not ask for confirmation' do
- request
- domain.reload
- expect(domain.registrant_verification_asked?).to be false
- end
-
- it 'does not set PENDING_UPDATE status' do
- request
- domain.reload
- expect(domain.statuses).to_not include(DomainStatus::PENDING_UPDATE)
- end
-
- it 'does not send confirmation and notice emails' do
- expect { request }.to_not change { ActionMailer::Base.deliveries.count }
- end
- end
- end
-end
diff --git a/spec/requests/epp/domain/update/registrant_change/verified_spec.rb b/spec/requests/epp/domain/update/registrant_change/verified_spec.rb
deleted file mode 100644
index 8bb66e61c..000000000
--- a/spec/requests/epp/domain/update/registrant_change/verified_spec.rb
+++ /dev/null
@@ -1,199 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe 'EPP domain:update' do
- let(:registrar) { create(:registrar) }
- let(:user) { create(:api_user_epp, registrar: registrar) }
- let(:session_id) { create(:epp_session, user: user).session_id }
- let(:request) { post '/epp/command/update', { frame: request_xml }, 'HTTP_COOKIE' => "session=#{session_id}" }
- let!(:registrant) { create(:registrant, code: 'old-code') }
- let!(:domain) { create(:domain, name: 'test.com', registrant: registrant) }
- let!(:new_registrant) { create(:registrant, code: 'new-code') }
-
- before :example do
- sign_in user
- end
-
- context 'when registrant change confirmation is enabled' do
- before :example do
- Setting.request_confrimation_on_registrant_change_enabled = true
- end
-
- context 'when verified' do
- let(:request_xml) { <<-XML
-
-
-
-
-
- test.com
-
- new-code
-
-
-
-
-
- #{valid_legal_document}
-
-
-
-
- XML
- }
-
- specify do
- request
- expect(Epp::Response.xml(response.body).code?(Epp::Response::Result::Code.key(:completed_successfully))).to be_truthy
- end
-
- it 'changes registrant' do
- expect { request; domain.reload }.to change { domain.registrant.code }.from('old-code').to('new-code')
- end
-
- it 'does not send confirmation email' do
- expect { request }.to_not change { ActionMailer::Base.deliveries.count }
- end
-
- it 'does not set PENDING_UPDATE status to domain' do
- request
- domain.reload
- expect(domain.statuses).to_not include(DomainStatus::PENDING_UPDATE)
- end
- end
-
- context 'when not verified' do
- let(:request_xml) { <<-XML
-
-
-
-
-
- test.com
-
- new-code
-
-
-
-
-
- #{valid_legal_document}
-
-
-
-
- XML
- }
-
- specify do
- request
- expect(Epp::Response.xml(response.body).code?(Epp::Response::Result::Code.key(:completed_successfully_action_pending))).to be_truthy
- end
-
- it 'does not change registrant' do
- expect { request; domain.reload }.to_not change { domain.registrant.code }
- end
-
- it 'sends confirmation and notice emails' do
- expect { request }.to change { ActionMailer::Base.deliveries.count }.by(2)
- end
-
- it 'sets PENDING_UPDATE status to domain' do
- request
- domain.reload
- expect(domain.statuses).to include(DomainStatus::PENDING_UPDATE)
- end
- end
- end
-
- context 'when registrant change confirmation is disabled' do
- before :example do
- Setting.request_confrimation_on_registrant_change_enabled = false
- end
-
- context 'when verified' do
- let(:request_xml) { <<-XML
-
-
-
-
-
- test.com
-
- new-code
-
-
-
-
-
- #{valid_legal_document}
-
-
-
-
- XML
- }
-
- specify do
- request
- expect(Epp::Response.xml(response.body).code?(Epp::Response::Result::Code.key(:completed_successfully))).to be_truthy
- end
-
- it 'changes registrant' do
- expect { request; domain.reload }.to change { domain.registrant.code }.from('old-code').to('new-code')
- end
-
- it 'does not send confirmation email' do
- expect { request }.to_not change { ActionMailer::Base.deliveries.count }
- end
-
- it 'does not set PENDING_UPDATE status to domain' do
- request
- domain.reload
- expect(domain.statuses).to_not include(DomainStatus::PENDING_UPDATE)
- end
- end
-
- context 'when not verified' do
- let(:request_xml) { <<-XML
-
-
-
-
-
- test.com
-
- new-code
-
-
-
-
-
- #{valid_legal_document}
-
-
-
-
- XML
- }
-
- specify do
- request
- expect(Epp::Response.xml(response.body).code?(Epp::Response::Result::Code.key(:completed_successfully))).to be_truthy
- end
-
- it 'changes registrant' do
- expect { request; domain.reload }.to change { domain.registrant.code }.from('old-code').to('new-code')
- end
-
- it 'does not send confirmation email' do
- expect { request }.to_not change { ActionMailer::Base.deliveries.count }
- end
-
- it 'does not set PENDING_UPDATE status to domain' do
- request
- domain.reload
- expect(domain.statuses).to_not include(DomainStatus::PENDING_UPDATE)
- end
- end
- end
-end
diff --git a/spec/requests/epp/domain/update/status_spec.rb b/spec/requests/epp/domain/update/status_spec.rb
deleted file mode 100644
index 19be7a960..000000000
--- a/spec/requests/epp/domain/update/status_spec.rb
+++ /dev/null
@@ -1,40 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe 'EPP domain:update' do
- let(:registrar) { create(:registrar) }
- let(:user) { create(:api_user_epp, registrar: registrar) }
- let(:session_id) { create(:epp_session, user: user).session_id }
- let(:request) { post '/epp/command/update', { frame: request_xml }, 'HTTP_COOKIE' => "session=#{session_id}" }
- let(:request_xml) { <<-XML
-
-
-
-
-
- test.com
-
-
-
-
- XML
- }
-
- before :example do
- sign_in user
- end
-
- context 'when domain has both SERVER_DELETE_PROHIBITED and PENDING_UPDATE statuses' do
- let!(:domain) { create(:domain,
- name: 'test.com',
- statuses: [DomainStatus::SERVER_DELETE_PROHIBITED,
- DomainStatus::PENDING_UPDATE])
- }
-
- it 'returns PENDING_UPDATE as domain status' do
- request
- status = Nokogiri::XML(response.body).at_xpath('//domain:status',
- domain: 'https://epp.tld.ee/schema/domain-eis-1.0.xsd').content
- expect(status).to eq(DomainStatus::PENDING_UPDATE)
- end
- end
-end
diff --git a/spec/requests/registrar/ip_restriction_spec.rb b/spec/requests/registrar/ip_restriction_spec.rb
deleted file mode 100644
index 49a04428a..000000000
--- a/spec/requests/registrar/ip_restriction_spec.rb
+++ /dev/null
@@ -1,87 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe 'Registrar area IP restriction', settings: false do
- before do
- @original_registrar_ip_whitelist_enabled_setting = Setting.registrar_ip_whitelist_enabled
- end
-
- after do
- Setting.registrar_ip_whitelist_enabled = @original_registrar_ip_whitelist_enabled_setting
- end
-
- context 'when authenticated' do
- before do
- sign_in_to_registrar_area
- end
-
- context 'when IP restriction is enabled' do
- before do
- Setting.registrar_ip_whitelist_enabled = true
- end
-
- context 'when ip is allowed' do
- let!(:white_ip) { create(:white_ip,
- ipv4: '127.0.0.1',
- registrar: controller.current_registrar_user.registrar,
- interfaces: [WhiteIp::REGISTRAR]) }
-
- specify do
- get registrar_root_url
- expect(response).to be_success
- end
- end
-
- context 'when ip is not allowed' do
- it 'signs the user out' do
- get registrar_root_url
- expect(controller.current_registrar_user).to be_nil
- end
-
- it 'redirects to login url' do
- get registrar_root_url
- expect(response).to redirect_to(new_registrar_user_session_url)
- end
- end
- end
-
- context 'when IP restriction is disabled' do
- specify do
- get registrar_root_url
- expect(response).to be_success
- end
- end
- end
-
- context 'when unauthenticated' do
- context 'when IP restriction is enabled' do
- before do
- Setting.registrar_ip_whitelist_enabled = true
- end
-
- context 'when ip is allowed' do
- let!(:white_ip) { create(:white_ip,
- ipv4: '127.0.0.1',
- interfaces: [WhiteIp::REGISTRAR]) }
-
- specify do
- get new_registrar_user_session_path
- expect(response).to be_success
- end
- end
-
- context 'when ip is not allowed' do
- specify do
- get new_registrar_user_session_path
- expect(response.body).to match "Access denied"
- end
- end
- end
-
- context 'when IP restriction is disabled' do
- specify do
- get new_registrar_user_session_path
- expect(response).to be_success
- end
- end
- end
-end
diff --git a/spec/requests/registrar/linked_users_spec.rb b/spec/requests/registrar/linked_users_spec.rb
deleted file mode 100644
index 05cf10600..000000000
--- a/spec/requests/registrar/linked_users_spec.rb
+++ /dev/null
@@ -1,68 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe 'Registrar area linked users', db: false do
- describe 'user switch' do
- context 'when user is authenticated', db: true do
- let!(:current_user) { create(:api_user, id: 1, identity_code: 'code') }
-
- before do
- sign_in current_user
- end
-
- context 'when ip is allowed' do
- let(:restricted_ip) { instance_double(Authorization::RestrictedIP,
- can_access_registrar_area?: true) }
-
- before do
- allow(Authorization::RestrictedIP).to receive(:new).and_return(restricted_ip)
- end
-
- context 'when new user is linked' do
- let!(:new_user) { create(:api_user, id: 2, identity_code: 'code') }
-
- it 'signs in as a new user' do
- put '/registrar/current_user/switch/2', nil, { HTTP_REFERER: registrar_contacts_url }
- follow_redirect!
- expect(controller.current_registrar_user.id).to eq(2)
- end
-
- it 'redirects back' do
- put '/registrar/current_user/switch/2', nil, { HTTP_REFERER: 'http://previous.url' }
- expect(response).to redirect_to('http://previous.url')
- end
- end
-
- context 'when new user is unlinked' do
- let!(:new_user) { create(:api_user, id: 2, identity_code: 'another-code') }
-
- it 'throws exception' do
- expect do
- put '/registrar/current_user/switch/2', nil, { HTTP_REFERER: registrar_contacts_path }
- end.to raise_error('Cannot switch to unlinked user')
- end
- end
- end
-
- context 'when ip is not allowed' do
- let(:restricted_ip) { instance_double(Authorization::RestrictedIP,
- can_access_registrar_area?: false) }
-
- before do
- allow(Authorization::RestrictedIP).to receive(:new).and_return(restricted_ip)
- end
-
- specify do
- put '/registrar/current_user/switch/2'
- expect(response).to redirect_to(new_registrar_user_session_url)
- end
- end
- end
-
- context 'when user is not authenticated' do
- specify do
- put '/registrar/current_user/switch/2'
- expect(response).to redirect_to(new_registrar_user_session_url)
- end
- end
- end
-end
diff --git a/spec/routing/registrant/domain_delete_confirms_routing_spec.rb b/spec/routing/registrant/domain_delete_confirms_routing_spec.rb
deleted file mode 100644
index cf7691bb4..000000000
--- a/spec/routing/registrant/domain_delete_confirms_routing_spec.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe Registrant::DomainDeleteConfirmsController do
- describe 'routing' do
- it 'routes to #show' do
- expect(get: '/registrant/domain_delete_confirms/1').to route_to('registrant/domain_delete_confirms#show', id: '1')
- end
- end
-end
diff --git a/spec/routing/registrant/domain_update_confirms_routing_spec.rb b/spec/routing/registrant/domain_update_confirms_routing_spec.rb
deleted file mode 100644
index 9bc98c391..000000000
--- a/spec/routing/registrant/domain_update_confirms_routing_spec.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe Registrant::DomainUpdateConfirmsController do
- describe 'routing' do
- it 'routes to #show' do
- expect(get: '/registrant/domain_update_confirms/1').to route_to('registrant/domain_update_confirms#show', id: '1')
- end
- end
-end
diff --git a/spec/services/registrant_change_spec.rb b/spec/services/registrant_change_spec.rb
deleted file mode 100644
index 598874109..000000000
--- a/spec/services/registrant_change_spec.rb
+++ /dev/null
@@ -1,20 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe RegistrantChange do
- describe '#confirm' do
- let(:domain) { instance_double(Domain) }
- let(:old_registrant) { instance_double(Registrant) }
- let(:message) { instance_spy(ActionMailer::MessageDelivery) }
-
- before :example do
- allow(RegistrantChangeMailer).to receive(:accepted)
- .with(domain: domain, old_registrant: old_registrant)
- .and_return(message)
- described_class.new(domain: domain, old_registrant: old_registrant).confirm
- end
-
- it 'notifies registrant' do
- expect(message).to have_received(:deliver_now)
- end
- end
-end
diff --git a/spec/support/capybara.rb b/spec/support/capybara.rb
deleted file mode 100644
index 5434f1a84..000000000
--- a/spec/support/capybara.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-require_relative 'macros/capybara'
-
-RSpec.configure do |config|
- config.include CapybaraViewMacros, type: :view
- config.include CapybaraViewMacros, type: :presenter
-end
diff --git a/spec/support/database_cleaner.rb b/spec/support/database_cleaner.rb
deleted file mode 100644
index 581f5ac7c..000000000
--- a/spec/support/database_cleaner.rb
+++ /dev/null
@@ -1,30 +0,0 @@
-RSpec.configure do |config|
- db_connection_names = ActiveRecord::Base.configurations.keys.grep(/test/).map(&:to_sym).reverse
-
- config.before :suite do
- DatabaseCleaner.strategy = :truncation
-
- db_connection_names.each do |connection_name|
- ActiveRecord::Base.establish_connection(connection_name)
- DatabaseCleaner[:active_record, connection: connection_name].strategy = :truncation
- end
- end
-
- config.before :example do |example|
- if example.metadata[:db]
- db_connection_names.each do |connection_name|
- ActiveRecord::Base.establish_connection(connection_name)
- DatabaseCleaner[:active_record, connection: connection_name].start
- end
- end
- end
-
- config.after :example do |example|
- if example.metadata[:db]
- db_connection_names.each do |connection_name|
- ActiveRecord::Base.establish_connection(connection_name)
- DatabaseCleaner[:active_record, connection: connection_name].clean
- end
- end
- end
-end
diff --git a/spec/support/devise.rb b/spec/support/devise.rb
deleted file mode 100644
index 4dcb76759..000000000
--- a/spec/support/devise.rb
+++ /dev/null
@@ -1,3 +0,0 @@
-RSpec.configure do |config|
- config.include Warden::Test::Helpers
-end
diff --git a/spec/support/features/session_helpers.rb b/spec/support/features/session_helpers.rb
deleted file mode 100644
index 11724f420..000000000
--- a/spec/support/features/session_helpers.rb
+++ /dev/null
@@ -1,26 +0,0 @@
-module Features
- module SessionHelpers
- def sign_in_to_admin_area(user: create(:admin_user))
- visit new_admin_user_session_url
-
- fill_in 'admin_user[username]', with: user.username
- fill_in 'admin_user[password]', with: user.password
-
- click_button 'Sign in'
- end
-
- def sign_in_to_registrar_area(user: create(:api_user))
- visit new_registrar_user_session_url
-
- fill_in 'registrar_user_username', with: user.username
- fill_in 'registrar_user_password', with: user.plain_text_password
-
- click_button 'Login'
- end
-
- def sign_in_to_registrant_area
- user = create(:registrant_user)
- sign_in(user, scope: :user)
- end
- end
-end
diff --git a/spec/support/macros/capybara.rb b/spec/support/macros/capybara.rb
deleted file mode 100644
index 0e9dbf7b0..000000000
--- a/spec/support/macros/capybara.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-module CapybaraViewMacros
- def page
- Capybara::Node::Simple.new(rendered)
- end
-end
diff --git a/spec/support/matchers/alias_attribute.rb b/spec/support/matchers/alias_attribute.rb
deleted file mode 100644
index 93b4efbb0..000000000
--- a/spec/support/matchers/alias_attribute.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-RSpec::Matchers.define :alias_attribute do |alias_name, original_name|
- match do |actual|
- actual.class.attribute_alias(alias_name) == original_name.to_s
- end
-
- failure_message do |actual|
- "expected #{actual.class.name} to alias attribute :#{alias_name} by :#{original_name}"
- end
-end
diff --git a/spec/support/paper_trail.rb b/spec/support/paper_trail.rb
deleted file mode 100644
index 7304b8b60..000000000
--- a/spec/support/paper_trail.rb
+++ /dev/null
@@ -1 +0,0 @@
-PaperTrail.whodunnit = 'autotest'
diff --git a/spec/support/requests/epp_helpers.rb b/spec/support/requests/epp_helpers.rb
deleted file mode 100644
index 1bdcd3075..000000000
--- a/spec/support/requests/epp_helpers.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-module Requests
- module EPPHelpers
- def valid_legal_document
- Base64.encode64('a' * 5000)
- end
- end
-end
diff --git a/spec/support/requests/session_helpers.rb b/spec/support/requests/session_helpers.rb
deleted file mode 100644
index 1a7b90138..000000000
--- a/spec/support/requests/session_helpers.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-module Requests
- module SessionHelpers
- def sign_in_to_admin_area(user: create(:admin_user))
- post admin_user_session_path, admin_user: { username: user.username, password: user.password }
- end
-
- def sign_in_to_registrar_area(user: create(:api_user))
- post registrar_user_session_path, { registrar_user: { username: user.username, password: user.plain_text_password } }
- end
- end
-end
\ No newline at end of file
diff --git a/spec/support/settings.rb b/spec/support/settings.rb
deleted file mode 100644
index e39fea035..000000000
--- a/spec/support/settings.rb
+++ /dev/null
@@ -1,28 +0,0 @@
-RSpec.configure do |config|
- config.before :example do |example|
- if example.metadata[:db] && (example.metadata[:settings] != false)
- create(:zone, origin: 'com')
-
- Setting.ds_algorithm = 2
- Setting.ds_data_allowed = true
- Setting.ds_data_with_key_allowed = true
- Setting.key_data_allowed = false
-
- Setting.dnskeys_min_count = 0
- Setting.dnskeys_max_count = 9
-
- Setting.nameserver_required = false
- Setting.ns_min_count = 2
- Setting.ns_max_count = 11
-
- Setting.transfer_wait_time = 0
-
- Setting.admin_contacts_min_count = 1
- Setting.admin_contacts_max_count = 10
- Setting.tech_contacts_min_count = 0
- Setting.tech_contacts_max_count = 10
-
- Setting.client_side_status_editing_enabled = true
- end
- end
-end
diff --git a/spec/validators/contact/ident/mismatch_validator_spec.rb b/spec/validators/contact/ident/mismatch_validator_spec.rb
deleted file mode 100644
index dfb30fe09..000000000
--- a/spec/validators/contact/ident/mismatch_validator_spec.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe Contact::Ident::MismatchValidator do
- describe '::mismatches' do
- it 'returns mismatches' do
- mismatches = [
- Contact::Ident::MismatchValidator::Mismatch.new('birthday', Country.new('EE'))
- ]
-
- expect(described_class.mismatches).to eq(mismatches)
- end
- end
-end
diff --git a/spec/views/admin/billing/prices/_form.html.erb_spec.rb b/spec/views/admin/billing/prices/_form.html.erb_spec.rb
deleted file mode 100644
index 2349a5d1e..000000000
--- a/spec/views/admin/billing/prices/_form.html.erb_spec.rb
+++ /dev/null
@@ -1,22 +0,0 @@
-require 'rails_helper'
-require 'views/shared_examples/money_form_field'
-
-RSpec.describe 'admin/billing/prices/_form' do
- let(:price) { build_stubbed(:price) }
-
- before :example do
- without_partial_double_verification do
- allow(view).to receive(:price).and_return(price)
- allow(view).to receive(:zones).and_return([])
- allow(view).to receive(:operation_categories).and_return([])
- allow(view).to receive(:durations).and_return([])
- end
-
- stub_template '_form_errors.html.erb' => ''
- end
-
- describe 'price' do
- let(:field) { page.find('#price_price') }
- it_behaves_like 'money form field'
- end
-end
diff --git a/spec/views/admin/dns/zones/index.html.erb_spec.rb b/spec/views/admin/dns/zones/index.html.erb_spec.rb
deleted file mode 100644
index e066ce79b..000000000
--- a/spec/views/admin/dns/zones/index.html.erb_spec.rb
+++ /dev/null
@@ -1,40 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe 'admin/dns/zones/index' do
- let(:zones) { [] }
-
- before :example do
- assign(:zones, zones)
- stub_template '_zone.html.erb' => 'zone-row'
- end
-
- it 'has title' do
- render
- expect(rendered).to have_text(t('admin.dns.zones.index.title'))
- end
-
- context 'when zones are present' do
- let(:zones) { [build_stubbed(:zone)] }
-
- it 'has zone row' do
- render
- expect(rendered).to have_text('zone-row')
- end
-
- it 'has no :not_found message' do
- render
- expect(rendered).to_not have_text(not_found_message)
- end
- end
-
- context 'when zones are absent' do
- it 'has :not_found message' do
- render
- expect(rendered).to have_text(not_found_message)
- end
- end
-
- def not_found_message
- t('admin.dns.zones.index.not_found')
- end
-end
diff --git a/spec/views/admin/domains/edit.html.erb_spec.rb b/spec/views/admin/domains/edit.html.erb_spec.rb
deleted file mode 100644
index 3f74a1f2e..000000000
--- a/spec/views/admin/domains/edit.html.erb_spec.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe 'admin/domains/edit' do
- let(:domain) { build_stubbed(:domain) }
- let(:domain_presenter) { DomainPresenter.new(domain: domain, view: view) }
-
- before :example do
- allow(DomainPresenter).to receive(:new).and_return(domain_presenter)
-
- without_partial_double_verification do
- allow(view).to receive(:force_delete_templates)
- end
-
- assign(:domain, domain)
-
- stub_template '_form.html.erb' => ''
- stub_template '_force_delete_dialog.html.erb' => ''
- end
-
- it 'has force_delete_toggle_btn' do
- expect(domain_presenter).to receive(:force_delete_toggle_btn).and_return('force_delete_toggle_btn')
- render
- expect(rendered).to have_content('force_delete_toggle_btn')
- end
-end
diff --git a/spec/views/registrar/contacts/_form.haml_spec.rb b/spec/views/registrar/contacts/_form.haml_spec.rb
deleted file mode 100644
index 4feead879..000000000
--- a/spec/views/registrar/contacts/_form.haml_spec.rb
+++ /dev/null
@@ -1,45 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe 'registrar/contacts/_form' do
- let(:contact) { instance_spy(Depp::Contact) }
-
- before :example do
- without_partial_double_verification do
- allow(view).to receive(:f).and_return(ActionView::Helpers::FormBuilder.new(:contact, contact, view, {}))
- end
-
- assign(:contact, contact)
-
- stub_template 'registrar/shared/_error_messages.haml' => ''
- stub_template 'registrar/contacts/form/_general.html.haml' => ''
- stub_template 'registrar/contacts/form/_address.html.haml' => 'address info'
- stub_template 'registrar/contacts/form/_code.html.haml' => ''
- stub_template 'registrar/contacts/form/_legal_document.html.haml' => ''
- end
-
- context 'when address processing is enabled' do
- before do
- without_partial_double_verification do
- allow(view).to receive(:address_processing?).and_return(true)
- end
- end
-
- it 'has address' do
- render
- expect(rendered).to have_text('address info')
- end
- end
-
- context 'when address processing is disabled' do
- before do
- without_partial_double_verification do
- allow(view).to receive(:address_processing?).and_return(false)
- end
- end
-
- it 'has no address' do
- render
- expect(rendered).to_not have_text('address info')
- end
- end
-end
diff --git a/spec/views/registrar/contacts/form/_legal_document.haml_spec.rb b/spec/views/registrar/contacts/form/_legal_document.haml_spec.rb
deleted file mode 100644
index 55ac79e9e..000000000
--- a/spec/views/registrar/contacts/form/_legal_document.haml_spec.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe 'registrar/contacts/form/_legal_document' do
- let(:contact) { instance_spy(Depp::Contact) }
-
- before :example do
- without_partial_double_verification do
- allow(view).to receive(:f).and_return(DefaultFormBuilder.new(:depp_contact, contact, view, {}))
- end
-
- assign(:contact, contact)
- end
-
- it 'has legal document' do
- render
- expect(rendered).to have_css('[name="depp_contact[legal_document]"]')
- end
-end
diff --git a/spec/views/registrar/contacts/show.haml_spec.rb b/spec/views/registrar/contacts/show.haml_spec.rb
deleted file mode 100644
index 666d151ff..000000000
--- a/spec/views/registrar/contacts/show.haml_spec.rb
+++ /dev/null
@@ -1,36 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe 'registrar/contacts/show' do
- let(:contact) { instance_spy(Depp::Contact, id: 1, name: 'test') }
-
- before do
- assign(:contact, contact)
- stub_template 'shared/_title.html.haml' => ''
- stub_template 'registrar/contacts/partials/_general.html.haml' => ''
- stub_template 'registrar/contacts/partials/_statuses.html.haml' => ''
- stub_template 'registrar/contacts/partials/_domains.html.haml' => ''
- stub_template 'registrar/contacts/partials/_address.html.haml' => 'address info'
- end
-
- context 'when address processing is enabled' do
- before do
- allow(Contact).to receive(:address_processing?).and_return(true)
- end
-
- it 'has address' do
- render
- expect(rendered).to have_text('address info')
- end
- end
-
- context 'when address processing is disabled' do
- before do
- allow(Contact).to receive(:address_processing?).and_return(false)
- end
-
- it 'has no address' do
- render
- expect(rendered).to_not have_text('address info')
- end
- end
-end
diff --git a/spec/views/registrar/domains/_form.haml_spec.rb b/spec/views/registrar/domains/_form.haml_spec.rb
deleted file mode 100644
index 723ab081b..000000000
--- a/spec/views/registrar/domains/_form.haml_spec.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe 'registrar/domains/_form' do
- let(:domain) { instance_spy(Depp::Domain) }
-
- before :example do
- without_partial_double_verification do
- allow(view).to receive(:f).and_return(DefaultFormBuilder.new(:domain, domain, view, {}))
- end
-
- assign(:domain, domain)
-
- stub_template 'registrar/domains/form/_general.html.haml' => ''
- stub_template 'registrar/domains/form/_contacts.html.haml' => ''
- stub_template 'registrar/domains/form/_nameservers.html.haml' => ''
- stub_template 'registrar/domains/form/_dnskeys.html.haml' => ''
- end
-
- it 'has legal document' do
- render
- expect(rendered).to have_css('[name="domain[legal_document]"]')
- end
-end
diff --git a/spec/views/shared_examples/money_form_field.rb b/spec/views/shared_examples/money_form_field.rb
deleted file mode 100644
index e169f5127..000000000
--- a/spec/views/shared_examples/money_form_field.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-RSpec.shared_examples 'money form field' do
- it 'has max length' do
- render
- expect(field[:maxlength]).to eq('255')
- end
-
- it 'has money pattern' do
- render
- expect(field[:pattern]).to eq('^[0-9.,]+$')
- end
-end
diff --git a/test/fixtures/billing/prices.yml b/test/fixtures/billing/prices.yml
index 2237a72b4..24aa9f980 100644
--- a/test/fixtures/billing/prices.yml
+++ b/test/fixtures/billing/prices.yml
@@ -1,5 +1,5 @@
create_one_month:
- duration: 1 month
+ duration: 3 mons
price_cents: 100
operation_category: create
valid_from: 2010-07-05
@@ -7,7 +7,7 @@ create_one_month:
zone: one
renew_one_month:
- duration: 1 month
+ duration: 1 mons
price_cents: 100
operation_category: renew
valid_from: 2010-07-05
diff --git a/test/fixtures/users.yml b/test/fixtures/users.yml
index 49508c0cf..c507a6b8a 100644
--- a/test/fixtures/users.yml
+++ b/test/fixtures/users.yml
@@ -19,6 +19,7 @@ api_goodnames:
admin:
username: test
+ email: test@registry.test
encrypted_password: <%= Devise::Encryptor.digest(AdminUser, 'testtest') %>
type: AdminUser
country_code: US
diff --git a/test/integration/admin_area/zones_test.rb b/test/integration/admin_area/zones_test.rb
new file mode 100644
index 000000000..cf95aedc5
--- /dev/null
+++ b/test/integration/admin_area/zones_test.rb
@@ -0,0 +1,27 @@
+require 'test_helper'
+
+class AdminAreaZonesIntegrationTest < ApplicationIntegrationTest
+ setup do
+ @zone = dns_zones(:one)
+ sign_in users(:admin)
+ end
+
+ def test_updates_zone
+ new_master_nameserver = 'new.test'
+ assert_not_equal new_master_nameserver, @zone.master_nameserver
+
+ patch admin_zone_path(@zone), zone: { master_nameserver: new_master_nameserver }
+ @zone.reload
+
+ assert_equal new_master_nameserver, @zone.master_nameserver
+ end
+
+ def test_downloads_zone_file
+ post admin_zonefiles_path(origin: @zone.origin)
+
+ assert_response :ok
+ assert_equal 'text/plain', response.headers['Content-Type']
+ assert_equal 'attachment; filename="test.txt"', response.headers['Content-Disposition']
+ assert_not_empty response.body
+ end
+end
diff --git a/test/integration/epp/contact/create/base_test.rb b/test/integration/epp/contact/create/base_test.rb
index 891dea93a..68b30371a 100644
--- a/test/integration/epp/contact/create/base_test.rb
+++ b/test/integration/epp/contact/create/base_test.rb
@@ -1,7 +1,11 @@
require 'test_helper'
class EppContactCreateBaseTest < EppTestCase
- def test_creates_new_contact_with_minimum_required_parameters
+ def test_creates_new_contact_with_required_attributes
+ name = 'new'
+ email = 'new@registrar.test'
+ phone = '+1.2'
+
request_xml = <<-XML
@@ -9,7 +13,76 @@ class EppContactCreateBaseTest < EppTestCase
- New
+ #{name}
+
+ #{phone}
+ #{email}
+
+
+
+
+ any
+
+
+
+
+ XML
+
+ assert_difference 'Contact.count' do
+ post '/epp/command/create', { frame: request_xml }, 'HTTP_COOKIE' => 'session=api_bestnames'
+ end
+
+ assert_epp_response :completed_successfully
+ contact = Contact.find_by(name: name)
+ assert_equal name, contact.name
+ assert_equal email, contact.email
+ assert_equal phone, contact.phone
+ assert_not_empty contact.code
+ end
+
+ def test_respects_custom_code
+ name = 'new'
+ code = 'custom-id'
+ session = epp_sessions(:api_bestnames)
+
+ request_xml = <<-XML
+
+
+
+
+
+ #{code}
+
+ #{name}
+
+ +1.2
+ any@any.test
+
+
+
+
+ any
+
+
+
+
+ XML
+
+ post '/epp/command/create', { frame: request_xml }, 'HTTP_COOKIE' => "session=#{session.session_id}"
+
+ contact = Contact.find_by(name: name)
+ assert_equal "#{session.user.registrar.code}:#{code}".upcase, contact.code
+ end
+
+ def test_fails_when_required_attributes_are_missing
+ request_xml = <<-XML
+
+
+
+
+
+
+ \s
+123.4
new@inbox.test
@@ -24,15 +97,9 @@ class EppContactCreateBaseTest < EppTestCase
XML
- assert_difference 'Contact.count' do
+ assert_no_difference 'Contact.count' do
post '/epp/command/create', { frame: request_xml }, 'HTTP_COOKIE' => 'session=api_bestnames'
end
-
- assert_epp_response :completed_successfully
- contact = Contact.last
- assert_not_empty contact.code
- assert_equal 'New', contact.name
- assert_equal 'new@inbox.test', contact.email
- assert_equal '+123.4', contact.phone
+ assert_epp_response :required_parameter_missing
end
-end
\ No newline at end of file
+end
diff --git a/test/integration/epp/contact/update/base_test.rb b/test/integration/epp/contact/update/base_test.rb
index 2362a4469..7f76a310f 100644
--- a/test/integration/epp/contact/update/base_test.rb
+++ b/test/integration/epp/contact/update/base_test.rb
@@ -133,6 +133,98 @@ class EppContactUpdateBaseTest < EppTestCase
assert_no_emails
end
+ def test_non_existing_contact
+ assert_nil Contact.find_by(code: 'non-existing')
+
+ request_xml = <<-XML
+
+
+
+
+
+ non-existing
+
+
+ any
+
+
+
+
+
+
+ XML
+
+ post '/epp/command/update', { frame: request_xml }, 'HTTP_COOKIE' => 'session=api_bestnames'
+
+ assert_epp_response :object_does_not_exist
+ end
+
+ def test_ident_code_cannot_be_updated
+ new_ident_code = '12345'
+ assert_not_equal new_ident_code, @contact.ident
+
+ # https://github.com/internetee/registry/issues/415
+ @contact.update_columns(code: @contact.code.upcase)
+
+ request_xml = <<-XML
+
+
+
+
+
+ #{@contact.code}
+
+
+
+
+
+
+
+
+ #{new_ident_code}
+
+
+
+
+ XML
+ assert_no_changes -> { @contact.updated_at } do
+ post '/epp/command/update', { frame: request_xml }, 'HTTP_COOKIE' => 'session=api_bestnames'
+ end
+ assert_epp_response :data_management_policy_violation
+ end
+
+ # https://github.com/internetee/registry/issues/576
+ def test_ident_type_and_ident_country_code_can_be_updated_when_absent
+ @contact.update_columns(ident: 'test', ident_type: nil, ident_country_code: nil)
+
+ # https://github.com/internetee/registry/issues/415
+ @contact.update_columns(code: @contact.code.upcase)
+
+ request_xml = <<-XML
+
+
+
+
+
+ #{@contact.code}
+
+
+
+
+
+
+
+ #{@contact.ident}
+
+
+
+
+ XML
+ post '/epp/command/update', { frame: request_xml }, 'HTTP_COOKIE' => 'session=api_bestnames'
+
+ assert_epp_response :completed_successfully
+ end
+
private
def make_contact_free_of_domains_where_it_acts_as_a_registrant(contact)
@@ -140,4 +232,4 @@ class EppContactUpdateBaseTest < EppTestCase
assert_not_equal other_contact, contact
Domain.update_all(registrant_id: other_contact)
end
-end
\ No newline at end of file
+end
diff --git a/test/integration/epp/domain/create/base_test.rb b/test/integration/epp/domain/create/base_test.rb
index e8787645f..43db1e53e 100644
--- a/test/integration/epp/domain/create/base_test.rb
+++ b/test/integration/epp/domain/create/base_test.rb
@@ -1,15 +1,20 @@
require 'test_helper'
class EppDomainCreateBaseTest < EppTestCase
- def test_domain_can_be_registered_with_required_attributes_only
+ def test_registers_new_domain_with_required_attributes
+ now = Time.zone.parse('2010-07-05')
+ travel_to now
+ name = "new.#{dns_zones(:one).origin}"
+ registrant = contacts(:john).becomes(Registrant)
+
request_xml = <<-XML
- new.test
- john-001
+ #{name}
+ #{registrant.code}
@@ -25,9 +30,223 @@ class EppDomainCreateBaseTest < EppTestCase
post '/epp/command/create', { frame: request_xml }, 'HTTP_COOKIE' => 'session=api_bestnames'
end
- domain = Domain.last
- assert_equal 'new.test', domain.name
- assert_equal contacts(:john).becomes(Registrant), domain.registrant
assert_epp_response :completed_successfully
+
+ domain = Domain.find_by(name: name)
+ assert_equal name, domain.name
+ assert_equal registrant, domain.registrant
+ assert_not_empty domain.transfer_code
+
+ default_registration_period = 1.year + 1.day
+ assert_equal now + default_registration_period, domain.expire_time
+ end
+
+ def test_registers_reserved_domain_with_registration_code
+ reserved_domain = reserved_domains(:one)
+ registration_code = reserved_domain.registration_code
+
+ request_xml = <<-XML
+
+
+
+
+
+ #{reserved_domain.name}
+ #{contacts(:john).code}
+
+
+
+
+ #{'test' * 2000}
+
+ #{registration_code}
+
+
+
+
+
+ XML
+
+ assert_difference 'Domain.count' do
+ post '/epp/command/create', { frame: request_xml }, 'HTTP_COOKIE' => 'session=api_bestnames'
+ end
+ assert_epp_response :completed_successfully
+
+ reserved_domain.reload
+ assert_not_equal registration_code, reserved_domain.registration_code
+ end
+
+ def test_respects_custom_transfer_code
+ name = "new.#{dns_zones(:one).origin}"
+ transfer_code = 'custom-transfer-code'
+
+ request_xml = <<-XML
+
+
+
+
+
+ #{name}
+ #{contacts(:john).code}
+
+ #{transfer_code}
+
+
+
+
+
+ #{'test' * 2000}
+
+
+
+
+ XML
+
+ post '/epp/command/create', { frame: request_xml }, 'HTTP_COOKIE' => 'session=api_bestnames'
+
+ assert_epp_response :completed_successfully
+ assert_equal transfer_code, Domain.find_by(name: name).transfer_code
+ end
+
+ def test_blocked_domain_cannot_be_registered
+ blocked_domain = 'blocked.test'
+ assert BlockedDomain.find_by(name: blocked_domain)
+
+ request_xml = <<-XML
+
+
+
+
+
+ #{blocked_domain}
+ #{contacts(:john).code}
+
+
+
+
+ #{'test' * 2000}
+
+
+
+
+ XML
+
+ assert_no_difference 'Domain.count' do
+ post '/epp/command/create', { frame: request_xml }, 'HTTP_COOKIE' => 'session=api_bestnames'
+ end
+ assert_epp_response :data_management_policy_violation
+ end
+
+ def test_reserved_domain_cannot_be_registered_with_wrong_registration_code
+ request_xml = <<-XML
+
+
+
+
+
+ #{reserved_domains(:one).name}
+ #{contacts(:john).code}
+
+
+
+
+ #{'test' * 2000}
+
+ wrong
+
+
+
+
+
+ XML
+
+ assert_no_difference 'Domain.count' do
+ post '/epp/command/create', { frame: request_xml }, 'HTTP_COOKIE' => 'session=api_bestnames'
+ end
+ assert_epp_response :invalid_authorization_information
+ end
+
+ def test_reserved_domain_cannot_be_registered_without_registration_code
+ reserved_domain = reserved_domains(:one)
+
+ request_xml = <<-XML
+
+
+
+
+
+ #{reserved_domain.name}
+ #{contacts(:john).code}
+
+
+
+
+ #{'test' * 2000}
+
+
+
+
+ XML
+
+ assert_no_difference 'Domain.count' do
+ post '/epp/command/create', { frame: request_xml }, 'HTTP_COOKIE' => 'session=api_bestnames'
+ end
+ assert_epp_response :required_parameter_missing
+ end
+
+ def test_insufficient_funds
+ session = epp_sessions(:api_bestnames)
+ session.user.registrar.accounts.first.update!(balance: 0)
+
+ request_xml = <<-XML
+
+
+
+
+
+ new.test
+ #{contacts(:john).code}
+
+
+
+
+ #{'test' * 2000}
+
+
+
+
+ XML
+ assert_no_difference 'Domain.count' do
+ post '/epp/command/create', { frame: request_xml }, 'HTTP_COOKIE' => "session=#{session.session_id}"
+ end
+ assert_epp_response :billing_failure
+ end
+
+ def test_no_price
+ assert_nil Billing::Price.find_by(duration: '2 months')
+
+ request_xml = <<-XML
+
+
+
+
+
+ new.test
+ 2
+ john-001
+
+
+
+
+ #{'test' * 2000}
+
+
+
+
+ XML
+ assert_no_difference 'Domain.count' do
+ post '/epp/command/create', { frame: request_xml }, 'HTTP_COOKIE' => 'session=api_bestnames'
+ end
+ assert_epp_response :billing_failure
end
end
diff --git a/test/integration/epp/domain/create/reserved_test.rb b/test/integration/epp/domain/create/reserved_test.rb
deleted file mode 100644
index 40e5be59d..000000000
--- a/test/integration/epp/domain/create/reserved_test.rb
+++ /dev/null
@@ -1,131 +0,0 @@
-require 'test_helper'
-
-class EppDomainCreateReservedTest < EppTestCase
- setup do
- @reserved_domain = reserved_domains(:one)
- end
-
- def test_registers_reserved_domain_with_correct_registration_code
- assert_equal 'reserved.test', @reserved_domain.name
- assert_equal 'reserved-001', @reserved_domain.registration_code
-
- request_xml = <<-XML
-
-
-
-
-
- reserved.test
- john-001
-
-
-
-
- #{'test' * 2000}
-
- reserved-001
-
-
-
-
-
- XML
-
- assert_difference 'Domain.count' do
- post '/epp/command/create', { frame: request_xml }, 'HTTP_COOKIE' => 'session=api_bestnames'
- end
- assert_epp_response :completed_successfully
- end
-
- def test_registering_reserved_domain_regenerates_registration_code
- assert_equal 'reserved.test', @reserved_domain.name
- assert_equal 'reserved-001', @reserved_domain.registration_code
-
- request_xml = <<-XML
-
-
-
-
-
- reserved.test
- john-001
-
-
-
-
- #{'test' * 2000}
-
- reserved-001
-
-
-
-
-
- XML
-
- post '/epp/command/create', { frame: request_xml }, 'HTTP_COOKIE' => 'session=api_bestnames'
- @reserved_domain.reload
-
- assert_not_equal 'reserved-001', @reserved_domain.registration_code
- end
-
- def test_domain_cannot_be_registered_with_wrong_registration_code
- assert_equal 'reserved.test', @reserved_domain.name
- assert_equal 'reserved-001', @reserved_domain.registration_code
-
- request_xml = <<-XML
-
-
-
-
-
- reserved.test
- john-001
-
-
-
-
- #{'test' * 2000}
-
- wrong
-
-
-
-
-
- XML
-
- assert_no_difference 'Domain.count' do
- post '/epp/command/create', { frame: request_xml }, 'HTTP_COOKIE' => 'session=api_bestnames'
- end
- assert_epp_response :invalid_authorization_information
- end
-
- def test_domain_cannot_be_registered_without_registration_code
- assert_equal 'reserved.test', @reserved_domain.name
-
- request_xml = <<-XML
-
-
-
-
-
- reserved.test
- john-001
-
-
-
-
- #{'test' * 2000}
-
-
-
-
- XML
-
- assert_no_difference 'Domain.count' do
- post '/epp/command/create', { frame: request_xml }, 'HTTP_COOKIE' => 'session=api_bestnames'
- end
- assert_epp_response :required_parameter_missing
- end
-end
diff --git a/test/integration/epp/domain/create/transfer_code_test.rb b/test/integration/epp/domain/create/transfer_code_test.rb
deleted file mode 100644
index 05c7d0bec..000000000
--- a/test/integration/epp/domain/create/transfer_code_test.rb
+++ /dev/null
@@ -1,62 +0,0 @@
-require 'test_helper'
-
-class EppDomainCreateTransferCodeTest < EppTestCase
- setup do
- travel_to Time.zone.parse('2010-07-05')
- end
-
- def test_generates_default
- request_xml = <<-XML
-
-
-
-
-
- brandnew.test
- 1
- john-001
-
-
-
-
- #{'test' * 2000}
-
-
-
-
- XML
-
- post '/epp/command/create', { frame: request_xml }, { 'HTTP_COOKIE' => 'session=api_bestnames' }
- refute_empty Domain.find_by(name: 'brandnew.test').transfer_code
- assert_epp_response :completed_successfully
- end
-
- def test_honors_custom
- request_xml = <<-XML
-
-
-
-
-
- brandnew.test
- 1
- john-001
-
- 1058ad73
-
-
-
-
-
- #{'test' * 2000}
-
-
-
-
- XML
-
- post '/epp/command/create', { frame: request_xml }, { 'HTTP_COOKIE' => 'session=api_bestnames' }
- assert_equal '1058ad73', Domain.find_by(name: 'brandnew.test').transfer_code
- assert_epp_response :completed_successfully
- end
-end
diff --git a/test/integration/epp/domain/domain_update_test.rb b/test/integration/epp/domain/domain_update_test.rb
deleted file mode 100644
index e36f5a4b7..000000000
--- a/test/integration/epp/domain/domain_update_test.rb
+++ /dev/null
@@ -1,52 +0,0 @@
-require 'test_helper'
-
-class EppDomainUpdateTest < EppTestCase
- def setup
- @domain = domains(:shop)
- end
-
- def test_update_domain
- request_xml = <<-XML
-
-
-
-
-
- shop.test
-
-
- f0ff7d17b0
-
-
-
-
-
-
- XML
-
- post '/epp/command/update', { frame: request_xml }, 'HTTP_COOKIE' => 'session=api_bestnames'
- @domain.reload
- assert_equal 'f0ff7d17b0', @domain.transfer_code
- assert_epp_response :completed_successfully
- end
-
- def test_discarded_domain_cannot_be_updated
- @domain.update!(statuses: [DomainStatus::DELETE_CANDIDATE])
-
- request_xml = <<-XML
-
-
-
-
-
- shop.test
-
-
-
-
- XML
-
- post '/epp/command/update', { frame: request_xml }, 'HTTP_COOKIE' => 'session=api_bestnames'
- assert_epp_response :object_status_prohibits_operation
- end
-end
diff --git a/test/integration/epp/domain/update/base_test.rb b/test/integration/epp/domain/update/base_test.rb
new file mode 100644
index 000000000..f085c67c5
--- /dev/null
+++ b/test/integration/epp/domain/update/base_test.rb
@@ -0,0 +1,295 @@
+require 'test_helper'
+
+class EppDomainUpdateBaseTest < EppTestCase
+ include ActionMailer::TestHelper
+
+ def setup
+ @domain = domains(:shop)
+ ActionMailer::Base.deliveries.clear
+ end
+
+ def test_update_domain
+ request_xml = <<-XML
+
+
+
+
+
+ shop.test
+
+
+ f0ff7d17b0
+
+
+
+
+
+
+ XML
+
+ post '/epp/command/update', { frame: request_xml }, 'HTTP_COOKIE' => 'session=api_bestnames'
+ @domain.reload
+ assert_equal 'f0ff7d17b0', @domain.transfer_code
+ assert_epp_response :completed_successfully
+ end
+
+ def test_discarded_domain_cannot_be_updated
+ @domain.update!(statuses: [DomainStatus::DELETE_CANDIDATE])
+
+ request_xml = <<-XML
+
+
+
+
+
+ shop.test
+
+
+
+
+ XML
+
+ post '/epp/command/update', { frame: request_xml }, 'HTTP_COOKIE' => 'session=api_bestnames'
+ assert_epp_response :object_status_prohibits_operation
+ end
+
+ def test_does_not_return_server_delete_prohibited_status_when_pending_update_status_is_set
+ @domain.update!(statuses: [DomainStatus::SERVER_DELETE_PROHIBITED,
+ DomainStatus::PENDING_UPDATE])
+ request_xml = <<-XML
+
+
+
+
+
+ #{@domain.name}
+
+
+
+
+ XML
+
+ post '/epp/command/update', { frame: request_xml }, 'HTTP_COOKIE' => 'session=api_bestnames'
+
+ assert_epp_response :object_status_prohibits_operation
+ response_xml = Nokogiri::XML(response.body)
+ assert_equal DomainStatus::PENDING_UPDATE, response_xml.at_xpath('//domain:status', 'domain' => 'https://epp.tld.ee/schema/domain-eis-1.0.xsd').text
+ end
+
+ def test_requires_verification_from_current_registrant_when_provided_registrant_is_a_new_one
+ Setting.request_confrimation_on_registrant_change_enabled = true
+ new_registrant = contacts(:william).becomes(Registrant)
+ assert_not_equal new_registrant, @domain.registrant
+
+ request_xml = <<-XML
+
+
+
+
+
+ #{@domain.name}
+
+ #{new_registrant.code}
+
+
+
+
+
+ #{'test' * 2000}
+
+
+
+
+ XML
+
+ post '/epp/command/update', { frame: request_xml }, 'HTTP_COOKIE' => 'session=api_bestnames'
+ @domain.reload
+
+ assert_epp_response :completed_successfully_action_pending
+ assert_not_equal new_registrant, @domain.registrant
+ assert @domain.registrant_verification_asked?
+ assert_includes @domain.statuses, DomainStatus::PENDING_UPDATE
+ assert_verification_and_notification_emails
+ end
+
+ def test_requires_verification_from_current_registrant_when_not_yet_verified_by_registrar
+ Setting.request_confrimation_on_registrant_change_enabled = true
+ new_registrant = contacts(:william)
+ assert_not_equal new_registrant, @domain.registrant
+
+ request_xml = <<-XML
+
+
+
+
+
+ #{@domain.name}
+
+ #{new_registrant.code}
+
+
+
+
+
+ #{'test' * 2000}
+
+
+
+
+ XML
+
+ post '/epp/command/update', { frame: request_xml }, 'HTTP_COOKIE' => 'session=api_bestnames'
+ @domain.reload
+
+ assert_epp_response :completed_successfully_action_pending
+ assert_not_equal new_registrant, @domain.registrant
+ assert @domain.registrant_verification_asked?
+ assert_includes @domain.statuses, DomainStatus::PENDING_UPDATE
+ assert_verification_and_notification_emails
+ end
+
+ def test_skips_verification_when_provided_registrant_is_the_same_as_current_one
+ Setting.request_confrimation_on_registrant_change_enabled = true
+
+ request_xml = <<-XML
+
+
+
+
+
+ #{@domain.name}
+
+ #{@domain.registrant.code}
+
+
+
+
+
+ #{'test' * 2000}
+
+
+
+
+ XML
+
+ post '/epp/command/update', { frame: request_xml }, 'HTTP_COOKIE' => 'session=api_bestnames'
+ @domain.reload
+
+ assert_epp_response :completed_successfully
+ assert_not @domain.registrant_verification_asked?
+ refute_includes @domain.statuses, DomainStatus::PENDING_UPDATE
+ assert_no_emails
+ end
+
+ def test_skips_verification_when_disabled
+ Setting.request_confrimation_on_registrant_change_enabled = false
+ new_registrant = contacts(:william).becomes(Registrant)
+ assert_not_equal new_registrant, @domain.registrant
+
+ request_xml = <<-XML
+
+
+
+
+
+ #{@domain.name}
+
+ #{new_registrant.code}
+
+
+
+
+
+ #{'test' * 2000}
+
+
+
+
+ XML
+
+ post '/epp/command/update', { frame: request_xml }, 'HTTP_COOKIE' => 'session=api_bestnames'
+ @domain.reload
+
+ assert_epp_response :completed_successfully
+ assert_equal new_registrant, @domain.registrant
+ assert_not @domain.registrant_verification_asked?
+ refute_includes @domain.statuses, DomainStatus::PENDING_UPDATE
+ assert_no_emails
+ end
+
+ def test_skips_verification_from_current_registrant_when_already_verified_by_registrar
+ Setting.request_confrimation_on_registrant_change_enabled = true
+ new_registrant = contacts(:william).becomes(Registrant)
+ assert_not_equal new_registrant, @domain.registrant
+
+ request_xml = <<-XML
+
+
+
+
+
+ #{@domain.name}
+
+ #{new_registrant.code}
+
+
+
+
+
+ #{'test' * 2000}
+
+
+
+
+ XML
+
+ post '/epp/command/update', { frame: request_xml }, 'HTTP_COOKIE' => 'session=api_bestnames'
+ @domain.reload
+
+ assert_epp_response :completed_successfully
+ assert_equal new_registrant, @domain.registrant
+ assert_not @domain.registrant_verification_asked?
+ refute_includes @domain.statuses, DomainStatus::PENDING_UPDATE
+ assert_no_emails
+ end
+
+ def test_deactivates_domain_when_all_name_servers_are_removed
+ assert @domain.active?
+ assert_equal 2, @domain.nameservers.count
+
+ request_xml = <<-XML
+
+
+
+
+
+ #{@domain.name}
+
+
+
+ #{nameservers(:shop_ns1).hostname}
+
+
+ #{nameservers(:shop_ns2).hostname}
+
+
+
+
+
+
+
+ XML
+
+ post '/epp/command/update', { frame: request_xml }, 'HTTP_COOKIE' => 'session=api_bestnames'
+ @domain.reload
+
+ assert_epp_response :completed_successfully
+ assert @domain.inactive?
+ end
+
+ private
+
+ def assert_verification_and_notification_emails
+ assert_emails 2
+ end
+end
diff --git a/test/models/admin_user_test.rb b/test/models/admin_user_test.rb
new file mode 100644
index 000000000..aedc911bd
--- /dev/null
+++ b/test/models/admin_user_test.rb
@@ -0,0 +1,142 @@
+require 'test_helper'
+
+class AdminUserTest < ActiveSupport::TestCase
+ def test_valid_user_fixture_is_valid
+ assert valid_user.valid?, proc { valid_user.errors.full_messages }
+ end
+
+ def test_invalid_without_username
+ user = valid_user
+ user.username = ''
+ assert user.invalid?
+ end
+
+ def test_invalid_without_password_and_password_confirmation_when_creating
+ user = valid_non_persisted_user
+
+ user.password = ''
+ user.password_confirmation = ''
+ assert user.invalid?
+
+ user.password = valid_password
+ user.password_confirmation = user.password
+ assert user.valid?
+ end
+
+ def test_validates_password_format
+ user = valid_non_persisted_user
+
+ user.password = 'a' * (Devise.password_length.min.pred)
+ user.password_confirmation = user.password
+ assert user.invalid?
+
+ user.password = 'a' * (Devise.password_length.max.next)
+ user.password_confirmation = user.password
+ assert user.invalid?
+
+ user.password = 'a' * Devise.password_length.min
+ user.password_confirmation = user.password
+ assert user.valid?
+
+ user.password = 'a' * Devise.password_length.max
+ user.password_confirmation = user.password
+ assert user.valid?
+ end
+
+ def test_requires_password_confirmation
+ user = valid_non_persisted_user
+ user.password = valid_password
+
+ user.password_confirmation = ''
+ assert user.invalid?
+
+ user.password_confirmation = 'another'
+ assert user.invalid?
+
+ user.password_confirmation = user.password
+ assert user.valid?, proc { user.errors.full_messages }
+ end
+
+ def test_invalid_without_email
+ user = valid_user
+ user.email = ''
+ assert user.invalid?
+ end
+
+ def test_validates_email_format
+ user = valid_user
+
+ user.email = 'invalid'
+ assert user.invalid?
+
+ user.email = 'valid@registry.test'
+ assert user.valid?
+ end
+
+ def test_invalid_when_email_is_already_taken
+ another_user = valid_user
+ user = valid_non_persisted_user
+
+ user.email = another_user.email
+ assert user.invalid?
+
+ user.email = 'new-user@registry.test'
+ assert user.valid?, proc { user.errors.full_messages }
+ end
+
+ def test_invalid_without_country_code
+ user = valid_user
+ user.country_code = ''
+ assert user.invalid?
+ end
+
+ def test_invalid_without_roles
+ user = valid_user
+ user.roles = []
+ assert user.invalid?
+ end
+
+ def test_valid_without_identity_code
+ user = valid_user
+ user.identity_code = ''
+ assert user.valid?
+ end
+
+ def test_invalid_without_identity_code_when_country_code_is_estonia
+ user = valid_user
+ user.country_code = 'EE'
+
+ user.identity_code = ''
+
+ assert user.invalid?
+ end
+
+ # https://en.wikipedia.org/wiki/National_identification_number#Estonia
+ def test_validates_identity_code_format_when_country_code_is_estonia
+ user = valid_user
+ user.country_code = 'EE'
+
+ user.identity_code = '47101010030'
+ assert user.invalid?
+
+ user.identity_code = '47101010033'
+ assert user.valid?
+ end
+
+ private
+
+ def valid_user
+ users(:admin)
+ end
+
+ def valid_non_persisted_user
+ user = valid_user.dup
+ user.password = user.password_confirmation = valid_password
+ user.email = 'another@registry.test'
+ user
+ end
+
+ def valid_password
+ 'a' * Devise.password_length.min
+ end
+end
diff --git a/test/models/api_user_test.rb b/test/models/api_user_test.rb
index 12f434a49..20d655a9c 100644
--- a/test/models/api_user_test.rb
+++ b/test/models/api_user_test.rb
@@ -5,6 +5,53 @@ class ApiUserTest < ActiveSupport::TestCase
@user = users(:api_bestnames)
end
+ def test_valid_user_fixture_is_valid
+ assert valid_user.valid?, proc { valid_user.errors.full_messages }
+ end
+
+ def test_invalid_without_username
+ user = valid_user
+ user.username = ''
+ assert user.invalid?
+ end
+
+ def test_invalid_when_username_is_already_taken
+ user = valid_user
+ another_user = user.dup
+
+ assert another_user.invalid?
+
+ another_user.username = 'another'
+ assert another_user.valid?
+ end
+
+ def test_invalid_without_password
+ user = valid_user
+ user.plain_text_password = ''
+ assert user.invalid?
+ end
+
+ def test_validates_password_format
+ user = valid_user
+ min_length = ApiUser.min_password_length
+
+ user.plain_text_password = 'a' * (min_length.pred)
+ assert user.invalid?
+
+ user.plain_text_password = 'a' * min_length
+ assert user.valid?
+ end
+
+ def test_invalid_without_roles
+ user = valid_user
+ user.roles = []
+ assert user.invalid?
+ end
+
+ def test_active_by_default
+ assert ApiUser.new.active?
+ end
+
def test_finds_user_by_id_card
id_card = IdCard.new
id_card.personal_code = 'one'
@@ -15,4 +62,10 @@ class ApiUserTest < ActiveSupport::TestCase
@user.update!(identity_code: 'another')
assert_nil ApiUser.find_by_id_card(id_card)
end
-end
\ No newline at end of file
+
+ private
+
+ def valid_user
+ users(:api_bestnames)
+ end
+end
diff --git a/test/models/billing/price_test.rb b/test/models/billing/price_test.rb
new file mode 100644
index 000000000..ccef56910
--- /dev/null
+++ b/test/models/billing/price_test.rb
@@ -0,0 +1,106 @@
+require 'test_helper'
+
+class Billing::PriceTest < ActiveSupport::TestCase
+ setup do
+ @user = users(:api_bestnames)
+ end
+
+ def test_valid_price_fixture_is_valid
+ assert valid_price.valid?, proc { valid_price.errors.full_messages }
+ end
+
+ def test_invalid_without_price
+ price = valid_price
+ price.price = ''
+ assert price.invalid?
+ end
+
+ def test_validates_price_format
+ price = valid_price
+
+ price.price = -1
+ assert price.invalid?
+
+ price.price = 0
+ assert price.valid?, proc { price.errors.full_messages }
+
+ price.price = "1#{I18n.t('number.currency.format.separator')}1"
+ assert price.valid?
+
+ price.price = 1
+ assert price.valid?
+ end
+
+ def test_invalid_without_effective_date
+ price = valid_price
+ price.valid_from = ''
+ assert price.invalid?
+ end
+
+ def test_invalid_without_operation_category
+ price = valid_price
+ price.operation_category = ''
+ assert price.invalid?
+ end
+
+ def test_validates_operation_category_format
+ price = valid_price
+
+ price.operation_category = 'invalid'
+ assert price.invalid?
+
+ price.operation_category = Billing::Price.operation_categories.first
+ assert price.valid?
+ end
+
+ def test_invalid_without_duration
+ price = valid_price
+ price.duration = ''
+ assert price.invalid?
+ end
+
+ def test_validates_duration_format
+ price = valid_price
+
+ price.duration = 'invalid'
+ assert price.invalid?
+
+ price.duration = Billing::Price.durations.first
+ assert price.valid?
+ end
+
+ def test_returns_operation_categories
+ operation_categories = %w[create renew]
+ assert_equal operation_categories, Billing::Price.operation_categories
+ end
+
+ def test_returns_durations
+ durations = [
+ '3 mons',
+ '6 mons',
+ '9 mons',
+ '1 year',
+ '2 years',
+ '3 years',
+ '4 years',
+ '5 years',
+ '6 years',
+ '7 years',
+ '8 years',
+ '9 years',
+ '10 years',
+ ]
+ assert_equal durations, Billing::Price.durations
+ end
+
+ def test_returns_statuses
+ statuses = %w[upcoming effective expired]
+ assert_equal statuses, Billing::Price.statuses
+ end
+
+ private
+
+ def valid_price
+ billing_prices(:create_one_month)
+ end
+end
diff --git a/test/models/contact/ident_test.rb b/test/models/contact/ident_test.rb
new file mode 100644
index 000000000..cc1ea65e9
--- /dev/null
+++ b/test/models/contact/ident_test.rb
@@ -0,0 +1,128 @@
+require 'test_helper'
+
+class ContactIdentTest < ActiveSupport::TestCase
+ def test_valid_ident_is_valid
+ assert valid_ident.valid?, proc { valid_ident.errors.full_messages }
+ end
+
+ def test_invalid_without_code
+ ident = valid_ident
+ ident.code = ''
+ assert ident.invalid?
+ end
+
+ def test_validates_date_of_birth
+ ident = valid_ident
+ ident.type = 'birthday'
+
+ ident.code = '2010-07-05'
+ assert ident.valid?
+
+ ident.code = '2010-07-0'
+ assert ident.invalid?
+ end
+
+ # https://en.wikipedia.org/wiki/National_identification_number#Estonia
+ def test_country_specific_national_id_format_validation
+ country = Country.new('EE')
+ ident = valid_ident
+ ident.type = 'priv'
+ ident.country_code = country.alpha2
+
+ ident.code = 'invalid'
+ assert ident.invalid?
+ assert_includes ident.errors.full_messages, "Code does not conform to national identification number format of #{country}"
+
+ ident.code = '47101010033'
+ assert ident.valid?
+
+ ident.country_code = 'US'
+ ident.code = 'any'
+ assert ident.valid?
+ end
+
+ def test_country_specific_company_registration_number_format_validation
+ country = Country.new('EE')
+ ident = valid_ident
+ ident.type = 'org'
+ ident.country_code = country.alpha2
+ allowed_length = 8
+
+ ident.code = '1' * allowed_length.pred
+ assert ident.invalid?
+ assert_includes ident.errors.full_messages, "Code does not conform to registration number format of #{country}"
+
+ ident.code = '1' * allowed_length.next
+ assert ident.invalid?
+
+ ident.code = '1' * allowed_length
+ assert ident.valid?
+
+ ident.country_code = 'US'
+ ident.code = 'any'
+ assert ident.valid?
+ end
+
+ def test_invalid_without_type
+ ident = valid_ident
+ ident.type = ''
+ assert ident.invalid?
+ end
+
+ def test_validates_type
+ assert_not_includes Contact::Ident.types, 'invalid'
+ ident = valid_ident
+ ident.type = 'invalid'
+
+ assert ident.invalid?
+ end
+
+ def test_invalid_without_country_code
+ ident = valid_ident
+ ident.country_code = ''
+ assert ident.invalid?
+ end
+
+ def test_validates_country_code_format
+ ident = valid_ident
+
+ ident.country_code = 'invalid'
+ assert ident.invalid?
+
+ ident.country_code = 'US'
+ assert ident.valid?
+ end
+
+ def test_validates_for_mismatches
+ ident = valid_ident
+ mismatch = Contact::Ident::MismatchValidator.mismatches.first
+ ident.type = mismatch.type
+ ident.country_code = mismatch.country.alpha2
+
+ assert ident.invalid?
+ assert_includes ident.errors.full_messages, %(Ident type "#{ident.type}" is invalid for #{ident.country})
+ end
+
+ def test_returns_types
+ assert_equal %w[org priv birthday], Contact::Ident.types
+ end
+
+ def test_returns_country
+ country_code = 'US'
+ ident = Contact::Ident.new(country_code: country_code)
+ assert_equal Country.new(country_code), ident.country
+ end
+
+ def test_equality
+ assert_equal Contact::Ident.new(code: 'code', type: 'type', country_code: 'US'),
+ Contact::Ident.new(code: 'code', type: 'type', country_code: 'US')
+ assert_not_equal Contact::Ident.new(code: 'code', type: 'type', country_code: 'US'),
+ Contact::Ident.new(code: 'code', type: 'type', country_code: 'GB')
+ end
+
+ private
+
+ def valid_ident
+ Contact::Ident.new(code: '1234', type: 'priv', country_code: 'US')
+ end
+end
diff --git a/test/models/contact_test.rb b/test/models/contact_test.rb
index 9c05e9d1d..8a2301395 100644
--- a/test/models/contact_test.rb
+++ b/test/models/contact_test.rb
@@ -5,8 +5,8 @@ class ContactTest < ActiveSupport::TestCase
@contact = contacts(:john)
end
- def test_valid_fixture_is_valid
- assert @contact.valid?, proc { @contact.errors.full_messages }
+ def test_valid_contact_fixture_is_valid
+ assert valid_contact.valid?, proc { valid_contact.errors.full_messages }
end
def test_invalid_fixture_is_invalid
@@ -21,30 +21,106 @@ class ContactTest < ActiveSupport::TestCase
assert_equal 'org', Contact::ORG
end
- def test_invalid_without_email
- @contact.email = ''
- assert @contact.invalid?
+ def test_invalid_without_name
+ contact = valid_contact
+ contact.name = ''
+ assert contact.invalid?
end
- def test_email_format_validation
- @contact.email = 'invalid'
- assert @contact.invalid?
+ def test_validates_code_format
+ contact = valid_contact.dup
+ max_length = 100
- @contact.email = 'test@bestmail.test'
- assert @contact.valid?
+ contact.code = '!invalid'
+ assert contact.invalid?
+
+ contact.code = 'a' * max_length.next
+ assert contact.invalid?
+
+ contact.code = 'foo:bar'
+ assert contact.valid?
+
+ contact.code = 'a' * max_length
+ assert contact.valid?
+ end
+
+ def test_invalid_when_code_is_already_taken
+ another_contact = valid_contact
+ contact = another_contact.dup
+
+ contact.code = another_contact.code
+ assert contact.invalid?
+
+ contact.regenerate_code
+ assert contact.valid?
+ end
+
+ def test_invalid_without_email
+ contact = valid_contact
+ contact.email = ''
+ assert contact.invalid?
+ end
+
+ def test_validates_email_format
+ contact = valid_contact
+
+ contact.email = 'invalid'
+ assert contact.invalid?
+
+ contact.email = 'valid@registrar.test'
+ assert contact.valid?
end
def test_invalid_without_phone
- @contact.email = ''
- assert @contact.invalid?
+ contact = valid_contact
+ contact.phone = ''
+ assert contact.invalid?
end
- def test_phone_format_validation
- @contact.phone = '+123.'
- assert @contact.invalid?
+ # https://en.wikipedia.org/wiki/E.164
+ def test_validates_phone_format
+ contact = valid_contact
- @contact.phone = '+123.4'
- assert @contact.valid?
+ contact.phone = '+.1'
+ assert contact.invalid?
+
+ contact.phone = '+123.'
+ assert contact.invalid?
+
+ contact.phone = '+1.123456789123456'
+ assert contact.invalid?
+
+ contact.phone = '+134.1234567891234'
+ assert contact.invalid?
+
+ contact.phone = '+000.1'
+ assert contact.invalid?
+
+ contact.phone = '+123.0'
+ assert contact.invalid?
+
+ contact.phone = '+1.2'
+ assert contact.valid?
+
+ contact.phone = '+123.4'
+ assert contact.valid?
+
+ contact.phone = '+1.12345678912345'
+ assert contact.valid?
+
+ contact.phone = '+134.123456789123'
+ assert contact.valid?
+ end
+
+ def test_valid_without_address_when_address_processing_id_disabled
+ contact = valid_contact
+
+ contact.street = ''
+ contact.city = ''
+ contact.zip = ''
+ contact.country_code = ''
+
+ assert contact.valid?
end
def test_address
@@ -133,6 +209,45 @@ class ContactTest < ActiveSupport::TestCase
assert_not @contact.deletable?
end
+ def test_normalizes_country_code
+ contact = Contact.new(country_code: 'us')
+ contact.validate
+ assert_equal 'US', contact.country_code
+ end
+
+ def test_normalizes_ident_country_code
+ contact = Contact.new(ident_country_code: 'us')
+ contact.validate
+ assert_equal 'US', contact.ident_country_code
+ end
+
+ def test_generates_code
+ contact = Contact.new(registrar: registrars(:bestnames))
+ assert_nil contact.code
+
+ contact.generate_code
+
+ assert_not_empty contact.code
+ end
+
+ def test_prohibits_code_change
+ assert_no_changes -> { @contact.code } do
+ @contact.code = 'new'
+ @contact.save!
+ @contact.reload
+ end
+ end
+
+ def test_removes_duplicate_statuses
+ contact = Contact.new(statuses: %w[ok ok])
+ assert_equal %w[ok], contact.statuses
+ end
+
+ def test_default_status
+ contact = Contact.new
+ assert_equal %w[ok], contact.statuses
+ end
+
private
def make_contact_free_of_domains_where_it_acts_as_a_registrant(contact)
@@ -146,4 +261,8 @@ class ContactTest < ActiveSupport::TestCase
DomainContact.delete_all
contacts(:john)
end
-end
\ No newline at end of file
+
+ def valid_contact
+ contacts(:john)
+ end
+end
diff --git a/test/models/dns/zone_test.rb b/test/models/dns/zone_test.rb
new file mode 100644
index 000000000..c18f9592a
--- /dev/null
+++ b/test/models/dns/zone_test.rb
@@ -0,0 +1,132 @@
+require 'test_helper'
+
+class DNS::ZoneTest < ActiveSupport::TestCase
+ def test_valid_zone_fixture_is_valid
+ assert valid_zone.valid?, proc { valid_zone.errors.full_messages }
+ end
+
+ def test_invalid_without_origin
+ zone = valid_zone
+ zone.origin = ''
+ assert zone.invalid?
+ end
+
+ def test_invalid_when_origin_is_already_taken
+ zone = valid_zone
+ another_zone = zone.dup
+ assert another_zone.invalid?
+ end
+
+ def test_invalid_without_ttl
+ zone = valid_zone
+ zone.ttl = ''
+ assert zone.invalid?
+ end
+
+ def test_validates_ttl_format
+ zone = valid_zone
+
+ zone.ttl = 'text'
+ assert zone.invalid?
+
+ zone.ttl = '1.1'
+ assert zone.invalid?
+
+ zone.ttl = '1'
+ assert zone.valid?
+ end
+
+ def test_invalid_without_refresh
+ zone = valid_zone
+ zone.refresh = ''
+ assert zone.invalid?
+ end
+
+ def test_validates_refresh_format
+ zone = valid_zone
+
+ zone.refresh = 'text'
+ assert zone.invalid?
+
+ zone.refresh = '1.1'
+ assert zone.invalid?
+
+ zone.refresh = '1'
+ assert zone.valid?
+ end
+
+ def test_invalid_without_retry
+ zone = valid_zone
+ zone.retry = ''
+ assert zone.invalid?
+ end
+
+ def test_validates_retry_format
+ zone = valid_zone
+
+ zone.retry = 'text'
+ assert zone.invalid?
+
+ zone.retry = '1.1'
+ assert zone.invalid?
+
+ zone.retry = '1'
+ assert zone.valid?
+ end
+
+ def test_invalid_without_expire
+ zone = valid_zone
+ zone.expire = ''
+ assert zone.invalid?
+ end
+
+ def test_validates_expire_format
+ zone = valid_zone
+
+ zone.expire = 'text'
+ assert zone.invalid?
+
+ zone.expire = '1.1'
+ assert zone.invalid?
+
+ zone.expire = '1'
+ assert zone.valid?
+ end
+
+ def test_invalid_without_minimum_ttl
+ zone = valid_zone
+ zone.minimum_ttl = ''
+ assert zone.invalid?
+ end
+
+ def test_validates_minimum_ttl_format
+ zone = valid_zone
+
+ zone.minimum_ttl = 'text'
+ assert zone.invalid?
+
+ zone.minimum_ttl = '1.1'
+ assert zone.invalid?
+
+ zone.minimum_ttl = '1'
+ assert zone.valid?
+ end
+
+ def test_invalid_without_email
+ zone = valid_zone
+ zone.email = ''
+ assert zone.invalid?
+ end
+
+ def test_invalid_without_master_nameserver
+ zone = valid_zone
+ zone.master_nameserver = ''
+ assert zone.invalid?
+ end
+
+ private
+
+ def valid_zone
+ dns_zones(:one)
+ end
+end
diff --git a/test/models/domain_test.rb b/test/models/domain_test.rb
index 98baa084a..4cbcda0b7 100644
--- a/test/models/domain_test.rb
+++ b/test/models/domain_test.rb
@@ -3,16 +3,271 @@ require 'test_helper'
class DomainTest < ActiveSupport::TestCase
setup do
@domain = domains(:shop)
+
+ @original_nameserver_required = Setting.nameserver_required
+ @original_min_admin_contact_count = Setting.admin_contacts_min_count
+ @original_max_admin_contact_count = Setting.admin_contacts_max_count
+ @original_min_tech_contact_count = Setting.tech_contacts_min_count
+ @original_max_tech_contact_count = Setting.tech_contacts_max_count
end
- def test_valid_fixture_is_valid
- assert @domain.valid?
+ teardown do
+ Setting.nameserver_required = @original_nameserver_required
+ Setting.admin_contacts_min_count = @original_min_admin_contact_count
+ Setting.admin_contacts_max_count = @original_max_admin_contact_count
+ Setting.tech_contacts_min_count = @original_min_tech_contact_count
+ Setting.tech_contacts_max_count = @original_max_tech_contact_count
+ end
+
+ def test_valid_domain_is_valid
+ assert valid_domain.valid?, proc { valid_domain.errors.full_messages }
end
def test_invalid_fixture_is_invalid
assert domains(:invalid).invalid?
end
+ # https://www.internet.ee/domeenid/ee-domeenireeglid#domeeninimede-registreerimine
+ def test_validates_name_format
+ assert_equal dns_zones(:one).origin, 'test'
+ domain = valid_domain
+ subdomain_min_length = 2
+ subdomain_max_length = 63
+
+ domain.name = '!invalid'
+ assert domain.invalid?
+
+ domain.name = 'aa--a.test'
+ assert domain.invalid?
+
+ domain.name = '-example.test'
+ assert domain.invalid?
+
+ domain.name = 'example-.test'
+ assert domain.invalid?
+
+ domain.name = "#{'a' * subdomain_min_length.pred}.test"
+ assert domain.invalid?
+
+ domain.name = "#{'a' * subdomain_max_length.next}.test"
+ assert domain.invalid?
+
+ domain.name = 'рф.test'
+ assert domain.invalid?
+
+ domain.name = "#{'a' * subdomain_min_length}.test"
+ assert domain.valid?
+
+ domain.name = "#{'a' * subdomain_max_length}.test"
+ assert domain.valid?
+
+ domain.name = 'example-1-2.test'
+ assert domain.valid?
+
+ domain.name = 'EXAMPLE.test'
+ assert domain.valid?
+
+ domain.name = 'äõöüšž.test'
+ assert domain.valid?
+
+ domain.name = 'xn--mnchen-3ya.test'
+ assert domain.valid?
+ end
+
+ def test_invalid_when_name_is_already_taken
+ Setting.admin_contacts_min_count = Setting.tech_contacts_min_count = 0
+ another_domain = valid_domain
+ domain = another_domain.dup
+
+ domain.name = another_domain.name
+ assert domain.invalid?
+
+ domain.name = "new.#{dns_zones(:one).origin}"
+ assert domain.valid?, proc { domain.errors.full_messages }
+ end
+
+ def test_invalid_when_name_is_zone
+ name = dns_zones(:one).origin
+ domain = valid_domain
+
+ domain.name = name
+
+ assert domain.invalid?
+ assert_includes domain.errors.full_messages, 'Data management policy violation:' \
+ ' Domain name is blocked [name]'
+ end
+
+ def test_invalid_without_transfer_code
+ domain = valid_domain
+ domain.transfer_code = ''
+ assert domain.invalid?
+ end
+
+ def test_invalid_when_domain_is_reserved
+ reserved_domain = reserved_domains(:one)
+ domain = valid_domain.dup
+ domain.name = reserved_domain.name
+
+ assert domain.invalid?
+ assert_includes domain.errors.full_messages, 'Required parameter missing; reserved>' \
+ 'pw element required for reserved domains'
+ end
+
+ def test_invalid_without_registration_period
+ domain = valid_domain
+ domain.period = ''
+ assert domain.invalid?
+ end
+
+ def test_validates_registration_period_format
+ domain = valid_domain
+
+ domain.period = 'invalid'
+ assert domain.invalid?
+
+ domain.period = 1.1
+ assert domain.invalid?
+
+ domain.period = 1
+ assert domain.valid?
+ end
+
+ def test_invalid_when_the_same_admin_contact_is_linked_twice
+ domain = valid_domain
+ contact = contacts(:john)
+
+ domain.admin_contacts << contact
+ domain.admin_contacts << contact
+
+ assert domain.invalid?
+ end
+
+ def test_invalid_when_the_same_tech_contact_is_linked_twice
+ domain = valid_domain
+ contact = contacts(:john)
+
+ domain.tech_contacts << contact
+ domain.tech_contacts << contact
+
+ assert domain.invalid?
+ end
+
+ def test_validates_name_server_count_when_name_servers_are_required
+ nameserver_attributes = nameservers(:shop_ns1).dup.attributes
+ domain = valid_domain
+ Setting.nameserver_required = true
+ min_count = 1
+ max_count = 2
+ Setting.ns_min_count = min_count
+ Setting.ns_max_count = max_count
+
+ domain.nameservers.clear
+ min_count.times { domain.nameservers.build(nameserver_attributes) }
+ assert domain.valid?, proc { domain.errors.full_messages }
+
+ domain.nameservers.clear
+ max_count.times do |i|
+ domain.nameservers.build(nameserver_attributes.merge(hostname: "ns#{i}.test"))
+ end
+ assert domain.valid?, proc { domain.errors.full_messages }
+
+ domain.nameservers.clear
+ assert domain.invalid?
+
+ domain.nameservers.clear
+ max_count.next.times do |i|
+ domain.nameservers.build(nameserver_attributes.merge(hostname: "ns#{i}.test"))
+ end
+ assert domain.invalid?
+ end
+
+ def test_valid_without_name_servers_when_they_are_optional
+ domain = valid_domain
+ domain.nameservers.clear
+ Setting.nameserver_required = false
+ Setting.ns_min_count = 1
+
+ assert domain.valid?
+ end
+
+ def test_validates_admin_contact_count
+ domain_contact_attributes = domain_contacts(:shop_jane).dup.attributes
+ domain = valid_domain
+ min_count = 1
+ max_count = 2
+ Setting.admin_contacts_min_count = min_count
+ Setting.admin_contacts_max_count = max_count
+
+ domain.admin_domain_contacts.clear
+ min_count.times { domain.admin_domain_contacts.build(domain_contact_attributes) }
+ assert domain.valid?, proc { domain.errors.full_messages }
+
+ domain.admin_domain_contacts.clear
+ max_count.times { domain.admin_domain_contacts.build(domain_contact_attributes) }
+ assert domain.valid?, proc { domain.errors.full_messages }
+
+ domain.admin_domain_contacts.clear
+ assert domain.invalid?
+
+ domain.admin_domain_contacts.clear
+ max_count.next.times { domain.admin_domain_contacts.build(domain_contact_attributes) }
+ assert domain.invalid?
+ end
+
+ def test_validates_tech_contact_count
+ domain_contact_attributes = domain_contacts(:shop_william).dup.attributes
+ domain = valid_domain
+ min_count = 1
+ max_count = 2
+ Setting.tech_contacts_min_count = min_count
+ Setting.tech_contacts_max_count = max_count
+
+ domain.tech_domain_contacts.clear
+ min_count.times { domain.tech_domain_contacts.build(domain_contact_attributes) }
+ assert domain.valid?, proc { domain.errors.full_messages }
+
+ domain.tech_domain_contacts.clear
+ max_count.times { domain.tech_domain_contacts.build(domain_contact_attributes) }
+ assert domain.valid?, proc { domain.errors.full_messages }
+
+ domain.tech_domain_contacts.clear
+ assert domain.invalid?
+
+ domain.tech_domain_contacts.clear
+ max_count.next.times { domain.tech_domain_contacts.build(domain_contact_attributes) }
+ assert domain.invalid?
+ end
+
+ def test_outzone_candidates_scope_returns_records_with_outzone_at_in_the_past
+ travel_to Time.zone.parse('2010-07-05 08:00:00')
+ domain1 = domains(:shop)
+ domain1.update!(outzone_at: Time.zone.parse('2010-07-05 07:59:59'))
+ domain2 = domains(:airport)
+ domain2.update!(outzone_at: Time.zone.parse('2010-07-05 08:00:00'))
+ domain3 = domains(:library)
+ domain3.update!(outzone_at: Time.zone.parse('2010-07-05 08:00:01'))
+ Domain.connection.disable_referential_integrity do
+ Domain.delete_all("id NOT IN (#{[domain1.id, domain2.id, domain3.id].join(',')})")
+ end
+
+ assert_equal [domain1.id], Domain.outzone_candidates.ids
+ end
+
+ def test_expired_scope_returns_records_with_valid_to_in_the_past
+ travel_to Time.zone.parse('2010-07-05 08:00:00')
+ domain1 = domains(:shop)
+ domain1.update!(valid_to: Time.zone.parse('2010-07-05 07:59:59'))
+ domain2 = domains(:airport)
+ domain2.update!(valid_to: Time.zone.parse('2010-07-05 08:00:00'))
+ domain3 = domains(:library)
+ domain3.update!(valid_to: Time.zone.parse('2010-07-05 08:00:01'))
+ Domain.connection.disable_referential_integrity do
+ Domain.delete_all("id NOT IN (#{[domain1.id, domain2.id, domain3.id].join(',')})")
+ end
+
+ assert_equal [domain1.id, domain2.id], Domain.expired.ids
+ end
+
def test_domain_name
domain = Domain.new(name: 'shop.test')
assert_equal 'shop.test', domain.domain_name.to_s
@@ -79,4 +334,87 @@ class DomainTest < ActiveSupport::TestCase
assert_equal %w[john@inbox.test william@inbox.test].sort, @domain.primary_contact_emails.sort
end
-end
\ No newline at end of file
+
+ def test_normalizes_name
+ unnormalized_name = ' Foo.test '
+ domain = Domain.new(name: unnormalized_name)
+
+ assert_equal 'foo.test', domain.name
+ assert_equal 'foo.test', domain.name_puny
+ assert_equal unnormalized_name, domain.name_dirty
+ end
+
+ def test_converts_name_to_punycode
+ domain = Domain.new(name: 'münchen.test')
+ assert_equal 'xn--mnchen-3ya.test', domain.name_puny
+ end
+
+ def test_returns_new_registrant_id
+ id = 1
+ domain = Domain.new(pending_json: { new_registrant_id: id })
+
+ assert_equal id, domain.new_registrant_id
+ end
+
+ def test_returns_new_registrant_email
+ email = 'john@inbox.test'
+ domain = Domain.new(pending_json: { new_registrant_email: email })
+
+ assert_equal email, domain.new_registrant_email
+ end
+
+ def test_expiration
+ now = Time.zone.parse('2010-07-05 08:00:00')
+ travel_to now
+ domain = Domain.new
+
+ domain.valid_to = now + 1.second
+ assert domain.registered?
+ assert_not domain.expired?
+
+ domain.valid_to = now
+ assert domain.expired?
+ assert_not domain.registered?
+
+ domain.valid_to = now - 1.second
+ assert domain.expired?
+ assert_not domain.registered?
+ end
+
+ def test_activation
+ domain = inactive_domain
+
+ assert domain.inactive?
+ assert_not domain.active?
+
+ domain.activate
+
+ assert domain.active?
+ assert_not domain.inactive?
+ end
+
+ def test_deactivation
+ domain = @domain
+
+ assert domain.active?
+ assert_not domain.inactive?
+
+ domain.deactivate
+
+ assert domain.inactive?
+ assert_not domain.active?
+ end
+
+ private
+
+ def valid_domain
+ domains(:shop)
+ end
+
+ def inactive_domain
+ Setting.nameserver_required = true
+ domain = @domain
+ domain.update!(statuses: [DomainStatus::INACTIVE])
+ domain
+ end
+end
diff --git a/test/models/white_ip_test.rb b/test/models/white_ip_test.rb
new file mode 100644
index 000000000..607887730
--- /dev/null
+++ b/test/models/white_ip_test.rb
@@ -0,0 +1,54 @@
+require 'test_helper'
+
+class WhiteIpTest < ActiveSupport::TestCase
+ def test_either_ipv4_or_ipv6_is_required
+ white_ip = valid_white_ip
+
+ white_ip.ipv4 = ''
+ white_ip.ipv6 = ''
+ assert white_ip.invalid?
+ assert_includes white_ip.errors.full_messages, 'IPv4 or IPv6 must be present'
+
+ white_ip.ipv4 = valid_ipv4
+ white_ip.ipv6 = ''
+ assert white_ip.valid?
+
+ white_ip.ipv4 = ''
+ white_ip.ipv6 = valid_ipv6
+ assert white_ip.valid?
+ end
+
+ def test_validates_ipv4_format
+ white_ip = valid_white_ip
+
+ white_ip.ipv4 = 'invalid'
+ assert white_ip.invalid?
+
+ white_ip.ipv4 = valid_ipv4
+ assert white_ip.valid?
+ end
+
+ def test_validates_ipv6_format
+ white_ip = valid_white_ip
+
+ white_ip.ipv6 = 'invalid'
+ assert white_ip.invalid?
+
+ white_ip.ipv6 = valid_ipv6
+ assert white_ip.valid?
+ end
+
+ private
+
+ def valid_white_ip
+ white_ips(:one)
+ end
+
+ def valid_ipv4
+ '192.0.2.1'
+ end
+
+ def valid_ipv6
+ '2001:db8::1'
+ end
+end
diff --git a/test/system/admin_area/prices_test.rb b/test/system/admin_area/prices_test.rb
new file mode 100644
index 000000000..dbb91966a
--- /dev/null
+++ b/test/system/admin_area/prices_test.rb
@@ -0,0 +1,47 @@
+require 'application_system_test_case'
+
+class AdminAreaPricesTest < ApplicationSystemTestCase
+ setup do
+ sign_in users(:admin)
+ @price = billing_prices(:create_one_month)
+ end
+
+ def test_adds_new_price_with_required_attributes
+ effective_date = Date.parse('2010-07-06')
+ assert_nil Billing::Price.find_by(valid_from: effective_date)
+
+ visit admin_prices_url
+ click_on 'New price'
+
+ select dns_zones(:one).origin, from: 'Zone'
+ select Billing::Price.operation_categories.first, from: 'Operation category'
+ select '3 months', from: 'Duration'
+ fill_in 'Price', with: '1'
+ fill_in 'Valid from', with: effective_date
+ click_on 'Create price'
+
+ assert_text 'Price has been created'
+ assert_text I18n.localize(effective_date)
+ end
+
+ def test_changes_price
+ new_effective_date = Date.parse('2010-07-06')
+ assert_not_equal new_effective_date, @price.valid_from
+
+ visit admin_prices_url
+ find('.edit-price-btn').click
+ fill_in 'Valid from', with: new_effective_date
+ click_on 'Update price'
+
+ assert_text 'Price has been updated'
+ assert_text I18n.localize(new_effective_date)
+ end
+
+ def test_expires_price
+ visit admin_prices_url
+ find('.edit-price-btn').click
+ click_on 'Expire'
+
+ assert_text 'Price has been expired'
+ end
+end
diff --git a/test/system/admin_area/settings_test.rb b/test/system/admin_area/settings_test.rb
new file mode 100644
index 000000000..0097381d9
--- /dev/null
+++ b/test/system/admin_area/settings_test.rb
@@ -0,0 +1,13 @@
+require 'application_system_test_case'
+
+class AdminAreaSettingsTest < ApplicationSystemTestCase
+ setup do
+ sign_in users(:admin)
+ end
+
+ def test_saves_settings
+ visit admin_settings_url
+ click_link_or_button 'Save'
+ assert_text 'Settings have been successfully updated'
+ end
+end
diff --git a/test/system/admin_area/zones_test.rb b/test/system/admin_area/zones_test.rb
new file mode 100644
index 000000000..d7ad9d690
--- /dev/null
+++ b/test/system/admin_area/zones_test.rb
@@ -0,0 +1,46 @@
+require 'application_system_test_case'
+
+class AdminAreaZonesTest < ApplicationSystemTestCase
+ setup do
+ sign_in users(:admin)
+ @zone = dns_zones(:one)
+ end
+
+ def test_creates_new_zone_with_required_attributes
+ origin = 'com.test'
+ assert_nil DNS::Zone.find_by(origin: origin)
+
+ visit admin_zones_url
+ click_on 'New zone'
+
+ fill_in 'Origin', with: origin
+ fill_in 'Ttl', with: '1'
+ fill_in 'Refresh', with: '1'
+ fill_in 'Retry', with: '1'
+ fill_in 'Expire', with: '1'
+ fill_in 'Minimum ttl', with: '1'
+ fill_in 'Email', with: 'new.registry.test'
+ fill_in 'Master nameserver', with: 'any.test'
+ click_on 'Create zone'
+
+ assert_text 'Zone has been created'
+ assert_text origin
+ end
+
+ def test_changes_zone
+ new_email = 'new@registry.test'
+ assert_not_equal new_email, @zone.email
+
+ visit admin_zones_url
+ click_on 'admin-edit-zone-btn'
+ fill_in 'Email', with: new_email
+ click_on 'Update zone'
+
+ assert_text 'Zone has been updated'
+ end
+
+ def test_origin_is_not_editable
+ visit edit_admin_zone_url(@zone)
+ assert_no_field 'Origin'
+ end
+end
diff --git a/test/system/registrar_area/base_test.rb b/test/system/registrar_area/base_test.rb
new file mode 100644
index 000000000..35b64df69
--- /dev/null
+++ b/test/system/registrar_area/base_test.rb
@@ -0,0 +1,33 @@
+require 'application_system_test_case'
+
+class RegistrarAreaBaseTestTest < ApplicationSystemTestCase
+ def test_user_cannot_access_without_ip_address_being_whitelisted
+ Setting.registrar_ip_whitelist_enabled = true
+ WhiteIp.delete_all
+
+ visit new_registrar_user_session_url
+
+ assert_text 'Access denied from IP 127.0.0.1'
+ assert_no_button 'Login'
+ end
+
+ def test_user_can_access_when_ip_is_whitelisted
+ white_ips(:one).update!(ipv4: '127.0.0.1', interfaces: [WhiteIp::REGISTRAR])
+ Setting.registrar_ip_whitelist_enabled = true
+
+ visit new_registrar_user_session_url
+
+ assert_no_text 'Access denied from IP 127.0.0.1'
+ assert_button 'Login'
+ end
+
+ def test_user_can_access_when_ip_is_not_whitelisted_and_whitelist_is_disabled
+ Setting.registrar_ip_whitelist_enabled = false
+ WhiteIp.delete_all
+
+ visit new_registrar_user_session_url
+
+ assert_no_text 'Access denied from IP 127.0.0.1'
+ assert_button 'Login'
+ end
+end