From b5ad66532e320eef5506a85256c2c1d49fee8a3b Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Mon, 21 Nov 2016 02:26:47 +0200 Subject: [PATCH 01/73] Add specs for domain list export #248 --- spec/features/registrar/domains/csv_export_spec.rb | 8 ++++++++ spec/routing/registrar/domains_routing_spec.rb | 9 +++++++++ 2 files changed, 17 insertions(+) create mode 100644 spec/features/registrar/domains/csv_export_spec.rb create mode 100644 spec/routing/registrar/domains_routing_spec.rb diff --git a/spec/features/registrar/domains/csv_export_spec.rb b/spec/features/registrar/domains/csv_export_spec.rb new file mode 100644 index 000000000..006778008 --- /dev/null +++ b/spec/features/registrar/domains/csv_export_spec.rb @@ -0,0 +1,8 @@ +require 'rails_helper' + +RSpec.feature 'CSV Export', db: true do + scenario 'csv file download' do + visit registrar_domains_path + click_on 'download-domains-csv-btn' + end +end diff --git a/spec/routing/registrar/domains_routing_spec.rb b/spec/routing/registrar/domains_routing_spec.rb new file mode 100644 index 000000000..e30d1dd24 --- /dev/null +++ b/spec/routing/registrar/domains_routing_spec.rb @@ -0,0 +1,9 @@ +require 'rails_helper' + +RSpec.describe Registrar::DomainsController do + describe 'routing' do + it 'routes to #index' do + expect(get: '/registrar/domains').to route_to('registrar/domains#index') + end + end +end From d131448228557693859955ad75dddcd4749aa493 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Mon, 21 Nov 2016 02:26:47 +0200 Subject: [PATCH 02/73] Add specs for domain list export #248 --- spec/features/registrar/domains/csv_export_spec.rb | 8 ++++++++ spec/routing/registrar/domains_routing_spec.rb | 9 +++++++++ 2 files changed, 17 insertions(+) create mode 100644 spec/features/registrar/domains/csv_export_spec.rb create mode 100644 spec/routing/registrar/domains_routing_spec.rb diff --git a/spec/features/registrar/domains/csv_export_spec.rb b/spec/features/registrar/domains/csv_export_spec.rb new file mode 100644 index 000000000..006778008 --- /dev/null +++ b/spec/features/registrar/domains/csv_export_spec.rb @@ -0,0 +1,8 @@ +require 'rails_helper' + +RSpec.feature 'CSV Export', db: true do + scenario 'csv file download' do + visit registrar_domains_path + click_on 'download-domains-csv-btn' + end +end diff --git a/spec/routing/registrar/domains_routing_spec.rb b/spec/routing/registrar/domains_routing_spec.rb new file mode 100644 index 000000000..e30d1dd24 --- /dev/null +++ b/spec/routing/registrar/domains_routing_spec.rb @@ -0,0 +1,9 @@ +require 'rails_helper' + +RSpec.describe Registrar::DomainsController do + describe 'routing' do + it 'routes to #index' do + expect(get: '/registrar/domains').to route_to('registrar/domains#index') + end + end +end From 127bbf5167af731cb14c805c0c80b1a007cc6878 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Sat, 26 Nov 2016 01:45:21 +0200 Subject: [PATCH 03/73] Add csv export button to domain list in registrar area #248 --- app/views/registrar/domains/index.haml | 1 + spec/features/registrar/domains/csv_export_spec.rb | 12 +++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/app/views/registrar/domains/index.haml b/app/views/registrar/domains/index.haml index 587ef2b5e..e2026a92e 100644 --- a/app/views/registrar/domains/index.haml +++ b/app/views/registrar/domains/index.haml @@ -50,6 +50,7 @@   %span.glyphicon.glyphicon-search   + = button_tag t('.export_csv_btn'), id: 'export-domains-csv-btn' %button.btn.btn-default.js-reset-form = t(:clear_fields) %hr diff --git a/spec/features/registrar/domains/csv_export_spec.rb b/spec/features/registrar/domains/csv_export_spec.rb index 006778008..caf56d1c6 100644 --- a/spec/features/registrar/domains/csv_export_spec.rb +++ b/spec/features/registrar/domains/csv_export_spec.rb @@ -2,7 +2,17 @@ require 'rails_helper' RSpec.feature 'CSV Export', db: true do scenario 'csv file download' do + sign_in visit registrar_domains_path - click_on 'download-domains-csv-btn' + click_on 'export-domains-csv-btn' + end + + def sign_in(user: create(:user_with_valid_password)) + visit registrar_login_path + + fill_in 'depp_user_tag', with: user.email + fill_in 'depp_user_password', with: user.password + + click_button 'Login' end end From 25fb8f1552bf198282b26682dd76d8678c1d8290 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Mon, 28 Nov 2016 02:21:17 +0200 Subject: [PATCH 04/73] Add admin user factory #248 --- spec/factories/admin_user.rb | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 spec/factories/admin_user.rb diff --git a/spec/factories/admin_user.rb b/spec/factories/admin_user.rb new file mode 100644 index 000000000..92ab44037 --- /dev/null +++ b/spec/factories/admin_user.rb @@ -0,0 +1,11 @@ +FactoryGirl.define do + factory :admin_user do + username 'test' + password 'test' + password_confirmation password + sequence(:email) { |n| "test#{n}@test.com" } + country_code 'ee' + roles ['admin'] + identity_code '' + end +end From b84cbe370c2b9115a8819cf83ec38fd3c6630a21 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Mon, 28 Nov 2016 23:57:53 +0200 Subject: [PATCH 05/73] Add csv export button do domain list in registrar area #248 --- config/locales/registrar/domains.en.yml | 5 +++++ spec/features/registrar/domains/csv_export_spec.rb | 14 ++++---------- 2 files changed, 9 insertions(+), 10 deletions(-) create mode 100644 config/locales/registrar/domains.en.yml diff --git a/config/locales/registrar/domains.en.yml b/config/locales/registrar/domains.en.yml new file mode 100644 index 000000000..a1a7020b8 --- /dev/null +++ b/config/locales/registrar/domains.en.yml @@ -0,0 +1,5 @@ +en: + registrar: + domains: + index: + export_csv_btn: Export CSV diff --git a/spec/features/registrar/domains/csv_export_spec.rb b/spec/features/registrar/domains/csv_export_spec.rb index caf56d1c6..b99ecf54d 100644 --- a/spec/features/registrar/domains/csv_export_spec.rb +++ b/spec/features/registrar/domains/csv_export_spec.rb @@ -1,18 +1,12 @@ require 'rails_helper' RSpec.feature 'CSV Export', db: true do + background do + sign_in(user: FactoryGirl.create(:api_user)) + end + scenario 'csv file download' do - sign_in visit registrar_domains_path click_on 'export-domains-csv-btn' end - - def sign_in(user: create(:user_with_valid_password)) - visit registrar_login_path - - fill_in 'depp_user_tag', with: user.email - fill_in 'depp_user_password', with: user.password - - click_button 'Login' - end end From cda88834067d94be3cf6f42b0bd4b83478f81ee8 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Mon, 14 Nov 2016 13:40:10 +0200 Subject: [PATCH 06/73] Use app timezone in domain#delete_candidateable? #238 --- app/models/domain.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/domain.rb b/app/models/domain.rb index c9c301bd2..ae343c551 100644 --- a/app/models/domain.rb +++ b/app/models/domain.rb @@ -293,7 +293,7 @@ class Domain < ActiveRecord::Base end def delete_candidateable? - return false if delete_at.to_date > Date.today + return false if delete_at > Time.zone.now return false if statuses.include?(DomainStatus::DELETE_CANDIDATE) return false if statuses.include?(DomainStatus::SERVER_DELETE_PROHIBITED) true From 7ad3918b3f63ffde103cd604702df4f288257f86 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Tue, 29 Nov 2016 00:03:32 +0200 Subject: [PATCH 07/73] Add "webmock" gem --- Gemfile | 1 + Gemfile.lock | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/Gemfile b/Gemfile index f0f2e4395..83ec9b4a7 100644 --- a/Gemfile +++ b/Gemfile @@ -157,4 +157,5 @@ end group :test do gem 'database_cleaner' gem 'factory_girl_rails' + gem 'webmock' end diff --git a/Gemfile.lock b/Gemfile.lock index f608c4c9f..31ecaeb02 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -257,6 +257,7 @@ GEM haml (>= 4.0.6, < 5.0) html2haml (>= 1.0.1) railties (>= 4.0.1) + hashdiff (0.3.1) hashie (3.4.2) hashie-forbidden_attributes (0.1.1) hashie (>= 3.0) @@ -556,6 +557,10 @@ GEM wasabi (3.5.0) httpi (~> 2.0) nokogiri (>= 1.4.2) + webmock (2.1.0) + addressable (>= 2.3.6) + crack (>= 0.3.2) + hashdiff websocket-driver (0.6.2) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.2) @@ -647,6 +652,7 @@ DEPENDENCIES unicorn uuidtools (= 2.1.5) validates_email_format_of (= 1.6.3) + webmock whenever (= 0.9.4) BUNDLED WITH From 61c1908785eee6077e1a14b1cb008851dbab9a5a Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Tue, 29 Nov 2016 00:04:26 +0200 Subject: [PATCH 08/73] Include webmock --- spec/spec_helper.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 9e1e69d61..68a2c0be1 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,3 +1,5 @@ +require 'webmock/rspec' + RSpec.configure do |config| # https://github.com/rspec/rspec-rails/issues/1076 config.around :each, type: :view do |example| From b106a40719787bf72d3cb7bb519df09aaa17e712 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Tue, 29 Nov 2016 00:07:28 +0200 Subject: [PATCH 09/73] Add session helper for feature specs --- spec/rails_helper.rb | 2 ++ spec/support/features/session_helpers.rb | 12 ++++++++++++ 2 files changed, 14 insertions(+) create mode 100644 spec/support/features/session_helpers.rb diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index 9411702f5..ab5842baf 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -5,6 +5,7 @@ require 'rspec/rails' require 'capybara/poltergeist' require 'paper_trail/frameworks/rspec' require 'money-rails/test_helpers' +require 'support/features/session_helpers' if ENV['ROBOT'] require 'simplecov' @@ -23,6 +24,7 @@ ActiveRecord::Migration.maintain_test_schema! RSpec.configure do |config| config.include ActionView::TestCase::Behavior, type: :presenter config.include ActiveSupport::Testing::TimeHelpers + config.include Features::SessionHelpers, type: :feature config.define_derived_metadata(file_path: %r{/spec/presenters/}) do |metadata| metadata[:type] = :presenter diff --git a/spec/support/features/session_helpers.rb b/spec/support/features/session_helpers.rb new file mode 100644 index 000000000..de0203e1a --- /dev/null +++ b/spec/support/features/session_helpers.rb @@ -0,0 +1,12 @@ +module Features + module SessionHelpers + def sign_in_to_registrar_area(user: FactoryGirl.create(:api_user)) + visit registrar_login_path + + fill_in 'depp_user_tag', with: user.username + fill_in 'depp_user_password', with: user.password + + click_button 'Login' + end + end +end From 333924fdc67687f8df55cb3305197776baac318a Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Tue, 29 Nov 2016 00:10:11 +0200 Subject: [PATCH 10/73] Admin user model returns mix password length --- app/models/admin_user.rb | 4 ++++ spec/models/admin_user_spec.rb | 40 +++++++++------------------------- 2 files changed, 14 insertions(+), 30 deletions(-) diff --git a/app/models/admin_user.rb b/app/models/admin_user.rb index e062bb1d6..d76c42dec 100644 --- a/app/models/admin_user.rb +++ b/app/models/admin_user.rb @@ -11,6 +11,10 @@ class AdminUser < User devise :database_authenticatable, :rememberable, :trackable, :validatable, :lockable + def self.min_password_length + Devise.password_length.min + end + def to_s username end diff --git a/spec/models/admin_user_spec.rb b/spec/models/admin_user_spec.rb index a6b668a5d..c3dde16bc 100644 --- a/spec/models/admin_user_spec.rb +++ b/spec/models/admin_user_spec.rb @@ -1,24 +1,9 @@ require 'rails_helper' -require 'cancan/matchers' -describe AdminUser do +RSpec.describe AdminUser do context 'with invalid attribute' do - before :all do - @admin_user = AdminUser.new - end - - it 'should not be valid' do - @admin_user.valid? - @admin_user.errors.full_messages.should match_array([ - "Country code is missing", - "Email Email is missing", - "Email Email is missing", - "Password Password is missing", - "Password Password is missing", - "Password confirmation is missing", - "Roles is missing", - "Username Username is missing" - ]) + before do + @admin_user = described_class.new end it 'should not have any versions' do @@ -27,21 +12,10 @@ describe AdminUser do end context 'with valid attributes' do - before :all do + before do @admin_user = Fabricate(:admin_user) end - it 'should be valid' do - @admin_user.valid? - @admin_user.errors.full_messages.should match_array([]) - end - - it 'should be valid twice' do - @admin_user = Fabricate(:admin_user) - @admin_user.valid? - @admin_user.errors.full_messages.should match_array([]) - end - it 'should have one version' do with_versioning do @admin_user.versions.should == [] @@ -61,4 +35,10 @@ describe AdminUser do ]) 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 From 3cf689d96cf2bd7025fae3dbc14ecc22f4d26b68 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Tue, 29 Nov 2016 00:10:32 +0200 Subject: [PATCH 11/73] Add api user factory --- spec/factories/api_user.rb | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 spec/factories/api_user.rb diff --git a/spec/factories/api_user.rb b/spec/factories/api_user.rb new file mode 100644 index 000000000..d5a3c777d --- /dev/null +++ b/spec/factories/api_user.rb @@ -0,0 +1,8 @@ +FactoryGirl.define do + factory :api_user do + sequence(:username) { |n| "test#{n}" } + password 'a' * 6 + roles ['super'] + registrar + end +end From cf79a5dbd2ebef09f9b16c6f67dad38fc454f6c9 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Tue, 29 Nov 2016 00:14:50 +0200 Subject: [PATCH 12/73] Fix missing translation --- config/locales/en.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config/locales/en.yml b/config/locales/en.yml index 0988e1ce0..c4fb88757 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -614,6 +614,7 @@ en: delete: 'Delete' are_you_sure: 'Are you sure?' renew: 'Renew' + new: New renew_domain: 'Renew domain' cur_exp_date: 'curExpDate' transfer: 'Transfer' @@ -952,3 +953,4 @@ en: deleted: 'Deleted' cant_match_version: 'Impossible match version with request' user_not_authenticated: "user not authenticated" + actions: Actions From 26d9645906e1edc144144b7acdefed47c08581dd Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Tue, 29 Nov 2016 01:58:22 +0200 Subject: [PATCH 13/73] Remove registrar session feature specs --- spec/features/registrar/sessions_spec.rb | 151 ----------------------- 1 file changed, 151 deletions(-) delete mode 100644 spec/features/registrar/sessions_spec.rb diff --git a/spec/features/registrar/sessions_spec.rb b/spec/features/registrar/sessions_spec.rb deleted file mode 100644 index 649fac952..000000000 --- a/spec/features/registrar/sessions_spec.rb +++ /dev/null @@ -1,151 +0,0 @@ -require 'rails_helper' - -RSpec.feature 'Sessions', db: true do - context 'with invalid ip' do - it 'should not see login page' do - Setting.registrar_ip_whitelist_enabled = true - WhiteIp.destroy_all - visit registrar_login_path - page.should have_text('Access denied') - end - - it 'should see login page when whitelist disabled' do - Setting.registrar_ip_whitelist_enabled = false - WhiteIp.destroy_all - visit registrar_login_path - page.should_not have_text('Access denied') - Setting.registrar_ip_whitelist_enabled = true - end - - it 'should see Login' do - @fixed_registrar = Fabricate(:registrar, name: 'fixed registrar', code: 'FIXED') - @fixed_registrar.white_ips = [Fabricate(:white_ip_registrar)] - visit registrar_login_path - page.should have_text('Login') - end - - it 'should not get in with invalid ip' do - Fabricate(:registrar, white_ips: [Fabricate(:white_ip), Fabricate(:white_ip_registrar)]) - @api_user_invalid_ip = Fabricate( - :api_user, identity_code: '37810013294', registrar: Fabricate(:registrar, white_ips: []) - ) - visit registrar_login_path - fill_in 'depp_user_tag', with: @api_user_invalid_ip.username - fill_in 'depp_user_password', with: @api_user_invalid_ip.password - click_button 'Login' - page.should have_text('IP is not whitelisted') - end - end - - context 'as unknown user' do - before :example do - Fabricate(:api_user) - end - - it 'should not get in' do - client = instance_double("Digidoc::Client") - allow(client).to receive(:authenticate).and_return( - OpenStruct.new( - user_id_code: '123' - ) - ) - - allow(Digidoc::Client).to receive(:new) { client } - - visit registrar_login_path - page.should have_css('a[href="/registrar/login/mid"]') - - page.find('a[href="/registrar/login/mid"]').click - - fill_in 'user_phone', with: '00007' - click_button 'Login' - page.should have_text('No such user') - end - end - - context 'as known api user' do - before :example do - Fabricate(:api_user) - end - - it 'should not get in when external service fails' do - client = instance_double("Digidoc::Client") - allow(client).to receive(:authenticate).and_return( - OpenStruct.new( - faultcode: 'Fault', - detail: OpenStruct.new( - message: 'Something is wrong' - ) - ) - ) - - allow(Digidoc::Client).to receive(:new) { client } - - visit registrar_login_path - page.should have_css('a[href="/registrar/login/mid"]') - - page.find('a[href="/registrar/login/mid"]').click - - fill_in 'user_phone', with: '00007' - click_button 'Login' - page.should have_text('Something is wrong') - end - - it 'should not get in when there is a sim error', js: true do - client = instance_double("Digidoc::Client", session_code: '123') - - allow(client).to receive('session_code=') - - allow(client).to receive(:authenticate).and_return( - OpenStruct.new( - user_id_code: '14212128025' - ) - ) - - allow(client).to receive('authentication_status').and_return( - OpenStruct.new(status: 'SIM_ERROR') - ) - - allow(Digidoc::Client).to receive(:new) { client } - - visit registrar_login_path - page.should have_css('a[href="/registrar/login/mid"]') - - page.find('a[href="/registrar/login/mid"]').click - - fill_in 'user_phone', with: '00007' - click_button 'Login' - - page.should have_text('Confirmation sms was sent to your phone. Verification code is') - page.should have_text('SIM application error') - end - - it 'should Login successfully', js: true do - client = instance_double("Digidoc::Client", session_code: '123') - - allow(client).to receive('session_code=') - - allow(client).to receive(:authenticate).and_return( - OpenStruct.new( - user_id_code: '14212128025' - ) - ) - - allow(client).to receive('authentication_status').and_return( - OpenStruct.new(status: 'USER_AUTHENTICATED') - ) - - allow(Digidoc::Client).to receive(:new) { client } - - visit registrar_login_path - page.should have_css('a[href="/registrar/login/mid"]') - - page.find('a[href="/registrar/login/mid"]').click - - fill_in 'user_phone', with: '00007' - click_button 'Login' - - page.should have_text('Confirmation sms was sent to your phone. Verification code is') - end - end -end From ae5f2bf922b06c9a7f1f7e3edec9c2d39108e552 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Wed, 30 Nov 2016 01:50:00 +0200 Subject: [PATCH 14/73] Add domain list csv export to registrar area #248 --- .../registrar/domains_controller.rb | 16 ++++++- .../registrar/domain_list_csv_presenter.rb | 45 +++++++++++++++++++ app/views/registrar/domains/index.haml | 6 ++- config/locales/registrar/domains.en.yml | 6 +++ .../registrar/domains/csv_export_spec.rb | 9 ++-- .../domain_list_csv_presenter_spec.rb | 45 +++++++++++++++++++ .../registrar/domains_controller_spec.rb | 28 ++++++++++++ 7 files changed, 148 insertions(+), 7 deletions(-) create mode 100644 app/presenters/registrar/domain_list_csv_presenter.rb create mode 100644 spec/presenters/registrar/domain_list_csv_presenter_spec.rb create mode 100644 spec/requests/registrar/domains_controller_spec.rb diff --git a/app/controllers/registrar/domains_controller.rb b/app/controllers/registrar/domains_controller.rb index a02fb4aa1..560a965f3 100644 --- a/app/controllers/registrar/domains_controller.rb +++ b/app/controllers/registrar/domains_controller.rb @@ -14,7 +14,7 @@ class Registrar::DomainsController < Registrar::DeppController # EPP controller if params[:q].length == 1 && params[:q][:name_matches].present? @domain = Domain.find_by(name: params[:q][:name_matches]) if @domain - redirect_to info_registrar_domains_path(domain_name: @domain.name) and return + redirect_to info_registrar_domains_url(domain_name: @domain.name) and return end end @@ -40,6 +40,20 @@ class Registrar::DomainsController < Registrar::DeppController # EPP controller end @domains = @domains.per(params[:results_per_page]) if params[:results_per_page].to_i > 0 + + respond_to do |format| + format.html + format.csv do + domain_presenters = [] + + @domains.find_each do |domain| + domain_presenters << ::DomainPresenter.new(domain: domain, view: view_context) + end + + csv = Registrar::DomainListCSVPresenter.new(domains: domain_presenters, view: view_context).to_s + send_data(csv) + end + end end # rubocop: enable Metrics/PerceivedComplexity # rubocop: enable Metrics/CyclomaticComplexity diff --git a/app/presenters/registrar/domain_list_csv_presenter.rb b/app/presenters/registrar/domain_list_csv_presenter.rb new file mode 100644 index 000000000..b1427aa40 --- /dev/null +++ b/app/presenters/registrar/domain_list_csv_presenter.rb @@ -0,0 +1,45 @@ +class Registrar::DomainListCSVPresenter + def initialize(domains:, view:) + @domains = domains + @view = view + end + + def to_s + table = CSV::Table.new([header]) + + domains.each do |domain| + table << domain_to_row(domain: domain) + end + + table.to_s + end + + private + + def header + columns = %w( + domain_name + registrant_name + registrant_id + expire_time + ) + + columns.map! { |column| view.t("registrar.domains.index.csv.#{column}") } + + CSV::Row.new(columns, [], true) + end + + def domain_to_row(domain:) + row = [] + row[0] = domain.name + row[1] = domain.registrant_name + row[2] = domain.registrant_id + row[3] = domain.expire_date + row + + CSV::Row.new([], row) + end + + attr_reader :domains + attr_reader :view +end diff --git a/app/views/registrar/domains/index.haml b/app/views/registrar/domains/index.haml index e2026a92e..d96bfb1c8 100644 --- a/app/views/registrar/domains/index.haml +++ b/app/views/registrar/domains/index.haml @@ -49,10 +49,12 @@ %button.btn.btn-primary.search   %span.glyphicon.glyphicon-search -   - = button_tag t('.export_csv_btn'), id: 'export-domains-csv-btn' %button.btn.btn-default.js-reset-form = t(:clear_fields) + .row + .col-md-2 + = button_tag t('.export_csv_btn'), class: 'btn btn-primary export-domains-csv-btn', + formaction: registrar_domains_path(format: 'csv') %hr .row diff --git a/config/locales/registrar/domains.en.yml b/config/locales/registrar/domains.en.yml index a1a7020b8..4b9c5af11 100644 --- a/config/locales/registrar/domains.en.yml +++ b/config/locales/registrar/domains.en.yml @@ -3,3 +3,9 @@ en: domains: index: export_csv_btn: Export CSV + csv: + domain_name: Domain + registrant_name: Registrant name + registrant_id: Registrant ID + expire_time: Date of expiry + diff --git a/spec/features/registrar/domains/csv_export_spec.rb b/spec/features/registrar/domains/csv_export_spec.rb index b99ecf54d..1677aa62f 100644 --- a/spec/features/registrar/domains/csv_export_spec.rb +++ b/spec/features/registrar/domains/csv_export_spec.rb @@ -2,11 +2,12 @@ require 'rails_helper' RSpec.feature 'CSV Export', db: true do background do - sign_in(user: FactoryGirl.create(:api_user)) + Setting.registrar_ip_whitelist_enabled = false + sign_in_to_registrar_area(user: FactoryGirl.create(:api_user)) end - scenario 'csv file download' do - visit registrar_domains_path - click_on 'export-domains-csv-btn' + scenario 'exports csv' do + visit registrar_domains_url + click_button t('registrar.domains.index.export_csv_btn') end end diff --git a/spec/presenters/registrar/domain_list_csv_presenter_spec.rb b/spec/presenters/registrar/domain_list_csv_presenter_spec.rb new file mode 100644 index 000000000..866ed2570 --- /dev/null +++ b/spec/presenters/registrar/domain_list_csv_presenter_spec.rb @@ -0,0 +1,45 @@ +require 'rails_helper' + +RSpec.describe Registrar::DomainListCSVPresenter do + let(:domain) { instance_spy(DomainPresenter) } + let(:csv) { CSV.parse(described_class.new(domains: [domain], view: view).to_s, converters: :all) } + + describe 'header' do + subject(:header) { csv.first } + + it 'is present' do + columns = [] + columns[0] = 'Domain' + columns[1] = 'Registrant name' + columns[2] = 'Registrant ID' + columns[3] = 'Date of expiry' + columns + + expect(header).to eq(columns) + end + end + + describe 'row' do + subject(:row) { csv.second } + + it 'has domain name' do + expect(domain).to receive(:name).and_return('test name') + expect(row[0]).to eq('test name') + end + + it 'has registrant name' do + expect(domain).to receive(:registrant_name).and_return('test registrant name') + expect(row[1]).to eq('test registrant name') + end + + it 'has registrant id' do + expect(domain).to receive(:registrant_id).and_return('test registrant id') + expect(row[2]).to eq('test registrant id') + end + + it 'has expire date' do + expect(domain).to receive(:expire_date).and_return('expire date') + expect(row[3]).to eq('expire date') + end + end +end diff --git a/spec/requests/registrar/domains_controller_spec.rb b/spec/requests/registrar/domains_controller_spec.rb new file mode 100644 index 000000000..630703c6b --- /dev/null +++ b/spec/requests/registrar/domains_controller_spec.rb @@ -0,0 +1,28 @@ +require 'rails_helper' + +RSpec.describe Registrar::DomainsController, db: true do + describe '#index' do + before do + sign_in_to_registrar_area + end + + it 'responds with success' do + csv_presenter = instance_double(Registrar::DomainListCSVPresenter, to_s: 'csv') + expect(Registrar::DomainListCSVPresenter).to receive(:new).and_return(csv_presenter) + + get registrar_domains_url(format: 'csv') + + expect(response.body).to eq('csv') + end + + it 'returns csv' do + get registrar_domains_url(format: 'csv') + + expect(response).to have_http_status(:success) + end + end + + def sign_in_to_registrar_area(user: FactoryGirl.create(:api_user)) + post registrar_sessions_path, { depp_user: { tag: user.username, password: user.password } } + end +end From 0706453a7892ecc88b00eb6544d6ff96472624d5 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Wed, 30 Nov 2016 02:00:48 +0200 Subject: [PATCH 15/73] Update domain presenter --- app/presenters/domain_presenter.rb | 10 +++++++++- spec/presenters/domain_presenter_spec.rb | 19 +++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/app/presenters/domain_presenter.rb b/app/presenters/domain_presenter.rb index b09743c5e..2d0cfd791 100644 --- a/app/presenters/domain_presenter.rb +++ b/app/presenters/domain_presenter.rb @@ -1,11 +1,19 @@ class DomainPresenter - delegate :name, :registrant_name, to: :domain + delegate :name, :registrant_name, :registrant_id, to: :domain def initialize(domain:, view:) @domain = domain @view = view end + def expire_time + view.l(domain.expire_time) + end + + def expire_date + view.l(domain.expire_time, format: :date) + end + def on_hold_date view.l(domain.on_hold_time, format: :date) if domain.on_hold_time end diff --git a/spec/presenters/domain_presenter_spec.rb b/spec/presenters/domain_presenter_spec.rb index 79adcc68f..2209c01aa 100644 --- a/spec/presenters/domain_presenter_spec.rb +++ b/spec/presenters/domain_presenter_spec.rb @@ -3,6 +3,24 @@ 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 } @@ -100,6 +118,7 @@ RSpec.describe DomainPresenter do domain_delegatable_attributes = %i( name registrant_name + registrant_id ) domain_delegatable_attributes.each do |attribute_name| From 4d9607010cd6e9bfee3f0aa3b77e97271bd33a71 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Wed, 30 Nov 2016 02:01:59 +0200 Subject: [PATCH 16/73] Include transaction helper into feature specs --- spec/rails_helper.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index ab5842baf..c61568179 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -25,6 +25,7 @@ RSpec.configure do |config| config.include ActionView::TestCase::Behavior, type: :presenter config.include ActiveSupport::Testing::TimeHelpers config.include Features::SessionHelpers, type: :feature + config.include AbstractController::Translation, type: :feature config.define_derived_metadata(file_path: %r{/spec/presenters/}) do |metadata| metadata[:type] = :presenter From 8d173afd590da4a93ffe0ad76595a3a342b07fba Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Wed, 30 Nov 2016 02:02:37 +0200 Subject: [PATCH 17/73] Fix session helpers spec support --- spec/support/features/session_helpers.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/support/features/session_helpers.rb b/spec/support/features/session_helpers.rb index de0203e1a..a23609891 100644 --- a/spec/support/features/session_helpers.rb +++ b/spec/support/features/session_helpers.rb @@ -1,7 +1,7 @@ module Features module SessionHelpers def sign_in_to_registrar_area(user: FactoryGirl.create(:api_user)) - visit registrar_login_path + visit registrar_login_url fill_in 'depp_user_tag', with: user.username fill_in 'depp_user_password', with: user.password From f4dc972795addd10a65f4fa15915d04ef512b7e6 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Wed, 30 Nov 2016 02:20:54 +0200 Subject: [PATCH 18/73] Update admin user factory --- spec/factories/admin_user.rb | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/spec/factories/admin_user.rb b/spec/factories/admin_user.rb index 92ab44037..8ee6b93b9 100644 --- a/spec/factories/admin_user.rb +++ b/spec/factories/admin_user.rb @@ -1,11 +1,10 @@ FactoryGirl.define do factory :admin_user do username 'test' - password 'test' - password_confirmation password - sequence(:email) { |n| "test#{n}@test.com" } - country_code 'ee' + email 'test@test.com' + password 'a' * AdminUser.min_password_length + password_confirmation { password } + country_code 'de' roles ['admin'] - identity_code '' end end From b62fae4665fedbd6f5563a9ae3959b82cba185ba Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Wed, 14 Dec 2016 12:24:43 +0200 Subject: [PATCH 19/73] Revert "Merge branch 'registry-248' into staging" This reverts commit af0cde844ebbe419d141343dbb09c36ace27bdab, reversing changes made to d68abd90fa6e5ce3bc059035034fed3049f811f8. --- .../registrar/domains_controller.rb | 16 +------ .../registrar/domain_list_csv_presenter.rb | 45 ------------------- app/views/registrar/domains/index.haml | 5 +-- config/locales/registrar/domains.en.yml | 11 ----- .../registrar/domains/csv_export_spec.rb | 13 ------ spec/models/admin_user_spec.rb | 6 --- .../domain_list_csv_presenter_spec.rb | 45 ------------------- .../registrar/domains_controller_spec.rb | 28 ------------ .../routing/registrar/domains_routing_spec.rb | 9 ---- 9 files changed, 2 insertions(+), 176 deletions(-) delete mode 100644 app/presenters/registrar/domain_list_csv_presenter.rb delete mode 100644 config/locales/registrar/domains.en.yml delete mode 100644 spec/features/registrar/domains/csv_export_spec.rb delete mode 100644 spec/presenters/registrar/domain_list_csv_presenter_spec.rb delete mode 100644 spec/requests/registrar/domains_controller_spec.rb delete mode 100644 spec/routing/registrar/domains_routing_spec.rb diff --git a/app/controllers/registrar/domains_controller.rb b/app/controllers/registrar/domains_controller.rb index 560a965f3..a02fb4aa1 100644 --- a/app/controllers/registrar/domains_controller.rb +++ b/app/controllers/registrar/domains_controller.rb @@ -14,7 +14,7 @@ class Registrar::DomainsController < Registrar::DeppController # EPP controller if params[:q].length == 1 && params[:q][:name_matches].present? @domain = Domain.find_by(name: params[:q][:name_matches]) if @domain - redirect_to info_registrar_domains_url(domain_name: @domain.name) and return + redirect_to info_registrar_domains_path(domain_name: @domain.name) and return end end @@ -40,20 +40,6 @@ class Registrar::DomainsController < Registrar::DeppController # EPP controller end @domains = @domains.per(params[:results_per_page]) if params[:results_per_page].to_i > 0 - - respond_to do |format| - format.html - format.csv do - domain_presenters = [] - - @domains.find_each do |domain| - domain_presenters << ::DomainPresenter.new(domain: domain, view: view_context) - end - - csv = Registrar::DomainListCSVPresenter.new(domains: domain_presenters, view: view_context).to_s - send_data(csv) - end - end end # rubocop: enable Metrics/PerceivedComplexity # rubocop: enable Metrics/CyclomaticComplexity diff --git a/app/presenters/registrar/domain_list_csv_presenter.rb b/app/presenters/registrar/domain_list_csv_presenter.rb deleted file mode 100644 index b1427aa40..000000000 --- a/app/presenters/registrar/domain_list_csv_presenter.rb +++ /dev/null @@ -1,45 +0,0 @@ -class Registrar::DomainListCSVPresenter - def initialize(domains:, view:) - @domains = domains - @view = view - end - - def to_s - table = CSV::Table.new([header]) - - domains.each do |domain| - table << domain_to_row(domain: domain) - end - - table.to_s - end - - private - - def header - columns = %w( - domain_name - registrant_name - registrant_id - expire_time - ) - - columns.map! { |column| view.t("registrar.domains.index.csv.#{column}") } - - CSV::Row.new(columns, [], true) - end - - def domain_to_row(domain:) - row = [] - row[0] = domain.name - row[1] = domain.registrant_name - row[2] = domain.registrant_id - row[3] = domain.expire_date - row - - CSV::Row.new([], row) - end - - attr_reader :domains - attr_reader :view -end diff --git a/app/views/registrar/domains/index.haml b/app/views/registrar/domains/index.haml index d96bfb1c8..587ef2b5e 100644 --- a/app/views/registrar/domains/index.haml +++ b/app/views/registrar/domains/index.haml @@ -49,12 +49,9 @@ %button.btn.btn-primary.search   %span.glyphicon.glyphicon-search +   %button.btn.btn-default.js-reset-form = t(:clear_fields) - .row - .col-md-2 - = button_tag t('.export_csv_btn'), class: 'btn btn-primary export-domains-csv-btn', - formaction: registrar_domains_path(format: 'csv') %hr .row diff --git a/config/locales/registrar/domains.en.yml b/config/locales/registrar/domains.en.yml deleted file mode 100644 index 4b9c5af11..000000000 --- a/config/locales/registrar/domains.en.yml +++ /dev/null @@ -1,11 +0,0 @@ -en: - registrar: - domains: - index: - export_csv_btn: Export CSV - csv: - domain_name: Domain - registrant_name: Registrant name - registrant_id: Registrant ID - expire_time: Date of expiry - diff --git a/spec/features/registrar/domains/csv_export_spec.rb b/spec/features/registrar/domains/csv_export_spec.rb deleted file mode 100644 index 1677aa62f..000000000 --- a/spec/features/registrar/domains/csv_export_spec.rb +++ /dev/null @@ -1,13 +0,0 @@ -require 'rails_helper' - -RSpec.feature 'CSV Export', db: true do - background do - Setting.registrar_ip_whitelist_enabled = false - sign_in_to_registrar_area(user: FactoryGirl.create(:api_user)) - end - - scenario 'exports csv' do - visit registrar_domains_url - click_button t('registrar.domains.index.export_csv_btn') - end -end diff --git a/spec/models/admin_user_spec.rb b/spec/models/admin_user_spec.rb index 0d3c7e083..eeb47107b 100644 --- a/spec/models/admin_user_spec.rb +++ b/spec/models/admin_user_spec.rb @@ -39,10 +39,4 @@ RSpec.describe AdminUser do expect(described_class.min_password_length).to eq(8) 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/presenters/registrar/domain_list_csv_presenter_spec.rb b/spec/presenters/registrar/domain_list_csv_presenter_spec.rb deleted file mode 100644 index 866ed2570..000000000 --- a/spec/presenters/registrar/domain_list_csv_presenter_spec.rb +++ /dev/null @@ -1,45 +0,0 @@ -require 'rails_helper' - -RSpec.describe Registrar::DomainListCSVPresenter do - let(:domain) { instance_spy(DomainPresenter) } - let(:csv) { CSV.parse(described_class.new(domains: [domain], view: view).to_s, converters: :all) } - - describe 'header' do - subject(:header) { csv.first } - - it 'is present' do - columns = [] - columns[0] = 'Domain' - columns[1] = 'Registrant name' - columns[2] = 'Registrant ID' - columns[3] = 'Date of expiry' - columns - - expect(header).to eq(columns) - end - end - - describe 'row' do - subject(:row) { csv.second } - - it 'has domain name' do - expect(domain).to receive(:name).and_return('test name') - expect(row[0]).to eq('test name') - end - - it 'has registrant name' do - expect(domain).to receive(:registrant_name).and_return('test registrant name') - expect(row[1]).to eq('test registrant name') - end - - it 'has registrant id' do - expect(domain).to receive(:registrant_id).and_return('test registrant id') - expect(row[2]).to eq('test registrant id') - end - - it 'has expire date' do - expect(domain).to receive(:expire_date).and_return('expire date') - expect(row[3]).to eq('expire date') - end - end -end diff --git a/spec/requests/registrar/domains_controller_spec.rb b/spec/requests/registrar/domains_controller_spec.rb deleted file mode 100644 index 630703c6b..000000000 --- a/spec/requests/registrar/domains_controller_spec.rb +++ /dev/null @@ -1,28 +0,0 @@ -require 'rails_helper' - -RSpec.describe Registrar::DomainsController, db: true do - describe '#index' do - before do - sign_in_to_registrar_area - end - - it 'responds with success' do - csv_presenter = instance_double(Registrar::DomainListCSVPresenter, to_s: 'csv') - expect(Registrar::DomainListCSVPresenter).to receive(:new).and_return(csv_presenter) - - get registrar_domains_url(format: 'csv') - - expect(response.body).to eq('csv') - end - - it 'returns csv' do - get registrar_domains_url(format: 'csv') - - expect(response).to have_http_status(:success) - end - end - - def sign_in_to_registrar_area(user: FactoryGirl.create(:api_user)) - post registrar_sessions_path, { depp_user: { tag: user.username, password: user.password } } - end -end diff --git a/spec/routing/registrar/domains_routing_spec.rb b/spec/routing/registrar/domains_routing_spec.rb deleted file mode 100644 index e30d1dd24..000000000 --- a/spec/routing/registrar/domains_routing_spec.rb +++ /dev/null @@ -1,9 +0,0 @@ -require 'rails_helper' - -RSpec.describe Registrar::DomainsController do - describe 'routing' do - it 'routes to #index' do - expect(get: '/registrar/domains').to route_to('registrar/domains#index') - end - end -end From 98b1e4d721ea016eaa8ac4a2171b0a4f3adeebfe Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Mon, 9 Jan 2017 00:23:06 +0200 Subject: [PATCH 20/73] Introduce ee-1.1.xsd #270 --- lib/schemas/ee-1.1.xsd | 105 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 lib/schemas/ee-1.1.xsd diff --git a/lib/schemas/ee-1.1.xsd b/lib/schemas/ee-1.1.xsd new file mode 100644 index 000000000..5473a016a --- /dev/null +++ b/lib/schemas/ee-1.1.xsd @@ -0,0 +1,105 @@ + + + + + + EIS Extensible Provisioning Protocol v1.1 extension schema. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 7760137266263c784fc344d611b21a70f1eb1b20 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Mon, 9 Jan 2017 00:24:05 +0200 Subject: [PATCH 21/73] Remove legal document .ddoc support #270 --- app/models/legal_document.rb | 2 +- config/application-example.yml | 4 ++-- doc/epp/contact.md | 6 +++--- doc/epp/domain.md | 10 +++++----- lib/schemas/ee-1.1.xsd | 1 - 5 files changed, 11 insertions(+), 12 deletions(-) diff --git a/app/models/legal_document.rb b/app/models/legal_document.rb index 0c08958ae..2f92534ba 100644 --- a/app/models/legal_document.rb +++ b/app/models/legal_document.rb @@ -6,7 +6,7 @@ class LegalDocument < ActiveRecord::Base if ENV['legal_document_types'].present? TYPES = ENV['legal_document_types'].split(',').map(&:strip) else - TYPES = %w(pdf bdoc ddoc zip rar gz tar 7z odt doc docx).freeze + TYPES = %w(pdf bdoc zip rar gz tar 7z odt doc docx).freeze end attr_accessor :body diff --git a/config/application-example.yml b/config/application-example.yml index f1b17cc03..a264dfa34 100644 --- a/config/application-example.yml +++ b/config/application-example.yml @@ -66,8 +66,8 @@ contact_org_enabled: 'false' # iptables_server_ip: '127.0.0.1' # Custom legal document types. Changing this requires updating EPP extension schema for allowed legalDocEnumType values. -# System default for legal document types is: pdf,bdoc,ddoc,zip,rar,gz,tar,7z,odt,doc,docx -# legal_document_types: "pdf,bdoc,ddoc,zip,rar,gz,tar,7z,odt,doc,docx" +# System default for legal document types is: pdf,bdoc,zip,rar,gz,tar,7z,odt,doc,docx +# legal_document_types: "pdf,bdoc,zip,rar,gz,tar,7z,odt,doc,docx" # diff --git a/doc/epp/contact.md b/doc/epp/contact.md index 9721f876f..0ed981f5a 100644 --- a/doc/epp/contact.md +++ b/doc/epp/contact.md @@ -43,7 +43,7 @@ More info: https://en.wikipedia.org/wiki/Latin_script_in_Unicode Attribute: "cc" "EE" # Country code in ISO_3166-1 aplha 2 0-1 Base64 encoded document - Attribute: type="pdf/bdoc/ddoc/zip/rar/gz/tar/7z" + Attribute: type="pdf/bdoc/zip/rar/gz/tar/7z" 0-1 Client transaction id [EXAMPLE REQUEST AND RESPONSE](/doc/epp-examples.md#epp-contact-with-valid-user-create-command-successfully-creates-a-contact) @@ -79,7 +79,7 @@ More info: https://en.wikipedia.org/wiki/Latin_script_in_Unicode Attribute: "cc" "EE" # Country code in ISO_3166-1 aplha 2 0-1 Base64 encoded document. - Attribute: type="pdf/bdoc/ddoc/zip/rar/gz/tar/7z" + Attribute: type="pdf/bdoc/zip/rar/gz/tar/7z" 0-1 Client transaction id @@ -97,7 +97,7 @@ More info: https://en.wikipedia.org/wiki/Latin_script_in_Unicode 0-1 0-1 Attribute: xmlns:eis="https://epp.tld.ee/schema/eis-1.0.xsd" 0-1 Base64 encoded document. - Attribute: type="pdf/bdoc/ddoc/zip/rar/gz/tar/7z" + Attribute: type="pdf/bdoc/zip/rar/gz/tar/7z" 0-1 Client transaction id [EXAMPLE REQUEST AND RESPONSE](/doc/epp-examples.md#epp-contact-with-valid-user-delete-command-deletes-contact) diff --git a/doc/epp/domain.md b/doc/epp/domain.md index d6c32467d..0f1607bde 100644 --- a/doc/epp/domain.md +++ b/doc/epp/domain.md @@ -36,7 +36,7 @@ Domain name mapping protocol short version: 1 Public key 1 Attribute: xmlns:eis="https://epp.tld.ee/schema/eis-1.0.xsd" 1 Base64 encoded document. - Attribute: type="pdf/bdoc/ddoc/zip/rar/gz/tar/7z" + Attribute: type="pdf/bdoc/zip/rar/gz/tar/7z" 0-1 0-1 Required if registering a reserved domain 0-1 Client transaction id @@ -85,7 +85,7 @@ Domain name mapping protocol short version: 1 Public key 0-1 Attribute: xmlns:eis="https://epp.tld.ee/schema/eis-1.0.xsd" 0-1 Base64 encoded document. Required if registrant is changing. - Attribute: type="pdf/bdoc/ddoc/zip/rar/gz/tar/7z" + Attribute: type="pdf/bdoc/zip/rar/gz/tar/7z" 0-1 Client transaction id [EXAMPLE REQUEST AND RESPONSE](/doc/epp-examples.md#epp-domain-with-valid-domain-updates-domain-and-adds-objects) @@ -101,7 +101,7 @@ Domain name mapping protocol short version: 1 1 Attribute: xmlns:eis="https://epp.tld.ee/schema/eis-1.0.xsd" 1 Base64 encoded document. - Attribute: type="pdf/bdoc/ddoc/zip/rar/gz/tar/7z" + Attribute: type="pdf/bdoc/zip/rar/gz/tar/7z" 0-1 Client transaction id [EXAMPLE REQUEST AND RESPONSE](/doc/epp-examples.md#epp-domain-with-valid-domain-deletes-domain) @@ -134,7 +134,7 @@ Domain name mapping protocol short version: 0-1 0-1 Attribute: xmlns:eis="https://epp.tld.ee/schema/eis-1.0.xsd" 0-1 Base64 encoded document. - Attribute: type="pdf/bdoc/ddoc/zip/rar/gz/tar/7z" + Attribute: type="pdf/bdoc/zip/rar/gz/tar/7z" 0-1 Client transaction id [EXAMPLE REQUEST AND RESPONSE](/doc/epp-examples.md#epp-domain-with-valid-domain-renews-a-domain) @@ -151,7 +151,7 @@ Domain name mapping protocol short version: 0-1 0-1 Attribute: xmlns:eis="https://epp.tld.ee/schema/eis-1.0.xsd" 0-1 Base64 encoded document. - Attribute: type="pdf/bdoc/ddoc/zip/rar/gz/tar/7z" + Attribute: type="pdf/bdoc/zip/rar/gz/tar/7z" 0-1 Client transaction id [EXAMPLE REQUEST AND RESPONSE](/doc/epp-examples.md#epp-domain-with-valid-domain-transfers-a-domain) diff --git a/lib/schemas/ee-1.1.xsd b/lib/schemas/ee-1.1.xsd index 5473a016a..6dca4ccb3 100644 --- a/lib/schemas/ee-1.1.xsd +++ b/lib/schemas/ee-1.1.xsd @@ -64,7 +64,6 @@ - From 11658246c1cd627b172a1447bd7df6f7231e2f0d Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Mon, 9 Jan 2017 01:44:43 +0200 Subject: [PATCH 22/73] Replace xml schema "eis-1.0.xsd" with "ee-1.1.xsd" #270 --- app/views/epp/contacts/info.xml.builder | 2 +- app/views/epp/sessions/greeting.xml.builder | 2 +- .../epp_requests/contact/create.xml | 2 +- .../epp_requests/contact/delete.xml | 2 +- .../epp_requests/contact/update_chg.xml | 2 +- .../epp_requests/domain/create.xml | 2 +- .../epp_requests/domain/delete.xml | 2 +- .../epp_requests/domain/transfer.xml | 2 +- .../epp_requests/domain/update.xml | 2 +- .../epp_requests/keyrelay/keyrelay.xml | 2 +- doc/epp-examples.md | 374 +++++++++--------- doc/epp/contact.md | 6 +- doc/epp/domain.md | 10 +- lib/schemas/contact-ee-1.1.xsd | 2 +- lib/schemas/domain-eis-1.0.xsd | 2 +- spec/requests/epp/contact/create_spec.rb | 4 +- spec/requests/epp/contact/update_spec.rb | 4 +- .../domain/create/optional_nameserver_spec.rb | 4 +- .../domain/create/required_nameserver_spec.rb | 4 +- spec/support/requests/session_helpers.rb | 2 +- 20 files changed, 216 insertions(+), 216 deletions(-) diff --git a/app/views/epp/contacts/info.xml.builder b/app/views/epp/contacts/info.xml.builder index 068622203..ba045d30f 100644 --- a/app/views/epp/contacts/info.xml.builder +++ b/app/views/epp/contacts/info.xml.builder @@ -80,7 +80,7 @@ xml.epp_head do end if can? :view_full_info, @contact, @password xml.tag!('extension') do - xml.tag!('eis:extdata', 'xmlns:eis' => 'https://epp.tld.ee/schema/eis-1.0.xsd') do + xml.tag!('eis:extdata', 'xmlns:eis' => 'https://epp.tld.ee/schema/ee-1.1.xsd') do xml.tag!('eis:ident', @contact.ident, type: @contact.ident_type, cc: @contact.ident_country_code) end diff --git a/app/views/epp/sessions/greeting.xml.builder b/app/views/epp/sessions/greeting.xml.builder index 040ce7196..60d4ac117 100644 --- a/app/views/epp/sessions/greeting.xml.builder +++ b/app/views/epp/sessions/greeting.xml.builder @@ -11,7 +11,7 @@ xml.epp_head do xml.objURI 'urn:ietf:params:xml:ns:keyrelay-1.0' xml.svcExtension do xml.extURI 'urn:ietf:params:xml:ns:secDNS-1.1' - xml.extURI 'https://epp.tld.ee/schema/eis-1.0.xsd' + xml.extURI 'https://epp.tld.ee/schema/ee-1.1.xsd' end end diff --git a/app/views/registrar/xml_consoles/epp_requests/contact/create.xml b/app/views/registrar/xml_consoles/epp_requests/contact/create.xml index ff10b8370..423e8f3ef 100644 --- a/app/views/registrar/xml_consoles/epp_requests/contact/create.xml +++ b/app/views/registrar/xml_consoles/epp_requests/contact/create.xml @@ -20,7 +20,7 @@ - + 123 dGVzdCBmYWlsCg== diff --git a/app/views/registrar/xml_consoles/epp_requests/contact/delete.xml b/app/views/registrar/xml_consoles/epp_requests/contact/delete.xml index a86c4ac0c..9bc692c55 100644 --- a/app/views/registrar/xml_consoles/epp_requests/contact/delete.xml +++ b/app/views/registrar/xml_consoles/epp_requests/contact/delete.xml @@ -11,7 +11,7 @@ - + dGVzdCBmYWlsCg== diff --git a/app/views/registrar/xml_consoles/epp_requests/contact/update_chg.xml b/app/views/registrar/xml_consoles/epp_requests/contact/update_chg.xml index 62cc103db..8be734ea0 100644 --- a/app/views/registrar/xml_consoles/epp_requests/contact/update_chg.xml +++ b/app/views/registrar/xml_consoles/epp_requests/contact/update_chg.xml @@ -25,7 +25,7 @@ - + dGVzdCBmYWlsCg== diff --git a/app/views/registrar/xml_consoles/epp_requests/domain/create.xml b/app/views/registrar/xml_consoles/epp_requests/domain/create.xml index ef1392859..c409f712c 100644 --- a/app/views/registrar/xml_consoles/epp_requests/domain/create.xml +++ b/app/views/registrar/xml_consoles/epp_requests/domain/create.xml @@ -31,7 +31,7 @@ AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== diff --git a/app/views/registrar/xml_consoles/epp_requests/domain/delete.xml b/app/views/registrar/xml_consoles/epp_requests/domain/delete.xml index 16b78b73f..598fdac29 100644 --- a/app/views/registrar/xml_consoles/epp_requests/domain/delete.xml +++ b/app/views/registrar/xml_consoles/epp_requests/domain/delete.xml @@ -8,7 +8,7 @@ - + dGVzdCBmYWlsCg== diff --git a/app/views/registrar/xml_consoles/epp_requests/domain/transfer.xml b/app/views/registrar/xml_consoles/epp_requests/domain/transfer.xml index e373e64ee..0750abd7f 100644 --- a/app/views/registrar/xml_consoles/epp_requests/domain/transfer.xml +++ b/app/views/registrar/xml_consoles/epp_requests/domain/transfer.xml @@ -11,7 +11,7 @@ - + dGVzdCBmYWlsCg== diff --git a/app/views/registrar/xml_consoles/epp_requests/domain/update.xml b/app/views/registrar/xml_consoles/epp_requests/domain/update.xml index 57f495791..79be51a70 100644 --- a/app/views/registrar/xml_consoles/epp_requests/domain/update.xml +++ b/app/views/registrar/xml_consoles/epp_requests/domain/update.xml @@ -43,7 +43,7 @@ - + dGVzdCBmYWlsCg== diff --git a/app/views/registrar/xml_consoles/epp_requests/keyrelay/keyrelay.xml b/app/views/registrar/xml_consoles/epp_requests/keyrelay/keyrelay.xml index 4a8773cac..b3d55f016 100644 --- a/app/views/registrar/xml_consoles/epp_requests/keyrelay/keyrelay.xml +++ b/app/views/registrar/xml_consoles/epp_requests/keyrelay/keyrelay.xml @@ -16,7 +16,7 @@ P1D - + dGVzdCBmYWlsCg== 1422542244 diff --git a/doc/epp-examples.md b/doc/epp-examples.md index 12b2fdfdb..f503d074f 100644 --- a/doc/epp-examples.md +++ b/doc/epp-examples.md @@ -25,7 +25,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -108,7 +108,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -168,7 +168,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -225,7 +225,7 @@ REQUEST: - + 1990-22-12 dGVzdCBmYWlsCg== @@ -282,7 +282,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -339,7 +339,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -396,7 +396,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -448,7 +448,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -506,7 +506,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -564,7 +564,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -616,7 +616,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -668,7 +668,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -719,7 +719,7 @@ REQUEST: - + 1990-22-12 @@ -735,10 +735,10 @@ RESPONSE: - Element '{https://epp.tld.ee/schema/eis-1.0.xsd}ident', attribute 'cc': [facet 'maxLength'] The value 'WRONG' has a length of '5'; this exceeds the allowed maximum length of '2'. + Element '{https://epp.tld.ee/schema/ee-1.1.xsd}ident', attribute 'cc': [facet 'maxLength'] The value 'WRONG' has a length of '5'; this exceeds the allowed maximum length of '2'. - Element '{https://epp.tld.ee/schema/eis-1.0.xsd}ident', attribute 'cc': 'WRONG' is not a valid value of the atomic type '{https://epp.tld.ee/schema/eis-1.0.xsd}ccType'. + Element '{https://epp.tld.ee/schema/ee-1.1.xsd}ident', attribute 'cc': 'WRONG' is not a valid value of the atomic type '{https://epp.tld.ee/schema/ee-1.1.xsd}ccType'. ABC-12345 @@ -772,7 +772,7 @@ REQUEST: - + 1990-22-12 @@ -788,7 +788,7 @@ RESPONSE: - Element '{https://epp.tld.ee/schema/eis-1.0.xsd}ident': The attribute 'cc' is required but missing. + Element '{https://epp.tld.ee/schema/ee-1.1.xsd}ident': The attribute 'cc' is required but missing. ABC-12345 @@ -822,7 +822,7 @@ REQUEST: - + 1990-22-12 @@ -838,10 +838,10 @@ RESPONSE: - Element '{https://epp.tld.ee/schema/eis-1.0.xsd}ident': The attribute 'type' is required but missing. + Element '{https://epp.tld.ee/schema/ee-1.1.xsd}ident': The attribute 'type' is required but missing. - Element '{https://epp.tld.ee/schema/eis-1.0.xsd}ident': The attribute 'cc' is required but missing. + Element '{https://epp.tld.ee/schema/ee-1.1.xsd}ident': The attribute 'cc' is required but missing. ABC-12345 @@ -876,7 +876,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -934,7 +934,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -992,7 +992,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -1050,7 +1050,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -1108,7 +1108,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -1165,7 +1165,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -1222,7 +1222,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -1280,7 +1280,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -1332,7 +1332,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -1416,7 +1416,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -1469,7 +1469,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -1569,7 +1569,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -1617,7 +1617,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -1669,7 +1669,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -1717,7 +1717,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -1801,7 +1801,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -1851,7 +1851,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -1904,7 +1904,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -1955,7 +1955,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -2005,7 +2005,7 @@ REQUEST: - + 1990-22-12 dGVzdCBmYWlsCg== @@ -2057,7 +2057,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -2108,7 +2108,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -2486,7 +2486,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -2533,7 +2533,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -2577,7 +2577,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -2656,7 +2656,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -2705,7 +2705,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -2746,7 +2746,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -2793,7 +2793,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -2841,7 +2841,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -2920,7 +2920,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -2968,7 +2968,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -3009,7 +3009,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -3056,7 +3056,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -3339,7 +3339,7 @@ RESPONSE: - + 37605030299 @@ -3407,7 +3407,7 @@ RESPONSE: - + 37605030299 @@ -3475,7 +3475,7 @@ RESPONSE: - + 37605030299 @@ -3543,7 +3543,7 @@ RESPONSE: - + 37605030299 @@ -3611,7 +3611,7 @@ RESPONSE: - + 37605030299 @@ -3645,7 +3645,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -3725,7 +3725,7 @@ RESPONSE: - + 37605030299 @@ -3757,7 +3757,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -3805,7 +3805,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -3887,7 +3887,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -3935,7 +3935,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -4030,7 +4030,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -4076,7 +4076,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -4139,7 +4139,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -4202,7 +4202,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -4318,7 +4318,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -4380,7 +4380,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -4453,7 +4453,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -4521,7 +4521,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -4584,7 +4584,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -4647,7 +4647,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -4708,7 +4708,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== wrong_pw @@ -4774,7 +4774,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== abc @@ -4847,7 +4847,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -4909,7 +4909,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -4962,7 +4962,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -5062,7 +5062,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -5123,7 +5123,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -5189,7 +5189,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -5247,7 +5247,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -5312,7 +5312,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -5384,7 +5384,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -5454,7 +5454,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -5524,7 +5524,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -5593,7 +5593,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -5663,7 +5663,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -5729,7 +5729,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -5793,7 +5793,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -5871,7 +5871,7 @@ REQUEST: 841936717ae427ace63c28d04918569a841936717ae427ace63c28d0 - + dGVzdCBmYWlsCg== @@ -5953,7 +5953,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -6029,7 +6029,7 @@ REQUEST: AwEAAbuFiHS4jZL7ZQKvEPBmsbceNHTVYpEVMdxz2A6YCjlZTEoAH3qK - + dGVzdCBmYWlsCg== @@ -6131,7 +6131,7 @@ REQUEST: 700b97b591ed27ec2590d19f06f88bba700b97b591ed27ec2590d19f - + dGVzdCBmYWlsCg== @@ -6203,7 +6203,7 @@ REQUEST: 700b97b591ed27ec2590d19f06f88bba700b97b591ed27ec2590d19f - + dGVzdCBmYWlsCg== @@ -6266,7 +6266,7 @@ REQUEST: 49FD46E6C4B45C55D4AC - + dGVzdCBmYWlsCg== @@ -6342,7 +6342,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -6418,7 +6418,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -6481,7 +6481,7 @@ REQUEST: 700b97b591ed27ec2590d19f06f88bba700b97b591ed27ec2590d19f - + dGVzdCBmYWlsCg== @@ -6550,7 +6550,7 @@ REQUEST: 700b97b591ed27ec2590d19f06f88bba700b97b591ed27ec2590d19f - + dGVzdCBmYWlsCg== @@ -6611,7 +6611,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -6679,7 +6679,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -6740,7 +6740,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -6791,7 +6791,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -6832,7 +6832,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -6889,7 +6889,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -7011,7 +7011,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -7052,7 +7052,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -7109,7 +7109,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -7155,7 +7155,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -7196,7 +7196,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -7242,7 +7242,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -7290,7 +7290,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -7383,7 +7383,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -7431,7 +7431,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -7524,7 +7524,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -7572,7 +7572,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -7665,7 +7665,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -7713,7 +7713,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -7806,7 +7806,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -7854,7 +7854,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -7947,7 +7947,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -7995,7 +7995,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -8088,7 +8088,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -8136,7 +8136,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -8229,7 +8229,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -8277,7 +8277,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -8370,7 +8370,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -8418,7 +8418,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -8497,7 +8497,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -8540,7 +8540,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -8599,7 +8599,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -8640,7 +8640,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -8686,7 +8686,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -8727,7 +8727,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -8786,7 +8786,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -8827,7 +8827,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -8873,7 +8873,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -8916,7 +8916,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -8959,7 +8959,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -9045,7 +9045,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -9086,7 +9086,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -9138,7 +9138,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -9184,7 +9184,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -9227,7 +9227,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -9351,7 +9351,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -9437,7 +9437,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -9481,7 +9481,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -9525,7 +9525,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -9622,7 +9622,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -9666,7 +9666,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -9710,7 +9710,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -9754,7 +9754,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -10050,7 +10050,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -10123,7 +10123,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -11231,7 +11231,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -11312,7 +11312,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -11943,7 +11943,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -12023,7 +12023,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -12071,7 +12071,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -12176,7 +12176,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -12224,7 +12224,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -12335,7 +12335,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -12375,7 +12375,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -12415,7 +12415,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -12455,7 +12455,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -12753,7 +12753,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -12996,7 +12996,7 @@ REQUEST: P1D - + dGVzdCBmYWlsCg== 1441791743 @@ -13047,7 +13047,7 @@ REQUEST: P1D - + dGVzdCBmYWlsCg== 1441791744 @@ -13092,7 +13092,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -13171,7 +13171,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -13246,7 +13246,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -13325,7 +13325,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -13403,7 +13403,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -13764,7 +13764,7 @@ RESPONSE: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -13810,7 +13810,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -13858,7 +13858,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -13941,7 +13941,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -13987,7 +13987,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -14035,7 +14035,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -14083,7 +14083,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -14129,7 +14129,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -14177,7 +14177,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -14255,7 +14255,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd @@ -14304,7 +14304,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd diff --git a/doc/epp/contact.md b/doc/epp/contact.md index 0ed981f5a..4d775e4b9 100644 --- a/doc/epp/contact.md +++ b/doc/epp/contact.md @@ -34,7 +34,7 @@ More info: https://en.wikipedia.org/wiki/Latin_script_in_Unicode 1 Phone number in format \+ddd.d+ 1 E-mail 1 - 1 Attribute: xmlns:eis="https://epp.tld.ee/schema/eis-1.0.xsd" + 1 Attribute: xmlns:eis="https://epp.tld.ee/schema/ee-1.1.xsd" 1 Contact identificator Attribute: "type" "org" # Business registry code @@ -70,7 +70,7 @@ More info: https://en.wikipedia.org/wiki/Latin_script_in_Unicode 0-1 Required if registrar is not the owner of the contact. 1 Contact password. Attribute: roid="String" 0-1 - 0-1 Attribute: xmlns:eis="https://epp.tld.ee/schema/eis-1.0.xsd" + 0-1 Attribute: xmlns:eis="https://epp.tld.ee/schema/ee-1.1.xsd" 0-1 Contact identificator Attribute: "type" "org" # Business registry code @@ -95,7 +95,7 @@ More info: https://en.wikipedia.org/wiki/Latin_script_in_Unicode 0-1 Required if registrar is not the owner of the contact. 1 Contact password. Attribute: roid="String" 0-1 - 0-1 Attribute: xmlns:eis="https://epp.tld.ee/schema/eis-1.0.xsd" + 0-1 Attribute: xmlns:eis="https://epp.tld.ee/schema/ee-1.1.xsd" 0-1 Base64 encoded document. Attribute: type="pdf/bdoc/zip/rar/gz/tar/7z" 0-1 Client transaction id diff --git a/doc/epp/domain.md b/doc/epp/domain.md index 0f1607bde..58edad293 100644 --- a/doc/epp/domain.md +++ b/doc/epp/domain.md @@ -34,7 +34,7 @@ Domain name mapping protocol short version: 1 Allowed values: 3 1 Allowed values: 3, 5, 6, 7, 8, 10, 13, 14 1 Public key - 1 Attribute: xmlns:eis="https://epp.tld.ee/schema/eis-1.0.xsd" + 1 Attribute: xmlns:eis="https://epp.tld.ee/schema/ee-1.1.xsd" 1 Base64 encoded document. Attribute: type="pdf/bdoc/zip/rar/gz/tar/7z" 0-1 @@ -83,7 +83,7 @@ Domain name mapping protocol short version: 1 Allowed values: 3 1 Allowed values: 3, 5, 6, 7, 8, 10, 13, 14 1 Public key - 0-1 Attribute: xmlns:eis="https://epp.tld.ee/schema/eis-1.0.xsd" + 0-1 Attribute: xmlns:eis="https://epp.tld.ee/schema/ee-1.1.xsd" 0-1 Base64 encoded document. Required if registrant is changing. Attribute: type="pdf/bdoc/zip/rar/gz/tar/7z" 0-1 Client transaction id @@ -99,7 +99,7 @@ Domain name mapping protocol short version: Optional attribute: verified="yes/no" 1 Domain name. Can contain unicode characters. 1 - 1 Attribute: xmlns:eis="https://epp.tld.ee/schema/eis-1.0.xsd" + 1 Attribute: xmlns:eis="https://epp.tld.ee/schema/ee-1.1.xsd" 1 Base64 encoded document. Attribute: type="pdf/bdoc/zip/rar/gz/tar/7z" 0-1 Client transaction id @@ -132,7 +132,7 @@ Domain name mapping protocol short version: Must add up to 1 / 2 / 3 years. Attribute: unit="y/m/d" Default value is 1 year. 0-1 - 0-1 Attribute: xmlns:eis="https://epp.tld.ee/schema/eis-1.0.xsd" + 0-1 Attribute: xmlns:eis="https://epp.tld.ee/schema/ee-1.1.xsd" 0-1 Base64 encoded document. Attribute: type="pdf/bdoc/zip/rar/gz/tar/7z" 0-1 Client transaction id @@ -149,7 +149,7 @@ Domain name mapping protocol short version: 1 1 Domain password. Attribute: roid="String" 0-1 - 0-1 Attribute: xmlns:eis="https://epp.tld.ee/schema/eis-1.0.xsd" + 0-1 Attribute: xmlns:eis="https://epp.tld.ee/schema/ee-1.1.xsd" 0-1 Base64 encoded document. Attribute: type="pdf/bdoc/zip/rar/gz/tar/7z" 0-1 Client transaction id diff --git a/lib/schemas/contact-ee-1.1.xsd b/lib/schemas/contact-ee-1.1.xsd index 6a115bfab..5a8bf8827 100644 --- a/lib/schemas/contact-ee-1.1.xsd +++ b/lib/schemas/contact-ee-1.1.xsd @@ -12,7 +12,7 @@ --> - + diff --git a/lib/schemas/domain-eis-1.0.xsd b/lib/schemas/domain-eis-1.0.xsd index edf8676af..374eaf354 100644 --- a/lib/schemas/domain-eis-1.0.xsd +++ b/lib/schemas/domain-eis-1.0.xsd @@ -15,7 +15,7 @@ Import common element types. - + diff --git a/spec/requests/epp/contact/create_spec.rb b/spec/requests/epp/contact/create_spec.rb index 0f03fd6ac..5e478b1bf 100644 --- a/spec/requests/epp/contact/create_spec.rb +++ b/spec/requests/epp/contact/create_spec.rb @@ -20,7 +20,7 @@ RSpec.describe 'EPP contact:create' do - + 1234567 dGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCg @@ -98,7 +98,7 @@ RSpec.describe 'EPP contact:create' do - + 123456 dGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCg diff --git a/spec/requests/epp/contact/update_spec.rb b/spec/requests/epp/contact/update_spec.rb index cd596dd85..1c188afeb 100644 --- a/spec/requests/epp/contact/update_spec.rb +++ b/spec/requests/epp/contact/update_spec.rb @@ -20,7 +20,7 @@ RSpec.describe 'EPP contact:update' do - + dGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCg @@ -82,7 +82,7 @@ RSpec.describe 'EPP contact:update' do - + dGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCg diff --git a/spec/requests/epp/domain/create/optional_nameserver_spec.rb b/spec/requests/epp/domain/create/optional_nameserver_spec.rb index 0201477a5..14e37b9e2 100644 --- a/spec/requests/epp/domain/create/optional_nameserver_spec.rb +++ b/spec/requests/epp/domain/create/optional_nameserver_spec.rb @@ -52,7 +52,7 @@ RSpec.describe 'EPP domain:create' do - + #{Base64.encode64('a' * 5000)} @@ -95,7 +95,7 @@ RSpec.describe 'EPP domain:create' do - + #{Base64.encode64('a' * 5000)} diff --git a/spec/requests/epp/domain/create/required_nameserver_spec.rb b/spec/requests/epp/domain/create/required_nameserver_spec.rb index 846bff137..3f4daa05e 100644 --- a/spec/requests/epp/domain/create/required_nameserver_spec.rb +++ b/spec/requests/epp/domain/create/required_nameserver_spec.rb @@ -53,7 +53,7 @@ RSpec.describe 'EPP domain:create' do - + #{Base64.encode64('a' * 5000)} @@ -83,7 +83,7 @@ RSpec.describe 'EPP domain:create' do - + #{Base64.encode64('a' * 5000)} diff --git a/spec/support/requests/session_helpers.rb b/spec/support/requests/session_helpers.rb index 3f75da577..9d8a3efc9 100644 --- a/spec/support/requests/session_helpers.rb +++ b/spec/support/requests/session_helpers.rb @@ -18,7 +18,7 @@ module Requests urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd + https://epp.tld.ee/schema/ee-1.1.xsd From 4974dce02772873247af39a5f14255b22fe2cf5f Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Thu, 12 Jan 2017 13:02:31 +0200 Subject: [PATCH 23/73] Introduce all-ee-1.2.xsd #270 --- config/initializers/load_schemas.rb | 2 +- lib/schemas/all-ee-1.2.xsd | 46 +++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 lib/schemas/all-ee-1.2.xsd diff --git a/config/initializers/load_schemas.rb b/config/initializers/load_schemas.rb index fa0150896..1f34d58df 100644 --- a/config/initializers/load_schemas.rb +++ b/config/initializers/load_schemas.rb @@ -1 +1 @@ -EPP_ALL_SCHEMA = Nokogiri::XML::Schema(File.read('lib/schemas/all-ee-1.1.xsd')) +EPP_ALL_SCHEMA = Nokogiri::XML::Schema(File.read('lib/schemas/all-ee-1.2.xsd')) diff --git a/lib/schemas/all-ee-1.2.xsd b/lib/schemas/all-ee-1.2.xsd new file mode 100644 index 000000000..b40ffe919 --- /dev/null +++ b/lib/schemas/all-ee-1.2.xsd @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + Extensible Provisioning Protocol v1.2 + all schema's grouped together + + + + From 7dd9d6492875729afbfcfb478dfe2e168087f85e Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Thu, 12 Jan 2017 13:03:16 +0200 Subject: [PATCH 24/73] Update readme #270 --- doc/epp/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/epp/README.md b/doc/epp/README.md index 99ffd07df..6b7b9e116 100644 --- a/doc/epp/README.md +++ b/doc/epp/README.md @@ -30,7 +30,9 @@ ### .ee-specific * [all-ee-1.0.xsd](/lib/schemas/all-ee-1.0.xsd) * [all-ee-1.1.xsd](/lib/schemas/all-ee-1.1.xsd) +* [all-ee-1.2.xsd](/lib/schemas/all-ee-1.2.xsd) * [eis-1.0.xsd](/lib/schemas/eis-1.0.xsd) +* [ee-1.1.xsd](/lib/schemas/ee-1.1.xsd) * [epp-ee-1.0.xsd](/lib/schemas/epp-ee-1.0.xsd) * [domain-eis-1.0.xsd](/lib/schemas/domain-eis-1.0.xsd) * [contact-eis-1.0.xsd](/lib/schemas/contact-eis-1.0.xsd) From 2718f6034fbc70a54b2192fb391bf2ac3697f42e Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Thu, 12 Jan 2017 14:46:17 +0200 Subject: [PATCH 25/73] Remove epp-xml gem version from Gemfile #270 --- Gemfile | 2 +- Gemfile.lock | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile b/Gemfile index 11e5d92a0..742df7785 100644 --- a/Gemfile +++ b/Gemfile @@ -84,7 +84,7 @@ gem 'deep_cloneable', '2.1.1' gem 'digidoc_client', '0.2.1' gem 'epp', '1.5.0', github: 'internetee/epp' -gem 'epp-xml', '1.1.0', github: 'internetee/epp-xml' +gem 'epp-xml', github: 'internetee/epp-xml' gem 'uuidtools', '2.1.5' # For unique IDs (used by the epp gem) # que diff --git a/Gemfile.lock b/Gemfile.lock index 7b3810caf..74876568d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -594,7 +594,7 @@ DEPENDENCIES devise (= 3.5.4) digidoc_client (= 0.2.1) epp (= 1.5.0)! - epp-xml (= 1.1.0)! + epp-xml! fabrication (= 2.13.2) factory_girl_rails figaro (= 1.1.1) From 583e65386967271b6ec8bf89d787286fa43a616d Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Thu, 12 Jan 2017 14:56:59 +0200 Subject: [PATCH 26/73] Update changelog #270 --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a6517b4ff..535d7d356 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +08.01.2017 +* EPP XML schema "eis-1.0.xsd" replaced with "ee-1.1.xsd" +* .ddoc legal document format support dropped + 22.12.2016 * Return business registry code and country for 'org' type registrants in WHOIS and Rest-WHOIS From 9fe1d0898563c3f5cc0a4b2d25313118d6a41dec Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Thu, 12 Jan 2017 16:52:07 +0200 Subject: [PATCH 27/73] Point epp-xml gem to branch epp-xml-6 #270 --- Gemfile | 2 +- Gemfile.lock | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 742df7785..550d87802 100644 --- a/Gemfile +++ b/Gemfile @@ -84,7 +84,7 @@ gem 'deep_cloneable', '2.1.1' gem 'digidoc_client', '0.2.1' gem 'epp', '1.5.0', github: 'internetee/epp' -gem 'epp-xml', github: 'internetee/epp-xml' +gem 'epp-xml', github: 'internetee/epp-xml', branch: 'epp-xml-6' gem 'uuidtools', '2.1.5' # For unique IDs (used by the epp gem) # que diff --git a/Gemfile.lock b/Gemfile.lock index 74876568d..ea66d68db 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -18,9 +18,10 @@ GIT GIT remote: https://github.com/internetee/epp-xml.git - revision: 5dd542e67ef26d58365f30e553254d6db809277d + revision: e483de16c06856a2d0dfe29aef74ddcbc901704b + branch: epp-xml-6 specs: - epp-xml (1.1.0) + epp-xml (2.0.0) activesupport (~> 4.1) builder (~> 3.2) From d294105c59b8be35675c0a1af29dc40373a41e64 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Mon, 16 Jan 2017 01:36:38 +0200 Subject: [PATCH 28/73] Add "removed_company" template to delete domain mailer #268 --- .../{forced.html.erb => forced/removed_company.html.erb} | 0 .../{forced.text.erb => forced/removed_company.text.erb} | 0 .../removed_company.html.erb_spec.rb} | 4 ++-- .../{forced_shared.rb => forced/removed_company.rb} | 0 .../removed_company.text.erb_spec.rb} | 4 ++-- 5 files changed, 4 insertions(+), 4 deletions(-) rename app/views/mailers/domain_delete_mailer/{forced.html.erb => forced/removed_company.html.erb} (100%) rename app/views/mailers/domain_delete_mailer/{forced.text.erb => forced/removed_company.text.erb} (100%) rename spec/views/mailers/domain_delete_mailer/{forced.html.erb_spec.rb => forced/removed_company.html.erb_spec.rb} (76%) rename spec/views/mailers/domain_delete_mailer/{forced_shared.rb => forced/removed_company.rb} (100%) rename spec/views/mailers/domain_delete_mailer/{forced.text.erb_spec.rb => forced/removed_company.text.erb_spec.rb} (76%) diff --git a/app/views/mailers/domain_delete_mailer/forced.html.erb b/app/views/mailers/domain_delete_mailer/forced/removed_company.html.erb similarity index 100% rename from app/views/mailers/domain_delete_mailer/forced.html.erb rename to app/views/mailers/domain_delete_mailer/forced/removed_company.html.erb diff --git a/app/views/mailers/domain_delete_mailer/forced.text.erb b/app/views/mailers/domain_delete_mailer/forced/removed_company.text.erb similarity index 100% rename from app/views/mailers/domain_delete_mailer/forced.text.erb rename to app/views/mailers/domain_delete_mailer/forced/removed_company.text.erb diff --git a/spec/views/mailers/domain_delete_mailer/forced.html.erb_spec.rb b/spec/views/mailers/domain_delete_mailer/forced/removed_company.html.erb_spec.rb similarity index 76% rename from spec/views/mailers/domain_delete_mailer/forced.html.erb_spec.rb rename to spec/views/mailers/domain_delete_mailer/forced/removed_company.html.erb_spec.rb index 4f38b7743..5a92165b0 100644 --- a/spec/views/mailers/domain_delete_mailer/forced.html.erb_spec.rb +++ b/spec/views/mailers/domain_delete_mailer/forced/removed_company.html.erb_spec.rb @@ -1,7 +1,7 @@ require 'rails_helper' -require_relative 'forced_shared' +require_relative 'removed_company' -RSpec.describe 'mailers/domain_delete_mailer/forced.html.erb' do +RSpec.describe 'mailers/domain_delete_mailer/forced/removed_company.html.erb' do before :example do stub_template 'mailers/shared/registrar/_registrar.et.html' => 'test registrar estonian' stub_template 'mailers/shared/registrar/_registrar.en.html' => 'test registrar english' diff --git a/spec/views/mailers/domain_delete_mailer/forced_shared.rb b/spec/views/mailers/domain_delete_mailer/forced/removed_company.rb similarity index 100% rename from spec/views/mailers/domain_delete_mailer/forced_shared.rb rename to spec/views/mailers/domain_delete_mailer/forced/removed_company.rb diff --git a/spec/views/mailers/domain_delete_mailer/forced.text.erb_spec.rb b/spec/views/mailers/domain_delete_mailer/forced/removed_company.text.erb_spec.rb similarity index 76% rename from spec/views/mailers/domain_delete_mailer/forced.text.erb_spec.rb rename to spec/views/mailers/domain_delete_mailer/forced/removed_company.text.erb_spec.rb index a53c5beca..ec527b0d7 100644 --- a/spec/views/mailers/domain_delete_mailer/forced.text.erb_spec.rb +++ b/spec/views/mailers/domain_delete_mailer/forced/removed_company.text.erb_spec.rb @@ -1,7 +1,7 @@ require 'rails_helper' -require_relative 'forced_shared' +require_relative 'removed_company' -RSpec.describe 'mailers/domain_delete_mailer/forced.text.erb' do +RSpec.describe 'mailers/domain_delete_mailer/forced/removed_company.text.erb' do before :example do stub_template 'mailers/shared/registrar/_registrar.et.text' => 'test registrar estonian' stub_template 'mailers/shared/registrar/_registrar.en.text' => 'test registrar english' From 92c6279e462ab88d8ebb30a1712afe463d1fe694 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Tue, 17 Jan 2017 03:06:36 +0200 Subject: [PATCH 29/73] Use default layout path in admin area #268 --- app/controllers/admin/sessions_controller.rb | 1 - app/controllers/admin_controller.rb | 1 - app/views/admin/_menu.haml | 44 ++++++++++++++++++++ app/views/layouts/admin.haml | 36 ++++++++++++++++ app/views/layouts/devise.haml | 29 +++++++++++++ 5 files changed, 109 insertions(+), 2 deletions(-) create mode 100644 app/views/admin/_menu.haml create mode 100644 app/views/layouts/admin.haml create mode 100644 app/views/layouts/devise.haml diff --git a/app/controllers/admin/sessions_controller.rb b/app/controllers/admin/sessions_controller.rb index 5dc244398..d907fe1f3 100644 --- a/app/controllers/admin/sessions_controller.rb +++ b/app/controllers/admin/sessions_controller.rb @@ -1,6 +1,5 @@ class Admin::SessionsController < Devise::SessionsController skip_authorization_check only: :create - layout 'admin/application' def login @admin_user = AdminUser.new diff --git a/app/controllers/admin_controller.rb b/app/controllers/admin_controller.rb index 29b7be698..ec335ae65 100644 --- a/app/controllers/admin_controller.rb +++ b/app/controllers/admin_controller.rb @@ -1,5 +1,4 @@ class AdminController < ApplicationController - layout 'admin/application' before_action :authenticate_user! helper_method :head_title_sufix diff --git a/app/views/admin/_menu.haml b/app/views/admin/_menu.haml new file mode 100644 index 000000000..4077e58f2 --- /dev/null +++ b/app/views/admin/_menu.haml @@ -0,0 +1,44 @@ +.navbar-collapse.collapse + %ul.nav.navbar-nav + - if can? :show, Domain + %li= link_to t(:domains), admin_domains_path + - if can? :show, Contact + %li= link_to t(:contacts), admin_contacts_path + - if can? :show, Registrar + %li= link_to t(:registrars), admin_registrars_path + - if can? :show, Keyrelay + %li= link_to t(:keyrelays), admin_keyrelays_path + - if can?(:access, :settings_menu) + %li.dropdown + %a.dropdown-toggle{"data-toggle" => "dropdown", href: "#"} + = t(:settings) + %span.caret + %ul.dropdown-menu{role: "menu"} + %li.dropdown-header= t(:users) + %li= link_to t(:api_users), admin_api_users_path + %li= link_to t(:admin_users), admin_admin_users_path + %li.divider + %li.dropdown-header= t(:billing) + - if can? :view, Pricelist + %li= link_to t(:pricelists), admin_pricelists_path + %li= link_to t(:bank_statements), admin_bank_statements_path + %li= link_to t(:invoices), admin_invoices_path + %li= link_to t(:account_activities), admin_account_activities_path(created_after: 'today') + %li.divider + %li.dropdown-header= t(:archive) + %li= link_to t(:domains_history), admin_domain_versions_path + %li= link_to t(:contacts_history), admin_contact_versions_path + %li.divider + %li.dropdown-header= t(:system) + %li= link_to t(:settings), admin_settings_path + %li= link_to t(:zonefile), admin_zonefile_settings_path + %li= link_to t(:blocked_domains), admin_blocked_domains_path + %li= link_to t(:reserved_domains), admin_reserved_domains_path + %li= link_to t(:mail_templates), admin_mail_templates_path + %li= link_to t(:epp_logs), admin_epp_logs_path(created_after: 'today') + %li= link_to t(:repp_logs), admin_repp_logs_path(created_after: 'today') + %li= link_to t(:que), '/admin/que' + + - if signed_in? + %ul.nav.navbar-nav.navbar-right + %li= link_to t(:log_out, user: current_user), '/admin/logout' diff --git a/app/views/layouts/admin.haml b/app/views/layouts/admin.haml new file mode 100644 index 000000000..70ee14cfc --- /dev/null +++ b/app/views/layouts/admin.haml @@ -0,0 +1,36 @@ +!!! 5 +%html{lang: I18n.locale.to_s} + %head + %meta{charset: "utf-8"}/ + %meta{content: "width=device-width, initial-scale=1", name: "viewport"}/ + - if content_for? :head_title + = yield :head_title + - else + %title= t(:admin_head_title) + = csrf_meta_tags + = stylesheet_link_tag 'admin-manifest', media: 'all', 'data-turbolinks-track' => true + = favicon_link_tag 'favicon.ico' + %body{:style => env_style} + .navbar.navbar-inverse.navbar-static-top{role: "navigation"} + .container + .navbar-header + %button.navbar-toggle{"data-target" => ".navbar-collapse", "data-toggle" => "collapse", type: "button"} + %span.sr-only Toggle navigation + %span.icon-bar + %span.icon-bar + %span.icon-bar + = link_to admin_dashboard_path, class: 'navbar-brand' do + = ENV['app_name'] + - if unstable_env.present? + .text-center + %small{style: 'color: #0074B3;'}= unstable_env + + = render 'menu' + .container + = render 'shared/flash' + = yield + + .footer.text-right + Version + = CURRENT_COMMIT_HASH + = javascript_include_tag 'admin-manifest', async: true diff --git a/app/views/layouts/devise.haml b/app/views/layouts/devise.haml new file mode 100644 index 000000000..14534e374 --- /dev/null +++ b/app/views/layouts/devise.haml @@ -0,0 +1,29 @@ +!!! 5 +%html{lang: I18n.locale.to_s} + %head + %meta{charset: "utf-8"}/ + - if content_for? :head_title + = yield :head_title + - else + %title= t(:admin_head_title) + = csrf_meta_tags + = stylesheet_link_tag 'admin-manifest', media: 'all', 'data-turbolinks-track' => true + = favicon_link_tag 'favicon.ico' + %body{:style => env_style} + .navbar.navbar-inverse.navbar-static-top{role: "navigation"} + .container + .navbar-header + %button.navbar-toggle{"data-target" => ".navbar-collapse", "data-toggle" => "collapse", type: "button"} + %span.sr-only Toggle navigation + %span.icon-bar + %span.icon-bar + %span.icon-bar + = link_to admin_dashboard_path, class: 'navbar-brand' do + = ENV['app_name'] + - if unstable_env.present? + .text-center + %small{style: 'color: #0074B3;'}= unstable_env + + .container + = render 'shared/flash' + = yield From 5c85314168b0cdd515644e43656a545c3159c019 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Tue, 17 Jan 2017 03:14:32 +0200 Subject: [PATCH 30/73] Disable asset debug in dev env #268 --- config/environments/development-example.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/environments/development-example.rb b/config/environments/development-example.rb index f2e07435a..59efe01d9 100644 --- a/config/environments/development-example.rb +++ b/config/environments/development-example.rb @@ -24,7 +24,7 @@ Rails.application.configure do # Debug mode disables concatenation and preprocessing of assets. # This option may cause significant delays in view rendering with a large # number of complex assets. - config.assets.debug = true + config.assets.debug = false # Adds additional error checking when serving assets at runtime. # Checks for improperly declared sprockets dependencies. From fec7f82a96492ee615cf6b1402d21ffd3ff215a5 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Tue, 17 Jan 2017 03:17:48 +0200 Subject: [PATCH 31/73] Remove turbolinks, load js in async mode #268 --- app/assets/javascripts/admin-manifest.coffee | 1 - .../javascripts/admin/application.coffee | 87 +++++++++---------- app/views/layouts/admin.haml | 2 +- app/views/layouts/admin/application.haml | 85 ------------------ 4 files changed, 44 insertions(+), 131 deletions(-) delete mode 100644 app/views/layouts/admin/application.haml diff --git a/app/assets/javascripts/admin-manifest.coffee b/app/assets/javascripts/admin-manifest.coffee index 51bc5f419..c386c45e6 100644 --- a/app/assets/javascripts/admin-manifest.coffee +++ b/app/assets/javascripts/admin-manifest.coffee @@ -1,6 +1,5 @@ #= require jquery #= require jquery_ujs -#= require turbolinks #= require bootstrap-sprockets #= require typeahead.bundle.min #= require admin/autocomplete diff --git a/app/assets/javascripts/admin/application.coffee b/app/assets/javascripts/admin/application.coffee index 1b3335d63..6a6c30bec 100644 --- a/app/assets/javascripts/admin/application.coffee +++ b/app/assets/javascripts/admin/application.coffee @@ -1,53 +1,52 @@ -$(document).on 'page:change', -> - $('.selectize').selectize({ - allowEmptyOption: true - }) - $('.selectize_create').selectize({ - allowEmptyOption: true, create: true - }) +$('.selectize').selectize({ + allowEmptyOption: true +}) +$('.selectize_create').selectize({ + allowEmptyOption: true, create: true +}) - $('.js-datepicker').datepicker({ - showAnim: "", - autoclose: true, - dateFormat: "dd.mm.yy", - changeMonth: true, - changeYear: true - }) +$('.js-datepicker').datepicker({ + showAnim: "", + autoclose: true, + dateFormat: "dd.mm.yy", + changeMonth: true, + changeYear: true +}) - # client side validate all forms - $('form').each -> - $(this).validate() - - $('[data-toggle="popover"]').popover() +# client side validate all forms +$('form').each -> + $(this).validate() + +$('[data-toggle="popover"]').popover() - # doublescroll - $('[data-doublescroll]').doubleScroll({ - onlyIfScroll: false, - scrollCss: - 'overflow-x': 'auto' - 'overflow-y': 'hidden' - contentCss: - 'overflow-x': 'auto' - 'overflow-y': 'hidden' - resetOnWindowResize: true - }) +# doublescroll +$('[data-doublescroll]').doubleScroll({ + onlyIfScroll: false, + scrollCss: + 'overflow-x': 'auto' + 'overflow-y': 'hidden' + contentCss: + 'overflow-x': 'auto' + 'overflow-y': 'hidden' + resetOnWindowResize: true +}) - positionSlider = -> - for scroll in document.querySelectorAll('[data-doublescroll]') - wrapper = scroll.previousSibling - if $(scroll).offset().top < $(window).scrollTop() - wrapper.style.position = 'fixed' - wrapper.style.top = '-5px' - else - wrapper.style.position = 'relative' - wrapper.style.top = '0' - return +positionSlider = -> + for scroll in document.querySelectorAll('[data-doublescroll]') + wrapper = scroll.previousSibling + if $(scroll).offset().top < $(window).scrollTop() + wrapper.style.position = 'fixed' + wrapper.style.top = '-5px' + else + wrapper.style.position = 'relative' + wrapper.style.top = '0' + return - positionSlider() - $(window).scroll(positionSlider).resize positionSlider - #due .report-table width: auto top scrollbar appears after resize so we do fake resize action - $(window).resize() +positionSlider() +$(window).scroll(positionSlider).resize positionSlider +#due .report-table width: auto top scrollbar appears after resize so we do fake resize action +$(window).resize(); diff --git a/app/views/layouts/admin.haml b/app/views/layouts/admin.haml index 70ee14cfc..8e8e3230e 100644 --- a/app/views/layouts/admin.haml +++ b/app/views/layouts/admin.haml @@ -8,7 +8,7 @@ - else %title= t(:admin_head_title) = csrf_meta_tags - = stylesheet_link_tag 'admin-manifest', media: 'all', 'data-turbolinks-track' => true + = stylesheet_link_tag 'admin-manifest', media: 'all' = favicon_link_tag 'favicon.ico' %body{:style => env_style} .navbar.navbar-inverse.navbar-static-top{role: "navigation"} diff --git a/app/views/layouts/admin/application.haml b/app/views/layouts/admin/application.haml deleted file mode 100644 index 9937937e6..000000000 --- a/app/views/layouts/admin/application.haml +++ /dev/null @@ -1,85 +0,0 @@ -!!! 5 -%html{lang: I18n.locale.to_s} - %head - %meta{charset: "utf-8"}/ - %meta{content: "IE=edge", "http-equiv" => "X-UA-Compatible"}/ - %meta{content: "width=device-width, initial-scale=1", name: "viewport"}/ - %meta{content: "Full stack top-level domain (TLD) management.", name: "description"}/ - %meta{content: "Gitlab LTD", name: "author"}/ - - if content_for? :head_title - = yield :head_title - - else - %title= t(:admin_head_title) - = csrf_meta_tags - = stylesheet_link_tag 'admin-manifest', media: 'all', 'data-turbolinks-track' => true - = javascript_include_tag 'admin-manifest', 'data-turbolinks-track' => true - = favicon_link_tag 'favicon.ico' - %body{:style => env_style} - / Static navbar - .navbar.navbar-inverse.navbar-static-top{role: "navigation"} - .container - .navbar-header - %button.navbar-toggle{"data-target" => ".navbar-collapse", "data-toggle" => "collapse", type: "button"} - %span.sr-only Toggle navigation - %span.icon-bar - %span.icon-bar - %span.icon-bar - = link_to admin_dashboard_path, class: 'navbar-brand' do - = ENV['app_name'] - - if unstable_env.present? - .text-center - %small{style: 'color: #0074B3;'}= unstable_env - - .navbar-collapse.collapse - %ul.nav.navbar-nav - - if can? :show, Domain - %li= link_to t(:domains), admin_domains_path - - if can? :show, Contact - %li= link_to t(:contacts), admin_contacts_path - - if can? :show, Registrar - %li= link_to t(:registrars), admin_registrars_path - - if can? :show, Keyrelay - %li= link_to t(:keyrelays), admin_keyrelays_path - - if can?(:access, :settings_menu) - %li.dropdown - %a.dropdown-toggle{"data-toggle" => "dropdown", href: "#"} - = t(:settings) - %span.caret - %ul.dropdown-menu{role: "menu"} - %li.dropdown-header= t(:users) - %li= link_to t(:api_users), admin_api_users_path - %li= link_to t(:admin_users), admin_admin_users_path - %li.divider - %li.dropdown-header= t(:billing) - - if can? :view, Pricelist - %li= link_to t(:pricelists), admin_pricelists_path - %li= link_to t(:bank_statements), admin_bank_statements_path - %li= link_to t(:invoices), admin_invoices_path - %li= link_to t(:account_activities), admin_account_activities_path(created_after: 'today') - %li.divider - %li.dropdown-header= t(:archive) - %li= link_to t(:domains_history), admin_domain_versions_path - %li= link_to t(:contacts_history), admin_contact_versions_path - %li.divider - %li.dropdown-header= t(:system) - %li= link_to t(:settings), admin_settings_path - %li= link_to t(:zonefile), admin_zonefile_settings_path - %li= link_to t(:blocked_domains), admin_blocked_domains_path - %li= link_to t(:reserved_domains), admin_reserved_domains_path - %li= link_to t(:mail_templates), admin_mail_templates_path - -# %li= link_to t(:domains_history), admin_domain_versions_path - %li= link_to t(:epp_logs), admin_epp_logs_path(created_after: 'today') - %li= link_to t(:repp_logs), admin_repp_logs_path(created_after: 'today') - %li= link_to t(:que), '/admin/que' - - - if signed_in? - %ul.nav.navbar-nav.navbar-right - %li= link_to t(:log_out, user: current_user), '/admin/logout' - - .container - = render 'shared/flash' - = yield - - .footer.text-right - Version - = CURRENT_COMMIT_HASH From c8faa2a817c0aed014a628c0388f69f4294dd288 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Tue, 17 Jan 2017 03:32:11 +0200 Subject: [PATCH 32/73] Add domain force delete dialog #268 --- app/assets/javascripts/admin-manifest.coffee | 2 ++ .../javascripts/admin/domains/edit/init_force_delete_dialog.js | 1 + app/views/admin/domains/_force_delete_dialog.html.erb | 3 +++ app/views/admin/domains/edit.haml | 1 + 4 files changed, 7 insertions(+) create mode 100644 app/assets/javascripts/admin/domains/edit/init_force_delete_dialog.js create mode 100644 app/views/admin/domains/_force_delete_dialog.html.erb diff --git a/app/assets/javascripts/admin-manifest.coffee b/app/assets/javascripts/admin-manifest.coffee index c386c45e6..b5a67a44e 100644 --- a/app/assets/javascripts/admin-manifest.coffee +++ b/app/assets/javascripts/admin-manifest.coffee @@ -7,7 +7,9 @@ #= require selectize #= require shared/jquery.validate.bootstrap #= require jquery-ui/datepicker +#= require jquery-ui/dialog #= require select2 #= require jquery.doubleScroll #= require shared/general #= require admin/application +#= require admin/domains/edit/init_force_delete_dialog diff --git a/app/assets/javascripts/admin/domains/edit/init_force_delete_dialog.js b/app/assets/javascripts/admin/domains/edit/init_force_delete_dialog.js new file mode 100644 index 000000000..c85c65db1 --- /dev/null +++ b/app/assets/javascripts/admin/domains/edit/init_force_delete_dialog.js @@ -0,0 +1 @@ +$('.domain-edit-force-delete-dialog').dialog(); diff --git a/app/views/admin/domains/_force_delete_dialog.html.erb b/app/views/admin/domains/_force_delete_dialog.html.erb new file mode 100644 index 000000000..68deaac26 --- /dev/null +++ b/app/views/admin/domains/_force_delete_dialog.html.erb @@ -0,0 +1,3 @@ +
+ test +
diff --git a/app/views/admin/domains/edit.haml b/app/views/admin/domains/edit.haml index 70596d00e..11fd97f02 100644 --- a/app/views/admin/domains/edit.haml +++ b/app/views/admin/domains/edit.haml @@ -11,3 +11,4 @@ = render 'shared/title', name: "#{t(:edit)}: #{@domain.name}" = render 'form' += render 'force_delete_dialog' From e365cc896a44e80574d559208df393201d6abb9e Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Tue, 17 Jan 2017 12:01:36 +0200 Subject: [PATCH 33/73] admin area: use default layout path, remove turbolinks, load js in async mode, extract menu partial #341 --- app/assets/javascripts/admin-manifest.coffee | 1 - .../javascripts/admin/application.coffee | 88 +++++++++---------- app/controllers/admin/sessions_controller.rb | 1 - app/controllers/admin_controller.rb | 1 - app/views/admin/_menu.haml | 44 ++++++++++ app/views/layouts/admin.haml | 36 ++++++++ app/views/layouts/admin/application.haml | 85 ------------------ 7 files changed, 123 insertions(+), 133 deletions(-) create mode 100644 app/views/admin/_menu.haml create mode 100644 app/views/layouts/admin.haml delete mode 100644 app/views/layouts/admin/application.haml diff --git a/app/assets/javascripts/admin-manifest.coffee b/app/assets/javascripts/admin-manifest.coffee index 51bc5f419..c386c45e6 100644 --- a/app/assets/javascripts/admin-manifest.coffee +++ b/app/assets/javascripts/admin-manifest.coffee @@ -1,6 +1,5 @@ #= require jquery #= require jquery_ujs -#= require turbolinks #= require bootstrap-sprockets #= require typeahead.bundle.min #= require admin/autocomplete diff --git a/app/assets/javascripts/admin/application.coffee b/app/assets/javascripts/admin/application.coffee index 1b3335d63..95d86c8d8 100644 --- a/app/assets/javascripts/admin/application.coffee +++ b/app/assets/javascripts/admin/application.coffee @@ -1,53 +1,51 @@ -$(document).on 'page:change', -> - $('.selectize').selectize({ - allowEmptyOption: true - }) - $('.selectize_create').selectize({ - allowEmptyOption: true, create: true - }) +$('.selectize').selectize({ + allowEmptyOption: true +}) +$('.selectize_create').selectize({ + allowEmptyOption: true, create: true +}) - $('.js-datepicker').datepicker({ - showAnim: "", - autoclose: true, - dateFormat: "dd.mm.yy", - changeMonth: true, - changeYear: true - }) +$('.js-datepicker').datepicker({ + showAnim: "", + autoclose: true, + dateFormat: "dd.mm.yy", + changeMonth: true, + changeYear: true +}) - # client side validate all forms - $('form').each -> - $(this).validate() - - $('[data-toggle="popover"]').popover() +# client side validate all forms +$('form').each -> + $(this).validate() + +$('[data-toggle="popover"]').popover() - # doublescroll - $('[data-doublescroll]').doubleScroll({ - onlyIfScroll: false, - scrollCss: - 'overflow-x': 'auto' - 'overflow-y': 'hidden' - contentCss: - 'overflow-x': 'auto' - 'overflow-y': 'hidden' - resetOnWindowResize: true - }) +# doublescroll +$('[data-doublescroll]').doubleScroll({ + onlyIfScroll: false, + scrollCss: + 'overflow-x': 'auto' + 'overflow-y': 'hidden' + contentCss: + 'overflow-x': 'auto' + 'overflow-y': 'hidden' + resetOnWindowResize: true +}) - positionSlider = -> - for scroll in document.querySelectorAll('[data-doublescroll]') - wrapper = scroll.previousSibling - if $(scroll).offset().top < $(window).scrollTop() - wrapper.style.position = 'fixed' - wrapper.style.top = '-5px' - else - wrapper.style.position = 'relative' - wrapper.style.top = '0' - return - - positionSlider() - $(window).scroll(positionSlider).resize positionSlider - #due .report-table width: auto top scrollbar appears after resize so we do fake resize action - $(window).resize() +positionSlider = -> + for scroll in document.querySelectorAll('[data-doublescroll]') + wrapper = scroll.previousSibling + if $(scroll).offset().top < $(window).scrollTop() + wrapper.style.position = 'fixed' + wrapper.style.top = '-5px' + else + wrapper.style.position = 'relative' + wrapper.style.top = '0' + return +positionSlider() +$(window).scroll(positionSlider).resize positionSlider +#due .report-table width: auto top scrollbar appears after resize so we do fake resize action +$(window).resize() diff --git a/app/controllers/admin/sessions_controller.rb b/app/controllers/admin/sessions_controller.rb index 5dc244398..d907fe1f3 100644 --- a/app/controllers/admin/sessions_controller.rb +++ b/app/controllers/admin/sessions_controller.rb @@ -1,6 +1,5 @@ class Admin::SessionsController < Devise::SessionsController skip_authorization_check only: :create - layout 'admin/application' def login @admin_user = AdminUser.new diff --git a/app/controllers/admin_controller.rb b/app/controllers/admin_controller.rb index 29b7be698..ec335ae65 100644 --- a/app/controllers/admin_controller.rb +++ b/app/controllers/admin_controller.rb @@ -1,5 +1,4 @@ class AdminController < ApplicationController - layout 'admin/application' before_action :authenticate_user! helper_method :head_title_sufix diff --git a/app/views/admin/_menu.haml b/app/views/admin/_menu.haml new file mode 100644 index 000000000..4077e58f2 --- /dev/null +++ b/app/views/admin/_menu.haml @@ -0,0 +1,44 @@ +.navbar-collapse.collapse + %ul.nav.navbar-nav + - if can? :show, Domain + %li= link_to t(:domains), admin_domains_path + - if can? :show, Contact + %li= link_to t(:contacts), admin_contacts_path + - if can? :show, Registrar + %li= link_to t(:registrars), admin_registrars_path + - if can? :show, Keyrelay + %li= link_to t(:keyrelays), admin_keyrelays_path + - if can?(:access, :settings_menu) + %li.dropdown + %a.dropdown-toggle{"data-toggle" => "dropdown", href: "#"} + = t(:settings) + %span.caret + %ul.dropdown-menu{role: "menu"} + %li.dropdown-header= t(:users) + %li= link_to t(:api_users), admin_api_users_path + %li= link_to t(:admin_users), admin_admin_users_path + %li.divider + %li.dropdown-header= t(:billing) + - if can? :view, Pricelist + %li= link_to t(:pricelists), admin_pricelists_path + %li= link_to t(:bank_statements), admin_bank_statements_path + %li= link_to t(:invoices), admin_invoices_path + %li= link_to t(:account_activities), admin_account_activities_path(created_after: 'today') + %li.divider + %li.dropdown-header= t(:archive) + %li= link_to t(:domains_history), admin_domain_versions_path + %li= link_to t(:contacts_history), admin_contact_versions_path + %li.divider + %li.dropdown-header= t(:system) + %li= link_to t(:settings), admin_settings_path + %li= link_to t(:zonefile), admin_zonefile_settings_path + %li= link_to t(:blocked_domains), admin_blocked_domains_path + %li= link_to t(:reserved_domains), admin_reserved_domains_path + %li= link_to t(:mail_templates), admin_mail_templates_path + %li= link_to t(:epp_logs), admin_epp_logs_path(created_after: 'today') + %li= link_to t(:repp_logs), admin_repp_logs_path(created_after: 'today') + %li= link_to t(:que), '/admin/que' + + - if signed_in? + %ul.nav.navbar-nav.navbar-right + %li= link_to t(:log_out, user: current_user), '/admin/logout' diff --git a/app/views/layouts/admin.haml b/app/views/layouts/admin.haml new file mode 100644 index 000000000..8e8e3230e --- /dev/null +++ b/app/views/layouts/admin.haml @@ -0,0 +1,36 @@ +!!! 5 +%html{lang: I18n.locale.to_s} + %head + %meta{charset: "utf-8"}/ + %meta{content: "width=device-width, initial-scale=1", name: "viewport"}/ + - if content_for? :head_title + = yield :head_title + - else + %title= t(:admin_head_title) + = csrf_meta_tags + = stylesheet_link_tag 'admin-manifest', media: 'all' + = favicon_link_tag 'favicon.ico' + %body{:style => env_style} + .navbar.navbar-inverse.navbar-static-top{role: "navigation"} + .container + .navbar-header + %button.navbar-toggle{"data-target" => ".navbar-collapse", "data-toggle" => "collapse", type: "button"} + %span.sr-only Toggle navigation + %span.icon-bar + %span.icon-bar + %span.icon-bar + = link_to admin_dashboard_path, class: 'navbar-brand' do + = ENV['app_name'] + - if unstable_env.present? + .text-center + %small{style: 'color: #0074B3;'}= unstable_env + + = render 'menu' + .container + = render 'shared/flash' + = yield + + .footer.text-right + Version + = CURRENT_COMMIT_HASH + = javascript_include_tag 'admin-manifest', async: true diff --git a/app/views/layouts/admin/application.haml b/app/views/layouts/admin/application.haml deleted file mode 100644 index 9937937e6..000000000 --- a/app/views/layouts/admin/application.haml +++ /dev/null @@ -1,85 +0,0 @@ -!!! 5 -%html{lang: I18n.locale.to_s} - %head - %meta{charset: "utf-8"}/ - %meta{content: "IE=edge", "http-equiv" => "X-UA-Compatible"}/ - %meta{content: "width=device-width, initial-scale=1", name: "viewport"}/ - %meta{content: "Full stack top-level domain (TLD) management.", name: "description"}/ - %meta{content: "Gitlab LTD", name: "author"}/ - - if content_for? :head_title - = yield :head_title - - else - %title= t(:admin_head_title) - = csrf_meta_tags - = stylesheet_link_tag 'admin-manifest', media: 'all', 'data-turbolinks-track' => true - = javascript_include_tag 'admin-manifest', 'data-turbolinks-track' => true - = favicon_link_tag 'favicon.ico' - %body{:style => env_style} - / Static navbar - .navbar.navbar-inverse.navbar-static-top{role: "navigation"} - .container - .navbar-header - %button.navbar-toggle{"data-target" => ".navbar-collapse", "data-toggle" => "collapse", type: "button"} - %span.sr-only Toggle navigation - %span.icon-bar - %span.icon-bar - %span.icon-bar - = link_to admin_dashboard_path, class: 'navbar-brand' do - = ENV['app_name'] - - if unstable_env.present? - .text-center - %small{style: 'color: #0074B3;'}= unstable_env - - .navbar-collapse.collapse - %ul.nav.navbar-nav - - if can? :show, Domain - %li= link_to t(:domains), admin_domains_path - - if can? :show, Contact - %li= link_to t(:contacts), admin_contacts_path - - if can? :show, Registrar - %li= link_to t(:registrars), admin_registrars_path - - if can? :show, Keyrelay - %li= link_to t(:keyrelays), admin_keyrelays_path - - if can?(:access, :settings_menu) - %li.dropdown - %a.dropdown-toggle{"data-toggle" => "dropdown", href: "#"} - = t(:settings) - %span.caret - %ul.dropdown-menu{role: "menu"} - %li.dropdown-header= t(:users) - %li= link_to t(:api_users), admin_api_users_path - %li= link_to t(:admin_users), admin_admin_users_path - %li.divider - %li.dropdown-header= t(:billing) - - if can? :view, Pricelist - %li= link_to t(:pricelists), admin_pricelists_path - %li= link_to t(:bank_statements), admin_bank_statements_path - %li= link_to t(:invoices), admin_invoices_path - %li= link_to t(:account_activities), admin_account_activities_path(created_after: 'today') - %li.divider - %li.dropdown-header= t(:archive) - %li= link_to t(:domains_history), admin_domain_versions_path - %li= link_to t(:contacts_history), admin_contact_versions_path - %li.divider - %li.dropdown-header= t(:system) - %li= link_to t(:settings), admin_settings_path - %li= link_to t(:zonefile), admin_zonefile_settings_path - %li= link_to t(:blocked_domains), admin_blocked_domains_path - %li= link_to t(:reserved_domains), admin_reserved_domains_path - %li= link_to t(:mail_templates), admin_mail_templates_path - -# %li= link_to t(:domains_history), admin_domain_versions_path - %li= link_to t(:epp_logs), admin_epp_logs_path(created_after: 'today') - %li= link_to t(:repp_logs), admin_repp_logs_path(created_after: 'today') - %li= link_to t(:que), '/admin/que' - - - if signed_in? - %ul.nav.navbar-nav.navbar-right - %li= link_to t(:log_out, user: current_user), '/admin/logout' - - .container - = render 'shared/flash' - = yield - - .footer.text-right - Version - = CURRENT_COMMIT_HASH From 62bb0edbd9b6137a4542baf4b6dfe18eebd3e10b Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Tue, 17 Jan 2017 17:39:44 +0200 Subject: [PATCH 34/73] Add devise layout #341 --- app/views/layouts/devise.haml | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 app/views/layouts/devise.haml diff --git a/app/views/layouts/devise.haml b/app/views/layouts/devise.haml new file mode 100644 index 000000000..81248b86d --- /dev/null +++ b/app/views/layouts/devise.haml @@ -0,0 +1,29 @@ +!!! 5 +%html{lang: I18n.locale.to_s} + %head + %meta{charset: "utf-8"}/ + - if content_for? :head_title + = yield :head_title + - else + %title= t(:admin_head_title) + = csrf_meta_tags + = stylesheet_link_tag 'admin-manifest', media: 'all' + = favicon_link_tag 'favicon.ico' + %body{:style => env_style} + .navbar.navbar-inverse.navbar-static-top{role: "navigation"} + .container + .navbar-header + %button.navbar-toggle{"data-target" => ".navbar-collapse", "data-toggle" => "collapse", type: "button"} + %span.sr-only Toggle navigation + %span.icon-bar + %span.icon-bar + %span.icon-bar + = link_to admin_dashboard_path, class: 'navbar-brand' do + = ENV['app_name'] + - if unstable_env.present? + .text-center + %small{style: 'color: #0074B3;'}= unstable_env + + .container + = render 'shared/flash' + = yield From 689453eebf6f9877578ce9b10a4ac0bc05b7d2fb Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Tue, 17 Jan 2017 17:41:09 +0200 Subject: [PATCH 35/73] Fix translations in admin area #341 --- app/views/admin/_menu.haml | 14 +++++++------- app/views/admin/contacts/index.haml | 8 +------- app/views/admin/domains/index.haml | 8 +------- app/views/admin/domains/versions.haml | 4 ++-- config/locales/admin/contacts.en.yml | 5 +++++ config/locales/admin/domains.en.yml | 6 ++++++ config/locales/admin/menu.en.yml | 10 ++++++++++ config/locales/en.yml | 4 ---- 8 files changed, 32 insertions(+), 27 deletions(-) create mode 100644 config/locales/admin/contacts.en.yml create mode 100644 config/locales/admin/domains.en.yml create mode 100644 config/locales/admin/menu.en.yml diff --git a/app/views/admin/_menu.haml b/app/views/admin/_menu.haml index 4077e58f2..668ba9a5c 100644 --- a/app/views/admin/_menu.haml +++ b/app/views/admin/_menu.haml @@ -14,9 +14,9 @@ = t(:settings) %span.caret %ul.dropdown-menu{role: "menu"} - %li.dropdown-header= t(:users) - %li= link_to t(:api_users), admin_api_users_path - %li= link_to t(:admin_users), admin_admin_users_path + %li.dropdown-header= t('.users') + %li= link_to t('.api_users'), admin_api_users_path + %li= link_to t('.admin_users'), admin_admin_users_path %li.divider %li.dropdown-header= t(:billing) - if can? :view, Pricelist @@ -25,9 +25,9 @@ %li= link_to t(:invoices), admin_invoices_path %li= link_to t(:account_activities), admin_account_activities_path(created_after: 'today') %li.divider - %li.dropdown-header= t(:archive) - %li= link_to t(:domains_history), admin_domain_versions_path - %li= link_to t(:contacts_history), admin_contact_versions_path + %li.dropdown-header= t('.archive') + %li= link_to t('.domain_history'), admin_domain_versions_path + %li= link_to t('.contact_history'), admin_contact_versions_path %li.divider %li.dropdown-header= t(:system) %li= link_to t(:settings), admin_settings_path @@ -37,7 +37,7 @@ %li= link_to t(:mail_templates), admin_mail_templates_path %li= link_to t(:epp_logs), admin_epp_logs_path(created_after: 'today') %li= link_to t(:repp_logs), admin_repp_logs_path(created_after: 'today') - %li= link_to t(:que), '/admin/que' + %li= link_to t('.que'), '/admin/que' - if signed_in? %ul.nav.navbar-nav.navbar-right diff --git a/app/views/admin/contacts/index.haml b/app/views/admin/contacts/index.haml index 9c015c372..07cf640ce 100644 --- a/app/views/admin/contacts/index.haml +++ b/app/views/admin/contacts/index.haml @@ -70,8 +70,7 @@   %span.glyphicon.glyphicon-search   - %button.btn.btn-default.js-reset-form - = t(:clear_fields) + = link_to(t('.reset_btn'), admin_contacts_path, class: 'btn btn-default') %hr .row .col-md-12 @@ -106,8 +105,3 @@ .col-md-6.text-right .pagination = t(:result_count, count: @contacts.total_count) - -:coffee - $(".js-reset-form").on "click", (e) -> - e.preventDefault(); - window.location = "#{admin_contacts_path}" diff --git a/app/views/admin/domains/index.haml b/app/views/admin/domains/index.haml index f901354a6..244b3dff7 100644 --- a/app/views/admin/domains/index.haml +++ b/app/views/admin/domains/index.haml @@ -47,8 +47,7 @@   %span.glyphicon.glyphicon-search   - %button.btn.btn-default.js-reset-form - = t(:clear_fields) + = link_to(t(:clear_fields), admin_domains_path, class: 'btn btn-default') %hr .row .col-md-12 @@ -80,8 +79,3 @@ .col-md-6.text-right .pagination = t(:result_count, count: @domains.total_count) - -:coffee - $(".js-reset-form").on "click", (e) -> - e.preventDefault(); - window.location = "#{admin_domains_path}" diff --git a/app/views/admin/domains/versions.haml b/app/views/admin/domains/versions.haml index 9e2cf2803..b4da9165d 100644 --- a/app/views/admin/domains/versions.haml +++ b/app/views/admin/domains/versions.haml @@ -8,11 +8,11 @@ %table.table.table-bordered.table-condensed %thead %tr - %th{class: 'col-xs-1'}= t(:timestap) + %th{class: 'col-xs-1'}= t('.time') %th{class: 'col-xs-2'}= t(:statuses) %th{class: 'col-xs-1'}= t(:period) %th{class: 'col-xs-2'}= t(:registrant) - %th{class: 'col-xs-2'}= t(:admin) + %th{class: 'col-xs-2'}= t('.admin_contact') %th{class: 'col-xs-2'}= t(:tech) %th{class: 'col-xs-2'}= t(:nameservers) %th{class: 'col-xs-2'}= t(:dnskeys) diff --git a/config/locales/admin/contacts.en.yml b/config/locales/admin/contacts.en.yml new file mode 100644 index 000000000..f38e6611f --- /dev/null +++ b/config/locales/admin/contacts.en.yml @@ -0,0 +1,5 @@ +en: + admin: + contacts: + index: + reset_btn: Reset diff --git a/config/locales/admin/domains.en.yml b/config/locales/admin/domains.en.yml new file mode 100644 index 000000000..6fc5f2f5d --- /dev/null +++ b/config/locales/admin/domains.en.yml @@ -0,0 +1,6 @@ +en: + admin: + domains: + versions: + time: Time + admin_contact: Admin contact diff --git a/config/locales/admin/menu.en.yml b/config/locales/admin/menu.en.yml new file mode 100644 index 000000000..5ca490b80 --- /dev/null +++ b/config/locales/admin/menu.en.yml @@ -0,0 +1,10 @@ +en: + admin: + menu: + users: Users + api_users: API users + admin_users: Admin users + archive: Archive + domain_history: Domain history + contact_history: Contact history + que: Que diff --git a/config/locales/en.yml b/config/locales/en.yml index 8e4d26b9b..d4f1c6602 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -408,7 +408,6 @@ en: users: 'Users' create_new_user: 'Create new user' - admin: 'Admin' user_details: 'User details' edit_user: 'Edit user' back_to_user: 'Back to user' @@ -459,11 +458,9 @@ en: ds_digest_type: 'DS digest type' zonefile_settings: 'Zonefile settings' background_jobs: Background jobs - domain_history: Domain history domains_history: Domains history admin_users: Admin users role: 'Role' - admin: 'Administrator' user: 'User' customer_service: 'Customer service' keyrelays: 'Keyrelays' @@ -850,7 +847,6 @@ en: webserver_missing_client_cert_directive: 'Webserver missing client cert directive' webserver_client_cert_directive_should_be_required: 'Webserver client cert directive should be required' tech: Tech contact - admin: Admin contact pricelists: Pricelists new_pricelist: New Pricelist valid: Valid From c18def3c12e129685d5209b8592cb338c37fcbbe Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Wed, 18 Jan 2017 08:27:49 +0200 Subject: [PATCH 36/73] Fix admin area js #341 --- app/assets/javascripts/admin-manifest.coffee | 3 ++- app/assets/javascripts/admin/combobox.js | 9 +++++++++ app/assets/javascripts/admin/datepicker.js | 3 +++ 3 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 app/assets/javascripts/admin/combobox.js create mode 100644 app/assets/javascripts/admin/datepicker.js diff --git a/app/assets/javascripts/admin-manifest.coffee b/app/assets/javascripts/admin-manifest.coffee index c386c45e6..21e44cbd5 100644 --- a/app/assets/javascripts/admin-manifest.coffee +++ b/app/assets/javascripts/admin-manifest.coffee @@ -9,5 +9,6 @@ #= require jquery-ui/datepicker #= require select2 #= require jquery.doubleScroll -#= require shared/general #= require admin/application +#= require admin/combobox +#= require admin/datepicker diff --git a/app/assets/javascripts/admin/combobox.js b/app/assets/javascripts/admin/combobox.js new file mode 100644 index 000000000..8670af2ba --- /dev/null +++ b/app/assets/javascripts/admin/combobox.js @@ -0,0 +1,9 @@ +var comboBoxFields = $('.js-combobox'); + +if (comboBoxFields.length) { + comboBoxFields.select2({ + width: "100%", + selectOnBlur: true, + dropdownAutoWidth: self === top + }); +} diff --git a/app/assets/javascripts/admin/datepicker.js b/app/assets/javascripts/admin/datepicker.js new file mode 100644 index 000000000..43029c117 --- /dev/null +++ b/app/assets/javascripts/admin/datepicker.js @@ -0,0 +1,3 @@ +$('.datepicker').datepicker({ + dateFormat: 'yy-mm-dd' +}); From 40459e8b2ed39aece7d3daae849ba3d284153980 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Wed, 18 Jan 2017 08:31:28 +0200 Subject: [PATCH 37/73] Add missing translations in admin area #341 --- app/views/admin/_menu.haml | 8 ++++---- app/views/admin/account_activities/index.haml | 8 +------- app/views/admin/admin_users/index.haml | 6 +++--- app/views/admin/admin_users/new.haml | 2 +- app/views/admin/api_users/_form.haml | 12 +++++++----- app/views/admin/api_users/index.haml | 6 +++--- app/views/admin/api_users/new.haml | 2 +- app/views/admin/blocked_domains/index.haml | 12 +++--------- app/views/admin/contact_versions/index.haml | 9 +-------- app/views/admin/contacts/edit.haml | 4 ++-- app/views/admin/contacts/partials/_domains.haml | 2 +- app/views/admin/contacts/partials/_general.haml | 4 ++-- app/views/admin/domain_versions/archive.haml | 9 +-------- app/views/admin/domains/index.haml | 2 +- app/views/admin/domains/partials/_general.haml | 6 +++--- app/views/admin/epp_logs/index.haml | 10 ++-------- app/views/admin/registrars/show.haml | 6 +++--- app/views/admin/repp_logs/index.haml | 10 ++-------- app/views/admin/reserved_domains/index.haml | 12 +++--------- config/locales/admin/account_activities.en.yml | 5 +++++ config/locales/admin/admin_users.en.yml | 8 ++++++++ config/locales/admin/api_users.en.yml | 13 +++++++++++++ config/locales/admin/blocked_domains.en.yml | 7 +++++++ config/locales/admin/contact_versions.en.yml | 5 +++++ config/locales/admin/contacts.en.yml | 12 ++++++++++++ config/locales/admin/domain_versions.en.yml | 5 +++++ config/locales/admin/domains.en.yml | 9 +++++++++ config/locales/admin/epp_logs.en.yml | 6 ++++++ config/locales/admin/menu.en.yml | 4 ++++ config/locales/admin/registrars.en.yml | 7 +++++++ config/locales/admin/repp_logs.en.yml | 6 ++++++ config/locales/admin/reserved_domains.en.yml | 7 +++++++ config/locales/en.yml | 9 --------- 33 files changed, 138 insertions(+), 95 deletions(-) create mode 100644 config/locales/admin/account_activities.en.yml create mode 100644 config/locales/admin/admin_users.en.yml create mode 100644 config/locales/admin/api_users.en.yml create mode 100644 config/locales/admin/blocked_domains.en.yml create mode 100644 config/locales/admin/contact_versions.en.yml create mode 100644 config/locales/admin/domain_versions.en.yml create mode 100644 config/locales/admin/epp_logs.en.yml create mode 100644 config/locales/admin/registrars.en.yml create mode 100644 config/locales/admin/repp_logs.en.yml create mode 100644 config/locales/admin/reserved_domains.en.yml diff --git a/app/views/admin/_menu.haml b/app/views/admin/_menu.haml index 668ba9a5c..8b63b2c25 100644 --- a/app/views/admin/_menu.haml +++ b/app/views/admin/_menu.haml @@ -32,11 +32,11 @@ %li.dropdown-header= t(:system) %li= link_to t(:settings), admin_settings_path %li= link_to t(:zonefile), admin_zonefile_settings_path - %li= link_to t(:blocked_domains), admin_blocked_domains_path - %li= link_to t(:reserved_domains), admin_reserved_domains_path + %li= link_to t('.blocked_domains'), admin_blocked_domains_path + %li= link_to t('.reserved_domains'), admin_reserved_domains_path %li= link_to t(:mail_templates), admin_mail_templates_path - %li= link_to t(:epp_logs), admin_epp_logs_path(created_after: 'today') - %li= link_to t(:repp_logs), admin_repp_logs_path(created_after: 'today') + %li= link_to t('.epp_log'), admin_epp_logs_path(created_after: 'today') + %li= link_to t('.repp_log'), admin_repp_logs_path(created_after: 'today') %li= link_to t('.que'), '/admin/que' - if signed_in? diff --git a/app/views/admin/account_activities/index.haml b/app/views/admin/account_activities/index.haml index e8653a237..444bbe443 100644 --- a/app/views/admin/account_activities/index.haml +++ b/app/views/admin/account_activities/index.haml @@ -38,8 +38,7 @@   %span.glyphicon.glyphicon-search   - %button.btn.btn-default.js-reset-form - = t(:clear_fields) + = link_to(t('.reset_btn'), admin_account_activities_path, class: 'btn btn-default') .row .col-md-3 .col-md-3 @@ -87,8 +86,3 @@ .row .col-md-12 = paginate @account_activities - -:coffee - $(".js-reset-form").on "click", (e) -> - e.preventDefault(); - window.location = "#{admin_account_activities_path}" diff --git a/app/views/admin/admin_users/index.haml b/app/views/admin/admin_users/index.haml index e2af62884..1fbc73609 100644 --- a/app/views/admin/admin_users/index.haml +++ b/app/views/admin/admin_users/index.haml @@ -1,6 +1,6 @@ - content_for :actions do - = link_to(t(:create_new_user), new_admin_admin_user_path, class: 'btn btn-primary') -= render 'shared/title', name: t(:admin_users) + = link_to(t('.new_btn'), new_admin_admin_user_path, class: 'btn btn-primary') += render 'shared/title', name: t('.title') .row .col-md-12 @@ -23,7 +23,7 @@ %td= x.email %td= x.identity_code - if x.roles - %td= t(x.roles.first) + %td= x.roles.first - else %td .row diff --git a/app/views/admin/admin_users/new.haml b/app/views/admin/admin_users/new.haml index aa8c23994..f8282f44f 100644 --- a/app/views/admin/admin_users/new.haml +++ b/app/views/admin/admin_users/new.haml @@ -1,3 +1,3 @@ -= render 'shared/title', name: t(:create_new_user) += render 'shared/title', name: t('.title') = render 'form' diff --git a/app/views/admin/api_users/_form.haml b/app/views/admin/api_users/_form.haml index 633f511ef..36f597d6a 100644 --- a/app/views/admin/api_users/_form.haml +++ b/app/views/admin/api_users/_form.haml @@ -46,12 +46,12 @@ = f.label :role, class: 'required' .col-md-7 = select_tag 'api_user[roles][]', - options_for_select(ApiUser::ROLES.map {|x| [t(x), x] }, @api_user.roles.try(:first)), + options_for_select(ApiUser::ROLES.map {|x| [x, x] }, @api_user.roles.try(:first)), class: 'form-control selectize' .checkbox %label{for: 'api_user_active'} = f.check_box(:active) - = t(:active) + = t('.active') %hr @@ -59,6 +59,8 @@ .col-md-8.text-right = button_tag(t(:save), class: 'btn btn-primary') -:coffee - Autocomplete.bindAdminRegistrarSearch() - $("#api_user_password").removeAttr('required') +:javascript + window.addEventListener('load', function() { + Autocomplete.bindAdminRegistrarSearch(); + $("#api_user_password").removeAttr('required'); + }); diff --git a/app/views/admin/api_users/index.haml b/app/views/admin/api_users/index.haml index 954335100..4815607a7 100644 --- a/app/views/admin/api_users/index.haml +++ b/app/views/admin/api_users/index.haml @@ -1,6 +1,6 @@ - content_for :actions do - = link_to(t(:create_new_api_user), new_admin_api_user_path, class: 'btn btn-primary') -= render 'shared/title', name: t(:api_users) + = link_to(t('.new_btn'), new_admin_api_user_path, class: 'btn btn-primary') += render 'shared/title', name: t('.title') .row .col-md-12 @@ -13,7 +13,7 @@ %th{class: 'col-xs-2'} = sort_link(@q, 'registrar_name', t(:registrar_name)) %th{class: 'col-xs-2'} - = sort_link(@q, 'active', t(:active)) + = sort_link(@q, 'active', t('.active')) %tbody - @api_users.each do |x| %tr diff --git a/app/views/admin/api_users/new.haml b/app/views/admin/api_users/new.haml index a3de5e184..f8282f44f 100644 --- a/app/views/admin/api_users/new.haml +++ b/app/views/admin/api_users/new.haml @@ -1,3 +1,3 @@ -= render 'shared/title', name: t(:create_new_api_user) += render 'shared/title', name: t('.title') = render 'form' diff --git a/app/views/admin/blocked_domains/index.haml b/app/views/admin/blocked_domains/index.haml index 5f6ac69d0..2b46ac7fa 100644 --- a/app/views/admin/blocked_domains/index.haml +++ b/app/views/admin/blocked_domains/index.haml @@ -1,6 +1,6 @@ - content_for :actions do - = link_to(t(:new), new_admin_blocked_domain_path, class: 'btn btn-primary') -= render 'shared/title', name: t(:blocked_domains) + = link_to(t('.new_btn'), new_admin_blocked_domain_path, class: 'btn btn-primary') += render 'shared/title', name: t('.title') .row .col-md-12 @@ -28,8 +28,7 @@   %span.glyphicon.glyphicon-search   - %button.btn.btn-default.js-reset-form - = t(:clear_fields) + = link_to(t('.reset_btn'), admin_blocked_domains_path, class: 'btn btn-default') %hr .row .col-md-12 @@ -61,8 +60,3 @@ .col-md-6.text-right .pagination = t(:result_count, count: @domains.total_count) - -:coffee - $(".js-reset-form").on "click", (e) -> - e.preventDefault(); - window.location = "#{admin_blocked_domains_path}" diff --git a/app/views/admin/contact_versions/index.haml b/app/views/admin/contact_versions/index.haml index 85975d5be..31d8f84e3 100644 --- a/app/views/admin/contact_versions/index.haml +++ b/app/views/admin/contact_versions/index.haml @@ -32,8 +32,7 @@   %span.glyphicon.glyphicon-search   - %button.btn.btn-default.js-reset-form - = t(:clear_fields) + = link_to(t('.reset_btn'), admin_contact_versions_path, class: 'btn btn-default') %hr @@ -78,9 +77,3 @@ .col-md-6.text-right .pagination = t(:result_count, count: @versions.total_count) - - -:coffee - $(".js-reset-form").on "click", (e) -> - e.preventDefault(); - window.location = "#{admin_contact_versions_path}" diff --git a/app/views/admin/contacts/edit.haml b/app/views/admin/contacts/edit.haml index 7fb7b6e4e..1b38a4dc4 100644 --- a/app/views/admin/contacts/edit.haml +++ b/app/views/admin/contacts/edit.haml @@ -1,6 +1,6 @@ - content_for :actions do - = link_to(t(:add_new_status), '#', class: 'btn btn-primary js-add-status') - = link_to(t(:back_to_contact), [:admin, @contact], class: 'btn btn-default') + = link_to(t('.new_status_btn'), '#', class: 'btn btn-primary js-add-status') + = link_to(t('.back_btn'), [:admin, @contact], class: 'btn btn-default') = render 'shared/title', name: "#{t(:edit)}: #{@contact.name}" = render 'form', contact: @contact diff --git a/app/views/admin/contacts/partials/_domains.haml b/app/views/admin/contacts/partials/_domains.haml index 7736e62ac..9d7e3edf5 100644 --- a/app/views/admin/contacts/partials/_domains.haml +++ b/app/views/admin/contacts/partials/_domains.haml @@ -18,7 +18,7 @@ %th{class: 'col-xs-3'}=custom_sort_link t(:domain_name), :name %th{class: 'col-xs-3'}=custom_sort_link t(:registrar_name), :registrar_name %th{class: 'col-xs-3'}=custom_sort_link t(:valid_to), :valid_to - %th{class: 'col-xs-3'}= t(:roles) + %th{class: 'col-xs-3'}= t('.roles') %tbody - domains.each do |x| %tr diff --git a/app/views/admin/contacts/partials/_general.haml b/app/views/admin/contacts/partials/_general.haml index 73565ad64..db1eaf412 100644 --- a/app/views/admin/contacts/partials/_general.haml +++ b/app/views/admin/contacts/partials/_general.haml @@ -27,13 +27,13 @@ %br - %dt= t(:created) + %dt= t('.created') %dd = l(@contact.created_at, format: :short) by = creator_link(@contact) - %dt= t(:updated) + %dt= t('.updated') %dd = l(@contact.updated_at, format: :short) by diff --git a/app/views/admin/domain_versions/archive.haml b/app/views/admin/domain_versions/archive.haml index b85e74b81..b519272d5 100644 --- a/app/views/admin/domain_versions/archive.haml +++ b/app/views/admin/domain_versions/archive.haml @@ -32,8 +32,7 @@   %span.glyphicon.glyphicon-search   - %button.btn.btn-default.js-reset-form - = t(:clear_fields) + = link_to(t('.reset_btn'), admin_domain_versions_path, class: 'btn btn-default') %hr @@ -84,9 +83,3 @@ .col-md-6.text-right .pagination = t(:result_count, count: @versions.total_count) - - -:coffee - $(".js-reset-form").on "click", (e) -> - e.preventDefault(); - window.location = "#{admin_domain_versions_path}" diff --git a/app/views/admin/domains/index.haml b/app/views/admin/domains/index.haml index 244b3dff7..7c3be9032 100644 --- a/app/views/admin/domains/index.haml +++ b/app/views/admin/domains/index.haml @@ -47,7 +47,7 @@   %span.glyphicon.glyphicon-search   - = link_to(t(:clear_fields), admin_domains_path, class: 'btn btn-default') + = link_to(t('.reset_btn'), admin_domains_path, class: 'btn btn-default') %hr .row .col-md-12 diff --git a/app/views/admin/domains/partials/_general.haml b/app/views/admin/domains/partials/_general.haml index 0e458abd8..d64654a8f 100644 --- a/app/views/admin/domains/partials/_general.haml +++ b/app/views/admin/domains/partials/_general.haml @@ -22,11 +22,11 @@ %dt= t(:valid_to) %dd= l(@domain.valid_to) - %dt= t(:outzone_at) + %dt= t('.outzone_time') %dd= l(@domain.outzone_at) - %dt= t(:delete_at) + %dt= t('.delete_time') %dd= l(@domain.delete_at) - %dt= t(:force_delete_at) + %dt= t('.force_delete_time') %dd= l(@domain.force_delete_at) diff --git a/app/views/admin/epp_logs/index.haml b/app/views/admin/epp_logs/index.haml index 922a61fcb..689cc2acd 100644 --- a/app/views/admin/epp_logs/index.haml +++ b/app/views/admin/epp_logs/index.haml @@ -1,4 +1,4 @@ -= render 'shared/title', name: t(:epp_logs) += render 'shared/title', name: t('.title') .row .col-md-12 @@ -41,8 +41,7 @@   %span.glyphicon.glyphicon-search   - %button.btn.btn-default.js-reset-form - = t(:clear_fields) + = link_to(t('.reset_btn'), admin_epp_logs_path, class: 'btn btn-default') .row .col-md-12 %hr @@ -70,8 +69,3 @@ .row .col-md-12 = paginate @epp_logs - -:coffee - $(".js-reset-form").on "click", (e) -> - e.preventDefault(); - window.location = "#{admin_epp_logs_path}" diff --git a/app/views/admin/registrars/show.haml b/app/views/admin/registrars/show.haml index c1c8ebf6c..4ea74029e 100644 --- a/app/views/admin/registrars/show.haml +++ b/app/views/admin/registrars/show.haml @@ -68,16 +68,16 @@ #epp-users.panel.panel-default .panel-heading.clearfix .pull-left - = t(:api_users) + = t('.api_users') .pull-right - = link_to(t(:create_new_api_user), new_admin_registrar_api_user_path(@registrar), class: 'btn btn-default btn-xs') + = link_to(t('.new_api_use_btn'), new_admin_registrar_api_user_path(@registrar), class: 'btn btn-default btn-xs') .table-responsive %table.table.table-hover.table-bordered.table-condensed %thead %tr %th{class: 'col-xs-6'}= t(:username) - %th{class: 'col-xs-6'}= t(:active) + %th{class: 'col-xs-6'}= t('.active') %tbody - @registrar.api_users.each do |x| %tr diff --git a/app/views/admin/repp_logs/index.haml b/app/views/admin/repp_logs/index.haml index c49eb889a..482a3fdf6 100644 --- a/app/views/admin/repp_logs/index.haml +++ b/app/views/admin/repp_logs/index.haml @@ -1,4 +1,4 @@ -= render 'shared/title', name: t(:repp_logs) += render 'shared/title', name: t('.title') .row .col-md-12 @@ -39,8 +39,7 @@   %span.glyphicon.glyphicon-search   - %button.btn.btn-default.js-reset-form - = t(:clear_fields) + = link_to(t('.reset_btn'), admin_repp_logs_path, class: 'btn btn-default') %hr .row .col-md-12 @@ -67,8 +66,3 @@ .row .col-md-12 = paginate @repp_logs - -:coffee - $(".js-reset-form").on "click", (e) -> - e.preventDefault(); - window.location = "#{admin_repp_logs_path}" diff --git a/app/views/admin/reserved_domains/index.haml b/app/views/admin/reserved_domains/index.haml index 06825b624..64e722bf6 100644 --- a/app/views/admin/reserved_domains/index.haml +++ b/app/views/admin/reserved_domains/index.haml @@ -1,6 +1,6 @@ - content_for :actions do - = link_to(t(:new), new_admin_reserved_domain_path, class: 'btn btn-primary') -= render 'shared/title', name: t(:reserved_domains) + = link_to(t('.new_btn'), new_admin_reserved_domain_path, class: 'btn btn-primary') += render 'shared/title', name: t('.title') .row .col-md-12 @@ -28,8 +28,7 @@   %span.glyphicon.glyphicon-search   - %button.btn.btn-default.js-reset-form - = t(:clear_fields) + = link_to(t('.reset_btn'), admin_reserved_domains_path, class: 'btn btn-default') %hr .row .col-md-12 @@ -65,8 +64,3 @@ .col-md-6.text-right .pagination = t(:result_count, count: @domains.total_count) - -:coffee - $(".js-reset-form").on "click", (e) -> - e.preventDefault(); - window.location = "#{admin_reserved_domains_path}" diff --git a/config/locales/admin/account_activities.en.yml b/config/locales/admin/account_activities.en.yml new file mode 100644 index 000000000..2e91e7a8f --- /dev/null +++ b/config/locales/admin/account_activities.en.yml @@ -0,0 +1,5 @@ +en: + admin: + account_activities: + index: + reset_btn: Reset diff --git a/config/locales/admin/admin_users.en.yml b/config/locales/admin/admin_users.en.yml new file mode 100644 index 000000000..604e19b4c --- /dev/null +++ b/config/locales/admin/admin_users.en.yml @@ -0,0 +1,8 @@ +en: + admin: + admin_users: + index: + title: Admin users + new_btn: New admin user + new: + title: New admin user diff --git a/config/locales/admin/api_users.en.yml b/config/locales/admin/api_users.en.yml new file mode 100644 index 000000000..fb6e0dfce --- /dev/null +++ b/config/locales/admin/api_users.en.yml @@ -0,0 +1,13 @@ +en: + admin: + api_users: + index: + new_btn: New API user + title: API users + active: Active + + new: + title: New API user + + form: + active: Active diff --git a/config/locales/admin/blocked_domains.en.yml b/config/locales/admin/blocked_domains.en.yml new file mode 100644 index 000000000..3dac6fa5d --- /dev/null +++ b/config/locales/admin/blocked_domains.en.yml @@ -0,0 +1,7 @@ +en: + admin: + blocked_domains: + index: + title: Blocked domains + new_btn: New blocked domain + reset_btn: Reset diff --git a/config/locales/admin/contact_versions.en.yml b/config/locales/admin/contact_versions.en.yml new file mode 100644 index 000000000..89566ab9b --- /dev/null +++ b/config/locales/admin/contact_versions.en.yml @@ -0,0 +1,5 @@ +en: + admin: + contact_versions: + index: + reset_btn: Reset diff --git a/config/locales/admin/contacts.en.yml b/config/locales/admin/contacts.en.yml index f38e6611f..0ae48821f 100644 --- a/config/locales/admin/contacts.en.yml +++ b/config/locales/admin/contacts.en.yml @@ -3,3 +3,15 @@ en: contacts: index: reset_btn: Reset + + edit: + new_status_btn: Add new status + back_btn: Back to contact + + partials: + general: + created: Created + updated: Updated + + domains: + roles: Roles diff --git a/config/locales/admin/domain_versions.en.yml b/config/locales/admin/domain_versions.en.yml new file mode 100644 index 000000000..a1f4f5a46 --- /dev/null +++ b/config/locales/admin/domain_versions.en.yml @@ -0,0 +1,5 @@ +en: + admin: + domain_versions: + archive: + reset_btn: Reset diff --git a/config/locales/admin/domains.en.yml b/config/locales/admin/domains.en.yml index 6fc5f2f5d..fcb0da578 100644 --- a/config/locales/admin/domains.en.yml +++ b/config/locales/admin/domains.en.yml @@ -1,6 +1,15 @@ en: admin: domains: + index: + reset_btn: Reset + versions: time: Time admin_contact: Admin contact + + partials: + general: + outzone_time: Outzone time + delete_time: Delete time + force_delete_time: Force delete time diff --git a/config/locales/admin/epp_logs.en.yml b/config/locales/admin/epp_logs.en.yml new file mode 100644 index 000000000..e30173673 --- /dev/null +++ b/config/locales/admin/epp_logs.en.yml @@ -0,0 +1,6 @@ +en: + admin: + epp_logs: + index: + title: EPP log + reset_btn: Reset diff --git a/config/locales/admin/menu.en.yml b/config/locales/admin/menu.en.yml index 5ca490b80..2eaab9ed7 100644 --- a/config/locales/admin/menu.en.yml +++ b/config/locales/admin/menu.en.yml @@ -7,4 +7,8 @@ en: archive: Archive domain_history: Domain history contact_history: Contact history + blocked_domains: Blocked domains + reserved_domains: Reserved domains + epp_log: EPP log + repp_log: REPP log que: Que diff --git a/config/locales/admin/registrars.en.yml b/config/locales/admin/registrars.en.yml new file mode 100644 index 000000000..20da1a5ff --- /dev/null +++ b/config/locales/admin/registrars.en.yml @@ -0,0 +1,7 @@ +en: + admin: + registrars: + show: + new_api_use_btn: New API user + active: Active + api_users: API users diff --git a/config/locales/admin/repp_logs.en.yml b/config/locales/admin/repp_logs.en.yml new file mode 100644 index 000000000..559ae234a --- /dev/null +++ b/config/locales/admin/repp_logs.en.yml @@ -0,0 +1,6 @@ +en: + admin: + repp_logs: + index: + title: REPP log + reset_btn: Reset diff --git a/config/locales/admin/reserved_domains.en.yml b/config/locales/admin/reserved_domains.en.yml new file mode 100644 index 000000000..7648776a8 --- /dev/null +++ b/config/locales/admin/reserved_domains.en.yml @@ -0,0 +1,7 @@ +en: + admin: + reserved_domains: + index: + title: Reserved domains + new_btn: New reserved domain + reset_btn: Reset diff --git a/config/locales/en.yml b/config/locales/en.yml index d4f1c6602..9748112ca 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -407,12 +407,10 @@ en: failed_to_delete_registrar: 'Failed to delete registrar' users: 'Users' - create_new_user: 'Create new user' user_details: 'User details' edit_user: 'Edit user' back_to_user: 'Back to user' - create_new_api_user: 'Create new API user' certificate_signing_req: 'Certificate signing request' csr: 'CSR' crt: 'CRT' @@ -459,7 +457,6 @@ en: zonefile_settings: 'Zonefile settings' background_jobs: Background jobs domains_history: Domains history - admin_users: Admin users role: 'Role' user: 'User' customer_service: 'Customer service' @@ -481,8 +478,6 @@ en: action_failed_due_to_server_error: 'Action failed due to server error' pending_transfer_was_not_found: 'Pending transfer was not found' transfer_can_be_rejected_only_by_current_registrar: 'Transfer can be rejected only by current registrar' - epp_logs: 'EPP logs' - epp_log: 'EPP log' request_command: 'Request command' request_object: 'Request object' api_user: 'API user' @@ -494,8 +489,6 @@ en: request_method: 'Request method' response_code: 'Response code' request_params: 'Request params' - repp_log: 'REPP log' - repp_logs: 'REPP logs' could_not_determine_object_type_check_xml_format_and_namespaces: 'Could not determine object type. Check XML format and namespaces.' unknown_expiry_relative_pattern: 'Expiry relative must be compatible to ISO 8601' unknown_expiry_absolute_pattern: 'Expiry absolute must be compatible to ISO 8601' @@ -880,7 +873,6 @@ en: registry_state: 'State / Province' registry_zip: 'Postcode' registry_country_code: 'Country' - blocked_domains: 'Blocked domains' billing_failure_credit_balance_low: 'Billing failure - credit balance low' create: 'Create' activity_type: 'Activity type' @@ -888,7 +880,6 @@ en: receipt_date_until: 'Receipt date until' add_credit: 'Add credit' export_csv: 'Export CSV' - reserved_domains: 'Reserved domains' invalid_yaml: 'Invalid YAML' reserved_pw: 'Reserved pw' no_transfers_found: 'No transfers found' From 2c9a8b555b1ad7d3867b9abe1e75575cc2ac3c7c Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Wed, 18 Jan 2017 08:35:38 +0200 Subject: [PATCH 38/73] Convert coffeescript to javascript in admin area #341 --- app/views/admin/admin_users/_form.haml | 9 ++++--- app/views/admin/domains/versions.haml | 17 +++++++----- app/views/admin/shared/form/_statuses.haml | 30 +++++++++++++--------- 3 files changed, 34 insertions(+), 22 deletions(-) diff --git a/app/views/admin/admin_users/_form.haml b/app/views/admin/admin_users/_form.haml index ba7203e1e..0904ea99f 100644 --- a/app/views/admin/admin_users/_form.haml +++ b/app/views/admin/admin_users/_form.haml @@ -59,7 +59,8 @@ .col-md-8.text-right = button_tag(t(:save), class: 'btn btn-warning') -:coffee - $("#admin_user_password").removeAttr('required') - $("#admin_user_password_confirmation").removeAttr('required') - +:javascript + window.addEventListener('load', function() { + $("#admin_user_password").removeAttr('required'); + $("#admin_user_password_confirmation").removeAttr('required'); + }); diff --git a/app/views/admin/domains/versions.haml b/app/views/admin/domains/versions.haml index b4da9165d..408ef9a67 100644 --- a/app/views/admin/domains/versions.haml +++ b/app/views/admin/domains/versions.haml @@ -36,10 +36,15 @@ = render 'admin/domains/partials/version', domain: version.reify, version: version.previous -:coffee - $(document).on 'click', '.js-pending, .js-event', (e) -> - e.preventDefault() +:javascript + window.addEventListener('load', function() { + $(document).on('click', '.js-pending, .js-event', function(e) { + return e.preventDefault(); + }); - $(document).on 'mousedown', '.js-pending, .js-event', (e) -> - target = $(e.target) - target.parents('tr').nextUntil('tr.small' ,'tr.' + this.className).toggle() + $(document).on('mousedown', '.js-pending, .js-event', function(e) { + var target; + target = $(e.target); + return target.parents('tr').nextUntil('tr.small', 'tr.' + this.className).toggle(); + }); + }); diff --git a/app/views/admin/shared/form/_statuses.haml b/app/views/admin/shared/form/_statuses.haml index 27be8d032..44009b518 100644 --- a/app/views/admin/shared/form/_statuses.haml +++ b/app/views/admin/shared/form/_statuses.haml @@ -31,16 +31,22 @@ - value = f.object.new_record? ? '' : f.object.status_notes[s] = text_field_tag "#{model}[status_notes_array][]", value, class: 'form-control' -:coffee - $("#js-statuses").nestedAttributes - bindAddTo: $(".js-add-status") - afterAdd: (el) -> - if el.find('.js-disabled-value') - el.find('.js-disabled-value').remove() - el.find('.js-select').show() - el.find('.hide-when-new').hide() - el.find('.js-destroy-status').show() +:javascript + window.addEventListener('load', function() { + $("#js-statuses").nestedAttributes({ + bindAddTo: $(".js-add-status"), + afterAdd: function(el) { + if (el.find('.js-disabled-value')) { + el.find('.js-disabled-value').remove(); + el.find('.js-select').show(); + el.find('.hide-when-new').hide(); + return el.find('.js-destroy-status').show(); + } + } + }); - $(document).on 'click', '.js-destroy-status', (e) -> - e.preventDefault() - $(this).parents('.panel').remove() + $(document).on('click', '.js-destroy-status', function(e) { + e.preventDefault(); + return $(this).parents('.panel').remove(); + }); + }); From 165e25ec230c0cb5e63a44a3b4e0be7ef3fbdb3b Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Wed, 18 Jan 2017 08:35:56 +0200 Subject: [PATCH 39/73] Fix datepicker class name #341 --- app/views/admin/pricelists/_form.haml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/admin/pricelists/_form.haml b/app/views/admin/pricelists/_form.haml index a751825ca..6829e792a 100644 --- a/app/views/admin/pricelists/_form.haml +++ b/app/views/admin/pricelists/_form.haml @@ -21,10 +21,10 @@ = f.label :valid_from, t(:valid) .input-group = f.text_field(:valid_from, value: f.object.valid_from.try(:to_s, :dshort), - class: 'form-control js-datepicker') + class: 'form-control datepicker') %span.input-group-addon - = f.text_field(:valid_to, value: f.object.valid_to.try(:to_s, :dshort), - class: 'form-control js-datepicker') + class: 'form-control datepicker') %hr .row From 3cc218597eb8f3163cf3145e05117b9f04d741c1 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Wed, 18 Jan 2017 08:54:30 +0200 Subject: [PATCH 40/73] Revert "Remove turbolinks, load js in async mode" This reverts commit fec7f82a96492ee615cf6b1402d21ffd3ff215a5. --- app/assets/javascripts/admin-manifest.coffee | 1 + .../javascripts/admin/application.coffee | 87 ++++++++++--------- app/views/layouts/admin.haml | 2 +- app/views/layouts/admin/application.haml | 85 ++++++++++++++++++ 4 files changed, 131 insertions(+), 44 deletions(-) create mode 100644 app/views/layouts/admin/application.haml diff --git a/app/assets/javascripts/admin-manifest.coffee b/app/assets/javascripts/admin-manifest.coffee index b5a67a44e..02cffe443 100644 --- a/app/assets/javascripts/admin-manifest.coffee +++ b/app/assets/javascripts/admin-manifest.coffee @@ -1,5 +1,6 @@ #= require jquery #= require jquery_ujs +#= require turbolinks #= require bootstrap-sprockets #= require typeahead.bundle.min #= require admin/autocomplete diff --git a/app/assets/javascripts/admin/application.coffee b/app/assets/javascripts/admin/application.coffee index 6a6c30bec..1b3335d63 100644 --- a/app/assets/javascripts/admin/application.coffee +++ b/app/assets/javascripts/admin/application.coffee @@ -1,52 +1,53 @@ -$('.selectize').selectize({ - allowEmptyOption: true -}) -$('.selectize_create').selectize({ - allowEmptyOption: true, create: true -}) +$(document).on 'page:change', -> + $('.selectize').selectize({ + allowEmptyOption: true + }) + $('.selectize_create').selectize({ + allowEmptyOption: true, create: true + }) -$('.js-datepicker').datepicker({ - showAnim: "", - autoclose: true, - dateFormat: "dd.mm.yy", - changeMonth: true, - changeYear: true -}) + $('.js-datepicker').datepicker({ + showAnim: "", + autoclose: true, + dateFormat: "dd.mm.yy", + changeMonth: true, + changeYear: true + }) -# client side validate all forms -$('form').each -> - $(this).validate() - -$('[data-toggle="popover"]').popover() + # client side validate all forms + $('form').each -> + $(this).validate() + + $('[data-toggle="popover"]').popover() -# doublescroll -$('[data-doublescroll]').doubleScroll({ - onlyIfScroll: false, - scrollCss: - 'overflow-x': 'auto' - 'overflow-y': 'hidden' - contentCss: - 'overflow-x': 'auto' - 'overflow-y': 'hidden' - resetOnWindowResize: true -}) + # doublescroll + $('[data-doublescroll]').doubleScroll({ + onlyIfScroll: false, + scrollCss: + 'overflow-x': 'auto' + 'overflow-y': 'hidden' + contentCss: + 'overflow-x': 'auto' + 'overflow-y': 'hidden' + resetOnWindowResize: true + }) -positionSlider = -> - for scroll in document.querySelectorAll('[data-doublescroll]') - wrapper = scroll.previousSibling - if $(scroll).offset().top < $(window).scrollTop() - wrapper.style.position = 'fixed' - wrapper.style.top = '-5px' - else - wrapper.style.position = 'relative' - wrapper.style.top = '0' - return + positionSlider = -> + for scroll in document.querySelectorAll('[data-doublescroll]') + wrapper = scroll.previousSibling + if $(scroll).offset().top < $(window).scrollTop() + wrapper.style.position = 'fixed' + wrapper.style.top = '-5px' + else + wrapper.style.position = 'relative' + wrapper.style.top = '0' + return -positionSlider() -$(window).scroll(positionSlider).resize positionSlider -#due .report-table width: auto top scrollbar appears after resize so we do fake resize action -$(window).resize(); + positionSlider() + $(window).scroll(positionSlider).resize positionSlider + #due .report-table width: auto top scrollbar appears after resize so we do fake resize action + $(window).resize() diff --git a/app/views/layouts/admin.haml b/app/views/layouts/admin.haml index 8e8e3230e..70ee14cfc 100644 --- a/app/views/layouts/admin.haml +++ b/app/views/layouts/admin.haml @@ -8,7 +8,7 @@ - else %title= t(:admin_head_title) = csrf_meta_tags - = stylesheet_link_tag 'admin-manifest', media: 'all' + = stylesheet_link_tag 'admin-manifest', media: 'all', 'data-turbolinks-track' => true = favicon_link_tag 'favicon.ico' %body{:style => env_style} .navbar.navbar-inverse.navbar-static-top{role: "navigation"} diff --git a/app/views/layouts/admin/application.haml b/app/views/layouts/admin/application.haml new file mode 100644 index 000000000..9937937e6 --- /dev/null +++ b/app/views/layouts/admin/application.haml @@ -0,0 +1,85 @@ +!!! 5 +%html{lang: I18n.locale.to_s} + %head + %meta{charset: "utf-8"}/ + %meta{content: "IE=edge", "http-equiv" => "X-UA-Compatible"}/ + %meta{content: "width=device-width, initial-scale=1", name: "viewport"}/ + %meta{content: "Full stack top-level domain (TLD) management.", name: "description"}/ + %meta{content: "Gitlab LTD", name: "author"}/ + - if content_for? :head_title + = yield :head_title + - else + %title= t(:admin_head_title) + = csrf_meta_tags + = stylesheet_link_tag 'admin-manifest', media: 'all', 'data-turbolinks-track' => true + = javascript_include_tag 'admin-manifest', 'data-turbolinks-track' => true + = favicon_link_tag 'favicon.ico' + %body{:style => env_style} + / Static navbar + .navbar.navbar-inverse.navbar-static-top{role: "navigation"} + .container + .navbar-header + %button.navbar-toggle{"data-target" => ".navbar-collapse", "data-toggle" => "collapse", type: "button"} + %span.sr-only Toggle navigation + %span.icon-bar + %span.icon-bar + %span.icon-bar + = link_to admin_dashboard_path, class: 'navbar-brand' do + = ENV['app_name'] + - if unstable_env.present? + .text-center + %small{style: 'color: #0074B3;'}= unstable_env + + .navbar-collapse.collapse + %ul.nav.navbar-nav + - if can? :show, Domain + %li= link_to t(:domains), admin_domains_path + - if can? :show, Contact + %li= link_to t(:contacts), admin_contacts_path + - if can? :show, Registrar + %li= link_to t(:registrars), admin_registrars_path + - if can? :show, Keyrelay + %li= link_to t(:keyrelays), admin_keyrelays_path + - if can?(:access, :settings_menu) + %li.dropdown + %a.dropdown-toggle{"data-toggle" => "dropdown", href: "#"} + = t(:settings) + %span.caret + %ul.dropdown-menu{role: "menu"} + %li.dropdown-header= t(:users) + %li= link_to t(:api_users), admin_api_users_path + %li= link_to t(:admin_users), admin_admin_users_path + %li.divider + %li.dropdown-header= t(:billing) + - if can? :view, Pricelist + %li= link_to t(:pricelists), admin_pricelists_path + %li= link_to t(:bank_statements), admin_bank_statements_path + %li= link_to t(:invoices), admin_invoices_path + %li= link_to t(:account_activities), admin_account_activities_path(created_after: 'today') + %li.divider + %li.dropdown-header= t(:archive) + %li= link_to t(:domains_history), admin_domain_versions_path + %li= link_to t(:contacts_history), admin_contact_versions_path + %li.divider + %li.dropdown-header= t(:system) + %li= link_to t(:settings), admin_settings_path + %li= link_to t(:zonefile), admin_zonefile_settings_path + %li= link_to t(:blocked_domains), admin_blocked_domains_path + %li= link_to t(:reserved_domains), admin_reserved_domains_path + %li= link_to t(:mail_templates), admin_mail_templates_path + -# %li= link_to t(:domains_history), admin_domain_versions_path + %li= link_to t(:epp_logs), admin_epp_logs_path(created_after: 'today') + %li= link_to t(:repp_logs), admin_repp_logs_path(created_after: 'today') + %li= link_to t(:que), '/admin/que' + + - if signed_in? + %ul.nav.navbar-nav.navbar-right + %li= link_to t(:log_out, user: current_user), '/admin/logout' + + .container + = render 'shared/flash' + = yield + + .footer.text-right + Version + = CURRENT_COMMIT_HASH From 0820effe5d5a8b8eb7911fc516f2fdfffb63fec1 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Wed, 18 Jan 2017 08:55:40 +0200 Subject: [PATCH 41/73] Revert "Use default layout path in admin area" This reverts commit 92c6279e462ab88d8ebb30a1712afe463d1fe694. --- app/controllers/admin/sessions_controller.rb | 1 + app/controllers/admin_controller.rb | 1 + app/views/admin/_menu.haml | 44 -------------------- app/views/layouts/admin.haml | 36 ---------------- app/views/layouts/devise.haml | 29 ------------- 5 files changed, 2 insertions(+), 109 deletions(-) delete mode 100644 app/views/admin/_menu.haml delete mode 100644 app/views/layouts/admin.haml delete mode 100644 app/views/layouts/devise.haml diff --git a/app/controllers/admin/sessions_controller.rb b/app/controllers/admin/sessions_controller.rb index d907fe1f3..5dc244398 100644 --- a/app/controllers/admin/sessions_controller.rb +++ b/app/controllers/admin/sessions_controller.rb @@ -1,5 +1,6 @@ class Admin::SessionsController < Devise::SessionsController skip_authorization_check only: :create + layout 'admin/application' def login @admin_user = AdminUser.new diff --git a/app/controllers/admin_controller.rb b/app/controllers/admin_controller.rb index ec335ae65..29b7be698 100644 --- a/app/controllers/admin_controller.rb +++ b/app/controllers/admin_controller.rb @@ -1,4 +1,5 @@ class AdminController < ApplicationController + layout 'admin/application' before_action :authenticate_user! helper_method :head_title_sufix diff --git a/app/views/admin/_menu.haml b/app/views/admin/_menu.haml deleted file mode 100644 index 4077e58f2..000000000 --- a/app/views/admin/_menu.haml +++ /dev/null @@ -1,44 +0,0 @@ -.navbar-collapse.collapse - %ul.nav.navbar-nav - - if can? :show, Domain - %li= link_to t(:domains), admin_domains_path - - if can? :show, Contact - %li= link_to t(:contacts), admin_contacts_path - - if can? :show, Registrar - %li= link_to t(:registrars), admin_registrars_path - - if can? :show, Keyrelay - %li= link_to t(:keyrelays), admin_keyrelays_path - - if can?(:access, :settings_menu) - %li.dropdown - %a.dropdown-toggle{"data-toggle" => "dropdown", href: "#"} - = t(:settings) - %span.caret - %ul.dropdown-menu{role: "menu"} - %li.dropdown-header= t(:users) - %li= link_to t(:api_users), admin_api_users_path - %li= link_to t(:admin_users), admin_admin_users_path - %li.divider - %li.dropdown-header= t(:billing) - - if can? :view, Pricelist - %li= link_to t(:pricelists), admin_pricelists_path - %li= link_to t(:bank_statements), admin_bank_statements_path - %li= link_to t(:invoices), admin_invoices_path - %li= link_to t(:account_activities), admin_account_activities_path(created_after: 'today') - %li.divider - %li.dropdown-header= t(:archive) - %li= link_to t(:domains_history), admin_domain_versions_path - %li= link_to t(:contacts_history), admin_contact_versions_path - %li.divider - %li.dropdown-header= t(:system) - %li= link_to t(:settings), admin_settings_path - %li= link_to t(:zonefile), admin_zonefile_settings_path - %li= link_to t(:blocked_domains), admin_blocked_domains_path - %li= link_to t(:reserved_domains), admin_reserved_domains_path - %li= link_to t(:mail_templates), admin_mail_templates_path - %li= link_to t(:epp_logs), admin_epp_logs_path(created_after: 'today') - %li= link_to t(:repp_logs), admin_repp_logs_path(created_after: 'today') - %li= link_to t(:que), '/admin/que' - - - if signed_in? - %ul.nav.navbar-nav.navbar-right - %li= link_to t(:log_out, user: current_user), '/admin/logout' diff --git a/app/views/layouts/admin.haml b/app/views/layouts/admin.haml deleted file mode 100644 index 70ee14cfc..000000000 --- a/app/views/layouts/admin.haml +++ /dev/null @@ -1,36 +0,0 @@ -!!! 5 -%html{lang: I18n.locale.to_s} - %head - %meta{charset: "utf-8"}/ - %meta{content: "width=device-width, initial-scale=1", name: "viewport"}/ - - if content_for? :head_title - = yield :head_title - - else - %title= t(:admin_head_title) - = csrf_meta_tags - = stylesheet_link_tag 'admin-manifest', media: 'all', 'data-turbolinks-track' => true - = favicon_link_tag 'favicon.ico' - %body{:style => env_style} - .navbar.navbar-inverse.navbar-static-top{role: "navigation"} - .container - .navbar-header - %button.navbar-toggle{"data-target" => ".navbar-collapse", "data-toggle" => "collapse", type: "button"} - %span.sr-only Toggle navigation - %span.icon-bar - %span.icon-bar - %span.icon-bar - = link_to admin_dashboard_path, class: 'navbar-brand' do - = ENV['app_name'] - - if unstable_env.present? - .text-center - %small{style: 'color: #0074B3;'}= unstable_env - - = render 'menu' - .container - = render 'shared/flash' - = yield - - .footer.text-right - Version - = CURRENT_COMMIT_HASH - = javascript_include_tag 'admin-manifest', async: true diff --git a/app/views/layouts/devise.haml b/app/views/layouts/devise.haml deleted file mode 100644 index 14534e374..000000000 --- a/app/views/layouts/devise.haml +++ /dev/null @@ -1,29 +0,0 @@ -!!! 5 -%html{lang: I18n.locale.to_s} - %head - %meta{charset: "utf-8"}/ - - if content_for? :head_title - = yield :head_title - - else - %title= t(:admin_head_title) - = csrf_meta_tags - = stylesheet_link_tag 'admin-manifest', media: 'all', 'data-turbolinks-track' => true - = favicon_link_tag 'favicon.ico' - %body{:style => env_style} - .navbar.navbar-inverse.navbar-static-top{role: "navigation"} - .container - .navbar-header - %button.navbar-toggle{"data-target" => ".navbar-collapse", "data-toggle" => "collapse", type: "button"} - %span.sr-only Toggle navigation - %span.icon-bar - %span.icon-bar - %span.icon-bar - = link_to admin_dashboard_path, class: 'navbar-brand' do - = ENV['app_name'] - - if unstable_env.present? - .text-center - %small{style: 'color: #0074B3;'}= unstable_env - - .container - = render 'shared/flash' - = yield From 0383b219ab228caf0ceed5f63bbe87586b1735f4 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Wed, 18 Jan 2017 09:16:55 +0200 Subject: [PATCH 42/73] Fix application js in admin area #341 --- .../javascripts/admin/application.coffee | 82 ++++++++----------- 1 file changed, 36 insertions(+), 46 deletions(-) diff --git a/app/assets/javascripts/admin/application.coffee b/app/assets/javascripts/admin/application.coffee index 95d86c8d8..abafbe901 100644 --- a/app/assets/javascripts/admin/application.coffee +++ b/app/assets/javascripts/admin/application.coffee @@ -1,51 +1,41 @@ -$('.selectize').selectize({ - allowEmptyOption: true -}) -$('.selectize_create').selectize({ - allowEmptyOption: true, create: true -}) +$(window).load -> + $('.selectize').selectize({ + allowEmptyOption: true + }) + $('.selectize_create').selectize({ + allowEmptyOption: true, create: true + }) -$('.js-datepicker').datepicker({ - showAnim: "", - autoclose: true, - dateFormat: "dd.mm.yy", - changeMonth: true, - changeYear: true -}) + # client side validate all forms + $('form').each -> + $(this).validate() -# client side validate all forms -$('form').each -> - $(this).validate() + $('[data-toggle="popover"]').popover() -$('[data-toggle="popover"]').popover() + # doublescroll + $('[data-doublescroll]').doubleScroll({ + onlyIfScroll: false, + scrollCss: + 'overflow-x': 'auto' + 'overflow-y': 'hidden' + contentCss: + 'overflow-x': 'auto' + 'overflow-y': 'hidden' + resetOnWindowResize: true + }) + positionSlider = -> + for scroll in document.querySelectorAll('[data-doublescroll]') + wrapper = scroll.previousSibling + if $(scroll).offset().top < $(window).scrollTop() + wrapper.style.position = 'fixed' + wrapper.style.top = '-5px' + else + wrapper.style.position = 'relative' + wrapper.style.top = '0' + return - - -# doublescroll -$('[data-doublescroll]').doubleScroll({ - onlyIfScroll: false, - scrollCss: - 'overflow-x': 'auto' - 'overflow-y': 'hidden' - contentCss: - 'overflow-x': 'auto' - 'overflow-y': 'hidden' - resetOnWindowResize: true -}) - -positionSlider = -> - for scroll in document.querySelectorAll('[data-doublescroll]') - wrapper = scroll.previousSibling - if $(scroll).offset().top < $(window).scrollTop() - wrapper.style.position = 'fixed' - wrapper.style.top = '-5px' - else - wrapper.style.position = 'relative' - wrapper.style.top = '0' - return - -positionSlider() -$(window).scroll(positionSlider).resize positionSlider -#due .report-table width: auto top scrollbar appears after resize so we do fake resize action -$(window).resize() + positionSlider() + $(window).scroll(positionSlider).resize positionSlider + #due .report-table width: auto top scrollbar appears after resize so we do fake resize action + $(window).resize() From 0042fc2d5a91cb1f52ef3a0e6fc93aa1c479cfe7 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Wed, 18 Jan 2017 11:43:57 +0200 Subject: [PATCH 43/73] Add missing translation #268 --- config/locales/admin/domains.en.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/config/locales/admin/domains.en.yml b/config/locales/admin/domains.en.yml index fcb0da578..ce37f7ea6 100644 --- a/config/locales/admin/domains.en.yml +++ b/config/locales/admin/domains.en.yml @@ -4,6 +4,9 @@ en: index: reset_btn: Reset + edit: + add_new_status_btn: Add new status + versions: time: Time admin_contact: Admin contact From e08afe0983a8894ddeaa9cbef4f3609b58b6632a Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Wed, 18 Jan 2017 11:46:12 +0200 Subject: [PATCH 44/73] Return contact's id code if it is private entity #268 --- app/models/contact.rb | 5 +++++ spec/models/contact_spec.rb | 14 ++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/app/models/contact.rb b/app/models/contact.rb index 99139e898..995fdc2a9 100644 --- a/app/models/contact.rb +++ b/app/models/contact.rb @@ -589,4 +589,9 @@ class Contact < ActiveRecord::Base return if priv? ident end + + def id_code + return unless priv? + ident + end end diff --git a/spec/models/contact_spec.rb b/spec/models/contact_spec.rb index df4d8cfd3..4d49bc1e8 100644 --- a/spec/models/contact_spec.rb +++ b/spec/models/contact_spec.rb @@ -481,4 +481,18 @@ RSpec.describe Contact, db: false do specify { expect(reg_no).to be_nil } end end + + describe '#id_code' do + context 'when contact is private entity' do + let(:contact) { FactoryGirl.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) { FactoryGirl.build_stubbed(:contact_legal_entity, ident: '1234') } + + specify { expect(contact.id_code).to be_nil } + end + end end From df54100710de90af2c7768abc6dbbbb2acfc9c73 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Wed, 18 Jan 2017 11:48:01 +0200 Subject: [PATCH 45/73] Add missing translation #268 --- app/views/admin/domains/edit.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/admin/domains/edit.haml b/app/views/admin/domains/edit.haml index 11fd97f02..a3a7f364c 100644 --- a/app/views/admin/domains/edit.haml +++ b/app/views/admin/domains/edit.haml @@ -1,5 +1,5 @@ - content_for :actions do - = link_to(t(:add_new_status), '#', class: 'btn btn-primary js-add-status') + = link_to(t('.add_new_status_btn'), '#', class: 'btn btn-primary js-add-status') - if @domain.force_deletable? = link_to(t(:set_force_delete), set_force_delete_admin_domain_path(@domain), method: :post, data: { confirm: t(:are_you_sure) }, class: 'btn btn-warning') From 117399af5ec5ebfaa9e1224b8d31d9f85855717a Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Wed, 18 Jan 2017 11:52:56 +0200 Subject: [PATCH 46/73] Add admin sign in spec helper #268 --- spec/support/features/session_helpers.rb | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/spec/support/features/session_helpers.rb b/spec/support/features/session_helpers.rb index a23609891..63e8bd072 100644 --- a/spec/support/features/session_helpers.rb +++ b/spec/support/features/session_helpers.rb @@ -1,5 +1,14 @@ module Features module SessionHelpers + def sign_in_to_admin_area(user: FactoryGirl.create(:admin_user)) + visit admin_login_url + + fill_in 'admin_user[username]', with: user.username + fill_in 'admin_user[password]', with: user.password + + click_button 'Log in' + end + def sign_in_to_registrar_area(user: FactoryGirl.create(:api_user)) visit registrar_login_url From 664451c4170eb41a7aa56baaf1ef07a3f6a1948b Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Wed, 18 Jan 2017 11:54:07 +0200 Subject: [PATCH 47/73] Add force domain delete "death" templates #268 --- .../forced/death.html.erb | 43 ++++++++++++++++++ .../forced/death.text.erb | 44 +++++++++++++++++++ 2 files changed, 87 insertions(+) create mode 100644 app/views/mailers/domain_delete_mailer/forced/death.html.erb create mode 100644 app/views/mailers/domain_delete_mailer/forced/death.text.erb diff --git a/app/views/mailers/domain_delete_mailer/forced/death.html.erb b/app/views/mailers/domain_delete_mailer/forced/death.html.erb new file mode 100644 index 000000000..36ef3693d --- /dev/null +++ b/app/views/mailers/domain_delete_mailer/forced/death.html.erb @@ -0,0 +1,43 @@ +

Lugupeetud domeeni <%= @domain.name %> kontaktisik
+.ee domeeniregistrisse on domeeni <%= @domain.name %> kohta kantud järgmised andmed:

+ +

Registreerija nimi: <%= @registrant.name %>
+Isikukood: <%= @registrant.id_code %>

+ +

Eesti Interneti Sihtasutusele (EIS) on saanud teatavaks, et füüsiline isik isikukoodiga <%= @registrant.id_code %> on surnud ja sellest on möödunud vähemalt 6 kuud. + +Domeenireeglite punktist 6.6 tulenevalt on domeeni suhtes õigust omaval registreerijal võimalus esitada domeeni <%= @domain.name %> registripidajale [Registrars.name] domeeni üleandmise taotlus Domeenireeglite p 5.3.6.2 kohaselt. Taotlusele tuleb lisada pärimisõiguse tõend, mis asendavad Domeenireeglite punktis 5.3.6.3 sätestatud üleandva registreerija nõusolekut. Vastav dokumentatsioon tuleb esitada Registripidajale <%= @redemption_grace_period %> päeva jooksul. + +Kuna käesoleval hetkel domeenil registreerijat pole, on EIS algatanud <%= l(@force_delete_set_date, format: :date) %> vastavalt Domeenireeglite (http://www.internet.ee/domeenid/) punktile 6.6 domeeni <%= @domain.name %> suhtes <%= @redemption_grace_period %> päeva pikkuse kustutusmenetluse. Kustutamise käigus jääb domeen internetis kättesaadavaks ja selle aja jooksul on võimalik teostada domeeni üleandmine. + +Kui üleandmine ei ole <%= @redemption_grace_period %> päeva jooksul toimunud, kustub domeen <%= @domain.name %> 24 tunni jooksul <%= @domain.force_delete_date %> juhuslikult valitud ajahetkel. Soovi korral on võimalik domeen pärast selle kustumist registrist “kes ees, see mees” põhimõttel uuesti registreerida. + +Lisaküsimuste korral võtke palun ühendust oma registripidajaga:

+ +<%= render 'mailers/shared/registrar/registrar.et.html', registrar: @registrar %> + + + +

Dear contact of <%= @domain.name %> domain
+The following details for domain name <%= @domain.name %> have been entered into the Estonian Internet Foundation's (EIS) domain registry:

+ +

Registrant's name: <%= @registrant.name %>
+Identification code: <%= @registrant.id_code %>

+ +

EIS has learned that the natural person <%= @registrant.name %> with identification code <%= @registrant.id_code %> has been deceased and 6 months have passed from death. + +According to paragraph 6.6 of the Domain Regulation, the registrant holding a right to the domain name <%= @domain.name %> can submit a domain name transfer application to the registrar [Registrars.name] in accordance with paragraph 5.3.6.2 of the Domain Regulation. The application must be submitted together with succession evidence certifying the acquisition of the domain that will replace the consent of the surrendering registrant as laid down in paragraph 5.3.6.3 of the Domain Regulation. The relevant documents should be submitted to the registrar within <%= @redemption_grace_period %> day(s). + +As a deceased natural person is not the registrant of a domain, the EIS started the deletion process of <%= @domain.name %> domain on <%= l(@force_delete_set_date, format: :date) %> according to the Domain Regulation (http://www.internet.ee/en/domains/), using the <%= @redemption_grace_period %>-day delete procedure. The domain will remain available on the Internet during the delete procedure and within this time can be transferred to new registrant. + +If the transfer has not been made in <%= @redemption_grace_period %> day(s), the domain <%= @domain.name %> will be deleted at a randomly chosen moment within 24 hours on <%= @domain.force_delete_date %>. After deletion it is possible to reregister the domain on a "first come, first served" basis. + +Should you have additional questions, please contact your registrar:

+ +<%= render 'mailers/shared/registrar/registrar.en.html', registrar: @registrar %> + +

Lugupidamisega,
+Best Regards,
+

+Eesti Interneti Sihtasutus
+Estonian Internet Foundation

diff --git a/app/views/mailers/domain_delete_mailer/forced/death.text.erb b/app/views/mailers/domain_delete_mailer/forced/death.text.erb new file mode 100644 index 000000000..96393d5f3 --- /dev/null +++ b/app/views/mailers/domain_delete_mailer/forced/death.text.erb @@ -0,0 +1,44 @@ +Lugupeetud domeeni <%= @domain.name %> kontaktisik +.ee domeeniregistrisse on domeeni <%= @domain.name %> kohta kantud järgmised andmed: + +Registreerija nimi: <%= @registrant.name %> +Isikukood: <%= @registrant.id_code %> + +Eesti Interneti Sihtasutusele (EIS) on saanud teatavaks, et füüsiline isik isikukoodiga <%= @registrant.id_code %> on surnud ja sellest on möödunud vähemalt 6 kuud. + +Domeenireeglite punktist 6.6 tulenevalt on domeeni suhtes õigust omaval registreerijal võimalus esitada domeeni <%= @domain.name %> registripidajale [Registrars.name] domeeni üleandmise taotlus Domeenireeglite p 5.3.6.2 kohaselt. Taotlusele tuleb lisada pärimisõiguse tõend, mis asendavad Domeenireeglite punktis 5.3.6.3 sätestatud üleandva registreerija nõusolekut. Vastav dokumentatsioon tuleb esitada Registripidajale <%= @redemption_grace_period %> päeva jooksul. + +Kuna käesoleval hetkel domeenil registreerijat pole, on EIS algatanud <%= l(@force_delete_set_date, format: :date) %> vastavalt Domeenireeglite (http://www.internet.ee/domeenid/) punktile 6.6 domeeni <%= @domain.name %> suhtes <%= @redemption_grace_period %> päeva pikkuse kustutusmenetluse. Kustutamise käigus jääb domeen internetis kättesaadavaks ja selle aja jooksul on võimalik teostada domeeni üleandmine. + +Kui üleandmine ei ole <%= @redemption_grace_period %> päeva jooksul toimunud, kustub domeen <%= @domain.name %> 24 tunni jooksul <%= @domain.force_delete_date %> juhuslikult valitud ajahetkel. Soovi korral on võimalik domeen pärast selle kustumist registrist “kes ees, see mees” põhimõttel uuesti registreerida. + +Lisaküsimuste korral võtke palun ühendust oma registripidajaga: + +<%= render 'mailers/shared/registrar/registrar.et.text', registrar: @registrar %> + + + +Dear contact of <%= @domain.name %> domain + +The following details for domain name <%= @domain.name %> have been entered into the Estonian Internet Foundation's (EIS) domain registry: + +Registrant's name: <%= @registrant.name %> +Identification code: <%= @registrant.id_code %> + +EIS has learned that the natural person <%= @registrant.name %> with identification code <%= @registrant.id_code %> has been deceased and 6 months have passed from death. + +According to paragraph 6.6 of the Domain Regulation, the registrant holding a right to the domain name <%= @domain.name %> can submit a domain name transfer application to the registrar [Registrars.name] in accordance with paragraph 5.3.6.2 of the Domain Regulation. The application must be submitted together with succession evidence certifying the acquisition of the domain that will replace the consent of the surrendering registrant as laid down in paragraph 5.3.6.3 of the Domain Regulation. The relevant documents should be submitted to the registrar within <%= @redemption_grace_period %> day(s). + +As a deceased natural person is not the registrant of a domain, the EIS started the deletion process of <%= @domain.name %> domain on <%= l(@force_delete_set_date, format: :date) %> according to the Domain Regulation (http://www.internet.ee/en/domains/), using the <%= @redemption_grace_period %>-day delete procedure. The domain will remain available on the Internet during the delete procedure and within this time can be transferred to new registrant. + +If the transfer has not been made in <%= @redemption_grace_period %> day(s), the domain <%= @domain.name %> will be deleted at a randomly chosen moment within 24 hours on <%= @domain.force_delete_date %>. After deletion it is possible to reregister the domain on a "first come, first served" basis. + +Should you have additional questions, please contact your registrar: + +<%= render 'mailers/shared/registrar/registrar.en.text', registrar: @registrar %> + +Lugupidamisega, +Best Regards, + +Eesti Interneti Sihtasutus +Estonian Internet Foundation From 869dbd04acac1d5098900978a445612d4070bbc2 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Wed, 18 Jan 2017 19:02:16 +0200 Subject: [PATCH 48/73] Remove unneeded translation #341 --- config/locales/en.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/config/locales/en.yml b/config/locales/en.yml index 9748112ca..f75324218 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -280,7 +280,6 @@ en: system: 'System' settings: 'Settings' domains: 'Domains' - api_users: 'API users' registrars: 'Registrars' valid_to: 'Valid to' name: 'Name' From 3014a4f3ad342f19b2e7ffbc60b9ae04a8950599 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Thu, 19 Jan 2017 11:59:39 +0200 Subject: [PATCH 49/73] Add missing translations in admin area #341 --- app/views/admin/admin_users/show.haml | 2 +- app/views/admin/api_users/show.haml | 4 ++-- config/locales/admin/api_users.en.yml | 4 ++++ 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/app/views/admin/admin_users/show.haml b/app/views/admin/admin_users/show.haml index c7ae5b0df..e51eb5ff9 100644 --- a/app/views/admin/admin_users/show.haml +++ b/app/views/admin/admin_users/show.haml @@ -26,6 +26,6 @@ %dt= t(:role) - if @admin_user.roles - %dd= t(@admin_user.roles.first) + %dd= @admin_user.roles.first - else %dd diff --git a/app/views/admin/api_users/show.haml b/app/views/admin/api_users/show.haml index b410d784d..00e562c6d 100644 --- a/app/views/admin/api_users/show.haml +++ b/app/views/admin/api_users/show.haml @@ -29,7 +29,7 @@ %dt= t(:role) %dd= @api_user.roles.join(', ') - %dt= t(:active) + %dt= t('.active') %dd= @api_user.active .row .col-md-12 @@ -47,7 +47,7 @@ %table.table.table-hover.table-bordered.table-condensed %thead %tr - %th{class: 'col-xs-10'}= t(:subject) + %th{class: 'col-xs-10'}= t('.subject') %th{class: 'col-xs-2'}= t(:status) %tbody - @api_user.certificates.each do |x| diff --git a/config/locales/admin/api_users.en.yml b/config/locales/admin/api_users.en.yml index fb6e0dfce..89a31f081 100644 --- a/config/locales/admin/api_users.en.yml +++ b/config/locales/admin/api_users.en.yml @@ -6,6 +6,10 @@ en: title: API users active: Active + show: + active: Active + subject: Subject + new: title: New API user From 11b65280ed3c861f27a5b46ce12373e6bd8d3c7e Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Thu, 19 Jan 2017 13:47:01 +0200 Subject: [PATCH 50/73] Add jquery-ui dialog css #268 --- app/assets/stylesheets/admin-manifest.sass | 1 + 1 file changed, 1 insertion(+) diff --git a/app/assets/stylesheets/admin-manifest.sass b/app/assets/stylesheets/admin-manifest.sass index b69267519..a36126241 100644 --- a/app/assets/stylesheets/admin-manifest.sass +++ b/app/assets/stylesheets/admin-manifest.sass @@ -1,6 +1,7 @@ //= require 'shared/general-manifest' //= require 'admin/admin-bootstrap' //= require 'jquery-ui/datepicker' +//= require 'jquery-ui/dialog' //= require 'select2' //= require 'select2-bootstrap' @import shared/fonts From df20dc814855e70639566a4462fc5675c53e3e4a Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Thu, 19 Jan 2017 13:48:02 +0200 Subject: [PATCH 51/73] Remove progress bar css from admin area #268 --- app/assets/stylesheets/admin-manifest.sass | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/assets/stylesheets/admin-manifest.sass b/app/assets/stylesheets/admin-manifest.sass index a36126241..aeec40d95 100644 --- a/app/assets/stylesheets/admin-manifest.sass +++ b/app/assets/stylesheets/admin-manifest.sass @@ -6,8 +6,6 @@ //= require 'select2-bootstrap' @import shared/fonts @import shared/general -@import nprogress -@import nprogress-bootstrap @import typeaheadjs @import selectize @import selectize.bootstrap3 From 00a6b51383c492c7e93d82335a8d2f19658c7e25 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Thu, 19 Jan 2017 13:57:21 +0200 Subject: [PATCH 52/73] Require all js files in admin area automatically #268 --- app/assets/javascripts/admin-manifest.coffee | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app/assets/javascripts/admin-manifest.coffee b/app/assets/javascripts/admin-manifest.coffee index 5bcf88338..ee2a829c9 100644 --- a/app/assets/javascripts/admin-manifest.coffee +++ b/app/assets/javascripts/admin-manifest.coffee @@ -11,6 +11,4 @@ #= require select2 #= require jquery.doubleScroll #= require admin/application -#= require admin/combobox -#= require admin/datepicker -#= require admin/domains/edit/init_force_delete_dialog +#= require_tree ./admin From 7bcc6f693f55f72d18e78b2f23a47cb6987d0bcd Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Thu, 19 Jan 2017 17:55:25 +0200 Subject: [PATCH 53/73] Add project namespace to admin js #268 --- app/assets/javascripts/admin-manifest.coffee | 1 + app/assets/javascripts/admin/app.js | 1 + 2 files changed, 2 insertions(+) create mode 100644 app/assets/javascripts/admin/app.js diff --git a/app/assets/javascripts/admin-manifest.coffee b/app/assets/javascripts/admin-manifest.coffee index ee2a829c9..a435ca7af 100644 --- a/app/assets/javascripts/admin-manifest.coffee +++ b/app/assets/javascripts/admin-manifest.coffee @@ -11,4 +11,5 @@ #= require select2 #= require jquery.doubleScroll #= require admin/application +#= require admin/app #= require_tree ./admin diff --git a/app/assets/javascripts/admin/app.js b/app/assets/javascripts/admin/app.js new file mode 100644 index 000000000..c091ff36d --- /dev/null +++ b/app/assets/javascripts/admin/app.js @@ -0,0 +1 @@ +var RegistryAdmin = {}; From d91d304e529fc942fc5cd9cfc1f4f8e71698a690 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Thu, 19 Jan 2017 18:10:04 +0200 Subject: [PATCH 54/73] Converr admin/domains#edit template from haml to html #268 --- app/views/admin/domains/edit.haml | 14 -------------- app/views/admin/domains/edit.html.erb | 15 +++++++++++++++ 2 files changed, 15 insertions(+), 14 deletions(-) delete mode 100644 app/views/admin/domains/edit.haml create mode 100644 app/views/admin/domains/edit.html.erb diff --git a/app/views/admin/domains/edit.haml b/app/views/admin/domains/edit.haml deleted file mode 100644 index a3a7f364c..000000000 --- a/app/views/admin/domains/edit.haml +++ /dev/null @@ -1,14 +0,0 @@ -- content_for :actions do - = link_to(t('.add_new_status_btn'), '#', class: 'btn btn-primary js-add-status') - - if @domain.force_deletable? - = link_to(t(:set_force_delete), set_force_delete_admin_domain_path(@domain), - method: :post, data: { confirm: t(:are_you_sure) }, class: 'btn btn-warning') - - else - = link_to(t(:unset_force_delete), unset_force_delete_admin_domain_path(@domain), - method: :post, data: { confirm: t(:are_you_sure) }, class: 'btn btn-warning') - = link_to(t(:back_to_domain), [:admin, @domain], class: 'btn btn-default') - -= render 'shared/title', name: "#{t(:edit)}: #{@domain.name}" - -= render 'form' -= render 'force_delete_dialog' diff --git a/app/views/admin/domains/edit.html.erb b/app/views/admin/domains/edit.html.erb new file mode 100644 index 000000000..e1e9f639d --- /dev/null +++ b/app/views/admin/domains/edit.html.erb @@ -0,0 +1,15 @@ +<% content_for :actions do %> + <%= link_to t('.add_new_status_btn'), '#', class: 'btn btn-primary js-add-status' %> + + <% if @domain.force_deletable? %> + <%= link_to(t('.force_delete_btn'), force_delete_admin_domain_path(@domain), method: :post, data: { confirm: t(:are_you_sure) }, class: 'btn btn-warning') %> + <% else %> + <%= link_to(t('.cancel_force_delete_btn'), cancel_force_delete_admin_domain_path(@domain), method: :post, data: { confirm: t(:are_you_sure) }, class: 'btn btn-warning') %> + <% end %> + + <%= link_to t(:back_to_domain), [:admin, @domain], class: 'btn btn-default' %> +<% end %> + +<%= render 'shared/title', name: "#{t(:edit)}: #{@domain.name}" %> +<%= render 'form' %> +<%= render 'force_delete_dialog' %> From 8c4cfe957430fa8dd7bc96683ad50fd01766fe06 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Thu, 19 Jan 2017 18:13:01 +0200 Subject: [PATCH 55/73] Reformat admin/domains#edit template #268 --- app/views/admin/domains/edit.html.erb | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/app/views/admin/domains/edit.html.erb b/app/views/admin/domains/edit.html.erb index e1e9f639d..809285e7e 100644 --- a/app/views/admin/domains/edit.html.erb +++ b/app/views/admin/domains/edit.html.erb @@ -1,13 +1,15 @@ <% content_for :actions do %> - <%= link_to t('.add_new_status_btn'), '#', class: 'btn btn-primary js-add-status' %> + <%= link_to t('.add_new_status_btn'), '#', class: 'btn btn-primary js-add-status' %> - <% if @domain.force_deletable? %> - <%= link_to(t('.force_delete_btn'), force_delete_admin_domain_path(@domain), method: :post, data: { confirm: t(:are_you_sure) }, class: 'btn btn-warning') %> - <% else %> - <%= link_to(t('.cancel_force_delete_btn'), cancel_force_delete_admin_domain_path(@domain), method: :post, data: { confirm: t(:are_you_sure) }, class: 'btn btn-warning') %> - <% end %> + <% if @domain.force_deletable? %> + <%= link_to(t('.force_delete_btn'), force_delete_admin_domain_path(@domain), + method: :post, data: { confirm: t(:are_you_sure) }, class: 'btn btn-warning') %> + <% else %> + <%= link_to(t('.cancel_force_delete_btn'), cancel_force_delete_admin_domain_path(@domain), + method: :post, data: { confirm: t(:are_you_sure) }, class: 'btn btn-warning') %> + <% end %> - <%= link_to t(:back_to_domain), [:admin, @domain], class: 'btn btn-default' %> + <%= link_to t(:back_to_domain), [:admin, @domain], class: 'btn btn-default' %> <% end %> <%= render 'shared/title', name: "#{t(:edit)}: #{@domain.name}" %> From a852984bfe17a0f87ef876a5b66568d4f3dc4a3a Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Thu, 19 Jan 2017 19:06:00 +0200 Subject: [PATCH 56/73] Require all css files in admin area automatically #268 --- app/assets/stylesheets/admin-manifest.sass | 1 + 1 file changed, 1 insertion(+) diff --git a/app/assets/stylesheets/admin-manifest.sass b/app/assets/stylesheets/admin-manifest.sass index aeec40d95..96207846c 100644 --- a/app/assets/stylesheets/admin-manifest.sass +++ b/app/assets/stylesheets/admin-manifest.sass @@ -11,3 +11,4 @@ @import selectize.bootstrap3 // @import bootstrap-datepicker3 @import admin/admin +//= require ./admin From e405cb80ae498b1d952fb002e29e2b9ef90b745b Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Thu, 19 Jan 2017 19:06:34 +0200 Subject: [PATCH 57/73] Do not require jquery-ui dialog css in admin area #268 --- app/assets/stylesheets/admin-manifest.sass | 1 - 1 file changed, 1 deletion(-) diff --git a/app/assets/stylesheets/admin-manifest.sass b/app/assets/stylesheets/admin-manifest.sass index 96207846c..3939e1460 100644 --- a/app/assets/stylesheets/admin-manifest.sass +++ b/app/assets/stylesheets/admin-manifest.sass @@ -1,7 +1,6 @@ //= require 'shared/general-manifest' //= require 'admin/admin-bootstrap' //= require 'jquery-ui/datepicker' -//= require 'jquery-ui/dialog' //= require 'select2' //= require 'select2-bootstrap' @import shared/fonts From d222e6c7811189625968878496cfdeed881db6d5 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Thu, 19 Jan 2017 19:06:52 +0200 Subject: [PATCH 58/73] Do not require jquery-ui dialog js in admin area #268 --- app/assets/javascripts/admin-manifest.coffee | 1 - 1 file changed, 1 deletion(-) diff --git a/app/assets/javascripts/admin-manifest.coffee b/app/assets/javascripts/admin-manifest.coffee index a435ca7af..7e7220b4c 100644 --- a/app/assets/javascripts/admin-manifest.coffee +++ b/app/assets/javascripts/admin-manifest.coffee @@ -7,7 +7,6 @@ #= require selectize #= require shared/jquery.validate.bootstrap #= require jquery-ui/datepicker -#= require jquery-ui/dialog #= require select2 #= require jquery.doubleScroll #= require admin/application From 612e282c49a3dd371cd007e318f9150b608da584 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Fri, 20 Jan 2017 01:03:55 +0200 Subject: [PATCH 59/73] Add bootstrap-dialog-fix to admin area #268 --- app/assets/stylesheets/admin-manifest.sass | 3 ++- app/assets/stylesheets/admin/bootstrap-dialog-fix.css | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 app/assets/stylesheets/admin/bootstrap-dialog-fix.css diff --git a/app/assets/stylesheets/admin-manifest.sass b/app/assets/stylesheets/admin-manifest.sass index 3939e1460..0b7e9d8f7 100644 --- a/app/assets/stylesheets/admin-manifest.sass +++ b/app/assets/stylesheets/admin-manifest.sass @@ -10,4 +10,5 @@ @import selectize.bootstrap3 // @import bootstrap-datepicker3 @import admin/admin -//= require ./admin +@import admin/bootstrap-dialog-fix + diff --git a/app/assets/stylesheets/admin/bootstrap-dialog-fix.css b/app/assets/stylesheets/admin/bootstrap-dialog-fix.css new file mode 100644 index 000000000..741aea79e --- /dev/null +++ b/app/assets/stylesheets/admin/bootstrap-dialog-fix.css @@ -0,0 +1,7 @@ +.modal-open { + overflow: visible; +} + +.modal-open, .modal-open .navbar-fixed-top, .modal-open .navbar-fixed-bottom { + padding-right: 0px !important; +} From 5ed86d084bd4fa473d5ac5609c7941a9a0875885 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Sat, 21 Jan 2017 18:21:37 +0200 Subject: [PATCH 60/73] Remove unused template #268 --- app/views/registrar/shared/_flash_messages.haml | 4 ---- 1 file changed, 4 deletions(-) delete mode 100644 app/views/registrar/shared/_flash_messages.haml diff --git a/app/views/registrar/shared/_flash_messages.haml b/app/views/registrar/shared/_flash_messages.haml deleted file mode 100644 index b1d850a0c..000000000 --- a/app/views/registrar/shared/_flash_messages.haml +++ /dev/null @@ -1,4 +0,0 @@ -- display = (flash.empty?) ? 'none' : 'block' -#flash{style: "display: #{display};"} - - type = (flash[:notice]) ? 'bg-success' : 'bg-danger' - .alert{class: type}= flash[:notice] || flash[:alert] From 95e3ac5d51c780dc209da235e14d6f1120dda922 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Sat, 21 Jan 2017 18:21:58 +0200 Subject: [PATCH 61/73] Remove unneeded js #268 --- .../javascripts/admin/domains/edit/init_force_delete_dialog.js | 1 - 1 file changed, 1 deletion(-) delete mode 100644 app/assets/javascripts/admin/domains/edit/init_force_delete_dialog.js diff --git a/app/assets/javascripts/admin/domains/edit/init_force_delete_dialog.js b/app/assets/javascripts/admin/domains/edit/init_force_delete_dialog.js deleted file mode 100644 index c85c65db1..000000000 --- a/app/assets/javascripts/admin/domains/edit/init_force_delete_dialog.js +++ /dev/null @@ -1 +0,0 @@ -$('.domain-edit-force-delete-dialog').dialog(); From ae5ae9c60b26aae42d72fd87af44e767509bd547 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Sun, 22 Jan 2017 23:45:04 +0200 Subject: [PATCH 62/73] Extract force_delete concern from domain #268 --- app/models/concerns/domain/force_delete.rb | 58 +++++++++++++++++++ app/models/concerns/statuses.rb | 7 --- app/models/domain.rb | 65 +--------------------- 3 files changed, 59 insertions(+), 71 deletions(-) create mode 100644 app/models/concerns/domain/force_delete.rb delete mode 100644 app/models/concerns/statuses.rb diff --git a/app/models/concerns/domain/force_delete.rb b/app/models/concerns/domain/force_delete.rb new file mode 100644 index 000000000..fa44bc589 --- /dev/null +++ b/app/models/concerns/domain/force_delete.rb @@ -0,0 +1,58 @@ +module Concerns::Domain::ForceDelete + extend ActiveSupport::Concern + + included do + alias_attribute :force_delete_time, :force_delete_at + end + + def force_deletable? + !statuses.include?(DomainStatus::FORCE_DELETE) + end + + def force_delete? + statuses.include?(DomainStatus::FORCE_DELETE) + end + + def set_force_delete + self.statuses_backup = statuses + statuses.delete(DomainStatus::CLIENT_DELETE_PROHIBITED) + statuses.delete(DomainStatus::SERVER_DELETE_PROHIBITED) + statuses.delete(DomainStatus::PENDING_UPDATE) + statuses.delete(DomainStatus::PENDING_TRANSFER) + statuses.delete(DomainStatus::PENDING_RENEW) + statuses.delete(DomainStatus::PENDING_CREATE) + + statuses.delete(DomainStatus::FORCE_DELETE) + statuses.delete(DomainStatus::SERVER_RENEW_PROHIBITED) + statuses.delete(DomainStatus::SERVER_TRANSFER_PROHIBITED) + statuses.delete(DomainStatus::SERVER_UPDATE_PROHIBITED) + statuses.delete(DomainStatus::SERVER_MANUAL_INZONE) + statuses.delete(DomainStatus::PENDING_DELETE) + + statuses << DomainStatus::FORCE_DELETE + statuses << DomainStatus::SERVER_RENEW_PROHIBITED + statuses << DomainStatus::SERVER_TRANSFER_PROHIBITED + statuses << DomainStatus::SERVER_UPDATE_PROHIBITED + statuses << DomainStatus::PENDING_DELETE + + if (statuses & [DomainStatus::SERVER_HOLD, DomainStatus::CLIENT_HOLD]).empty? + statuses << DomainStatus::SERVER_MANUAL_INZONE + end + + self.force_delete_at = (Time.zone.now + (Setting.redemption_grace_period.days + 1.day)).utc.beginning_of_day unless force_delete_at + save!(validate: false) + end + + def unset_force_delete + s = [] + s << DomainStatus::EXPIRED if statuses.include?(DomainStatus::EXPIRED) + s << DomainStatus::SERVER_HOLD if statuses.include?(DomainStatus::SERVER_HOLD) + s << DomainStatus::DELETE_CANDIDATE if statuses.include?(DomainStatus::DELETE_CANDIDATE) + + self.statuses = (statuses_backup + s).uniq + + self.force_delete_at = nil + self.statuses_backup = [] + save(validate: false) + end +end diff --git a/app/models/concerns/statuses.rb b/app/models/concerns/statuses.rb deleted file mode 100644 index 454f43d94..000000000 --- a/app/models/concerns/statuses.rb +++ /dev/null @@ -1,7 +0,0 @@ -module Statuses - extend ActiveSupport::Concern - - def force_delete? - statuses.include?(DomainStatus::FORCE_DELETE) - end -end diff --git a/app/models/domain.rb b/app/models/domain.rb index be450fb80..0117c16d1 100644 --- a/app/models/domain.rb +++ b/app/models/domain.rb @@ -2,9 +2,9 @@ class Domain < ActiveRecord::Base include UserEvents include Versions # version/domain_version.rb - include Statuses include Concerns::Domain::Expirable include Concerns::Domain::Activatable + include Concerns::Domain::ForceDelete has_paper_trail class_name: "DomainVersion", meta: { children: :children_log } @@ -13,7 +13,6 @@ class Domain < ActiveRecord::Base attr_accessor :legal_document_id alias_attribute :on_hold_time, :outzone_at - alias_attribute :force_delete_time, :force_delete_at alias_attribute :outzone_time, :outzone_at alias_attribute :delete_time, :delete_at @@ -422,10 +421,6 @@ class Domain < ActiveRecord::Base end # rubocop: enable Metrics/CyclomaticComplexity - def force_deletable? - !statuses.include?(DomainStatus::FORCE_DELETE) - end - def registrant_verification_asked? registrant_verification_asked_at.present? && registrant_verification_token.present? end @@ -538,64 +533,6 @@ class Domain < ActiveRecord::Base end # rubocop:enable Lint/Loop - # rubocop:disable Metrics/AbcSize - # rubocop:disable Metrics/MethodLength - def set_force_delete - self.statuses_backup = statuses - statuses.delete(DomainStatus::CLIENT_DELETE_PROHIBITED) - statuses.delete(DomainStatus::SERVER_DELETE_PROHIBITED) - statuses.delete(DomainStatus::PENDING_UPDATE) - statuses.delete(DomainStatus::PENDING_TRANSFER) - statuses.delete(DomainStatus::PENDING_RENEW) - statuses.delete(DomainStatus::PENDING_CREATE) - - statuses.delete(DomainStatus::FORCE_DELETE) - statuses.delete(DomainStatus::SERVER_RENEW_PROHIBITED) - statuses.delete(DomainStatus::SERVER_TRANSFER_PROHIBITED) - statuses.delete(DomainStatus::SERVER_UPDATE_PROHIBITED) - statuses.delete(DomainStatus::SERVER_MANUAL_INZONE) - statuses.delete(DomainStatus::PENDING_DELETE) - - statuses << DomainStatus::FORCE_DELETE - statuses << DomainStatus::SERVER_RENEW_PROHIBITED - statuses << DomainStatus::SERVER_TRANSFER_PROHIBITED - statuses << DomainStatus::SERVER_UPDATE_PROHIBITED - statuses << DomainStatus::PENDING_DELETE - - if (statuses & [DomainStatus::SERVER_HOLD, DomainStatus::CLIENT_HOLD]).empty? - statuses << DomainStatus::SERVER_MANUAL_INZONE - end - - self.force_delete_at = (Time.zone.now + (Setting.redemption_grace_period.days + 1.day)).utc.beginning_of_day unless force_delete_at - - transaction do - save!(validate: false) - registrar.messages.create!( - body: I18n.t('force_delete_set_on_domain', domain: name) - ) - - DomainDeleteForcedEmailJob.enqueue(id) - - return true - end - false - end - # rubocop: enable Metrics/MethodLength - # rubocop:enable Metrics/AbcSize - - def unset_force_delete - s = [] - s << DomainStatus::EXPIRED if statuses.include?(DomainStatus::EXPIRED) - s << DomainStatus::SERVER_HOLD if statuses.include?(DomainStatus::SERVER_HOLD) - s << DomainStatus::DELETE_CANDIDATE if statuses.include?(DomainStatus::DELETE_CANDIDATE) - - self.statuses = (statuses_backup + s).uniq - - self.force_delete_at = nil - self.statuses_backup = [] - save(validate: false) - end - def set_graceful_expired self.outzone_at = expire_time + self.class.expire_warning_period self.delete_at = outzone_at + self.class.redemption_grace_period From b7a999f53611764f1a993727aa578a89a8ac2ff0 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Mon, 23 Jan 2017 04:16:59 +0200 Subject: [PATCH 63/73] Refactor domain force delete, add "death" force delete mailer template #268 --- app/controllers/admin/domains_controller.rb | 30 +++--- app/jobs/domain_delete_forced_email_job.rb | 5 +- app/mailers/domain_delete_mailer.rb | 9 +- app/models/concerns/domain/force_delete.rb | 10 +- app/models/domain.rb | 2 +- app/presenters/domain_presenter.rb | 18 ++++ app/presenters/registrant_presenter.rb | 2 +- .../domains/_force_delete_dialog.html.erb | 35 ++++++- app/views/admin/domains/edit.html.erb | 31 +++--- .../forced/death.html.erb | 54 ++++++---- .../forced/death.text.erb | 4 +- config/locales/admin/domains.en.yml | 18 ++++ config/locales/en.yml | 5 +- config/routes.rb | 5 +- spec/factories/domain.rb | 5 + .../admin/domains/force_delete_spec.rb | 33 +++++++ spec/mailers/domain_delete_mailer_spec.rb | 30 +++++- .../concerns/domain/force_delete_spec.rb | 98 +++++++++++++++++++ spec/models/domain_spec.rb | 97 +----------------- spec/presenters/domain_presenter_spec.rb | 34 +++++++ spec/presenters/registrant_presenter_spec.rb | 1 + spec/routing/admin/domains_routing_spec.rb | 13 +++ .../views/admin/domains/edit.html.erb_spec.rb | 22 +++++ 23 files changed, 395 insertions(+), 166 deletions(-) create mode 100644 spec/features/admin/domains/force_delete_spec.rb create mode 100644 spec/models/concerns/domain/force_delete_spec.rb create mode 100644 spec/routing/admin/domains_routing_spec.rb create mode 100644 spec/views/admin/domains/edit.html.erb_spec.rb diff --git a/app/controllers/admin/domains_controller.rb b/app/controllers/admin/domains_controller.rb index f7914353e..97d358f7b 100644 --- a/app/controllers/admin/domains_controller.rb +++ b/app/controllers/admin/domains_controller.rb @@ -1,6 +1,7 @@ class Admin::DomainsController < AdminController load_and_authorize_resource before_action :set_domain, only: [:show, :edit, :update, :zonefile] + helper_method :force_delete_templates # rubocop: disable Metrics/PerceivedComplexity # rubocop: disable Metrics/CyclomaticComplexity @@ -59,22 +60,26 @@ class Admin::DomainsController < AdminController end end - def set_force_delete - if @domain.set_force_delete - flash[:notice] = I18n.t('domain_updated') - else - flash.now[:alert] = I18n.t('failed_to_update_domain') + def schedule_force_delete + raise 'Template param cannot be empty' if params[:template_name].blank? + + @domain.transaction do + @domain.schedule_force_delete + @domain.registrar.messages.create!(body: I18n.t('force_delete_set_on_domain', domain_name: @domain.name)) + DomainDeleteForcedEmailJob.enqueue(@domain.id, params[:template_name]) end - redirect_to [:admin, @domain] + + redirect_to edit_admin_domain_path(@domain), notice: t('.scheduled') end - def unset_force_delete - if @domain.unset_force_delete - flash[:notice] = I18n.t('domain_updated') + def cancel_force_delete + if @domain.cancel_force_delete + flash[:notice] = t('.cancelled') else flash.now[:alert] = I18n.t('failed_to_update_domain') end - redirect_to [:admin, @domain] + + redirect_to edit_admin_domain_path(@domain) end def versions @@ -121,5 +126,8 @@ class Admin::DomainsController < AdminController params[:q][:valid_to_lteq] = ca_cache end -end + def force_delete_templates + %w(removed_company death) + end +end diff --git a/app/jobs/domain_delete_forced_email_job.rb b/app/jobs/domain_delete_forced_email_job.rb index 1ddd95bb9..c9ba13a6f 100644 --- a/app/jobs/domain_delete_forced_email_job.rb +++ b/app/jobs/domain_delete_forced_email_job.rb @@ -1,11 +1,12 @@ class DomainDeleteForcedEmailJob < Que::Job - def run(domain_id) + def run(domain_id, template_name) domain = Domain.find(domain_id) log(domain) DomainDeleteMailer.forced(domain: domain, registrar: domain.registrar, - registrant: domain.registrant).deliver_now + registrant: domain.registrant, + template_name: template_name).deliver_now end private diff --git a/app/mailers/domain_delete_mailer.rb b/app/mailers/domain_delete_mailer.rb index c8703e0ac..d6a1dac09 100644 --- a/app/mailers/domain_delete_mailer.rb +++ b/app/mailers/domain_delete_mailer.rb @@ -8,12 +8,17 @@ class DomainDeleteMailer < ApplicationMailer mail(to: registrant.email, subject: subject) end - def forced(domain:, registrar:, registrant:) + def forced(domain:, registrar:, registrant:, template_name:) @domain = DomainPresenter.new(domain: domain, view: view_context) @registrar = RegistrarPresenter.new(registrar: registrar, view: view_context) @registrant = RegistrantPresenter.new(registrant: registrant, view: view_context) - mail(to: domain.primary_contact_emails) + @force_delete_set_date = Time.zone.now + @redemption_grace_period = Setting.redemption_grace_period + + mail(to: domain.primary_contact_emails, + template_path: 'mailers/domain_delete_mailer/forced', + template_name: template_name) end private diff --git a/app/models/concerns/domain/force_delete.rb b/app/models/concerns/domain/force_delete.rb index fa44bc589..96f1a94b3 100644 --- a/app/models/concerns/domain/force_delete.rb +++ b/app/models/concerns/domain/force_delete.rb @@ -5,15 +5,11 @@ module Concerns::Domain::ForceDelete alias_attribute :force_delete_time, :force_delete_at end - def force_deletable? - !statuses.include?(DomainStatus::FORCE_DELETE) - end - - def force_delete? + def force_delete_scheduled? statuses.include?(DomainStatus::FORCE_DELETE) end - def set_force_delete + def schedule_force_delete self.statuses_backup = statuses statuses.delete(DomainStatus::CLIENT_DELETE_PROHIBITED) statuses.delete(DomainStatus::SERVER_DELETE_PROHIBITED) @@ -43,7 +39,7 @@ module Concerns::Domain::ForceDelete save!(validate: false) end - def unset_force_delete + def cancel_force_delete s = [] s << DomainStatus::EXPIRED if statuses.include?(DomainStatus::EXPIRED) s << DomainStatus::SERVER_HOLD if statuses.include?(DomainStatus::SERVER_HOLD) diff --git a/app/models/domain.rb b/app/models/domain.rb index 0117c16d1..bca5942ac 100644 --- a/app/models/domain.rb +++ b/app/models/domain.rb @@ -136,7 +136,7 @@ class Domain < ActiveRecord::Base validate :check_permissions, :unless => :is_admin def check_permissions - return unless force_delete? + return unless force_delete_scheduled? errors.add(:base, I18n.t(:object_status_prohibits_operation)) false end diff --git a/app/presenters/domain_presenter.rb b/app/presenters/domain_presenter.rb index 2d0cfd791..1836ef3b5 100644 --- a/app/presenters/domain_presenter.rb +++ b/app/presenters/domain_presenter.rb @@ -38,6 +38,24 @@ class DomainPresenter domain.nameserver_hostnames.join(', ') end + def force_delete_toggle_btn + if !domain.force_delete_scheduled? + view.content_tag(:a, view.t('admin.domains.force_delete_toggle_btn.schedule'), + class: 'btn btn-danger', + data: { + toggle: 'modal', + target: '.domain-edit-force-delete-dialog', + } + ) + else + view.link_to(view.t('admin.domains.force_delete_toggle_btn.cancel'), + view.cancel_force_delete_admin_domain_path(domain), + method: :patch, + data: { confirm: view.t('admin.domains.force_delete_toggle_btn.cancel_confim') }, + class: 'btn btn-primary') + end + end + private attr_reader :domain diff --git a/app/presenters/registrant_presenter.rb b/app/presenters/registrant_presenter.rb index f7fcb3094..37c640fc3 100644 --- a/app/presenters/registrant_presenter.rb +++ b/app/presenters/registrant_presenter.rb @@ -1,5 +1,5 @@ class RegistrantPresenter - delegate :name, :ident, :email, :priv?, :street, :city, to: :registrant + delegate :name, :ident, :email, :priv?, :street, :city, :id_code, to: :registrant def initialize(registrant:, view:) @registrant = registrant diff --git a/app/views/admin/domains/_force_delete_dialog.html.erb b/app/views/admin/domains/_force_delete_dialog.html.erb index 68deaac26..3452883f2 100644 --- a/app/views/admin/domains/_force_delete_dialog.html.erb +++ b/app/views/admin/domains/_force_delete_dialog.html.erb @@ -1,3 +1,34 @@ -
- test + diff --git a/app/views/admin/domains/edit.html.erb b/app/views/admin/domains/edit.html.erb index 809285e7e..9c65c33d3 100644 --- a/app/views/admin/domains/edit.html.erb +++ b/app/views/admin/domains/edit.html.erb @@ -1,17 +1,20 @@ -<% content_for :actions do %> - <%= link_to t('.add_new_status_btn'), '#', class: 'btn btn-primary js-add-status' %> +<% domain = DomainPresenter.new(domain: @domain, view: self) %> - <% if @domain.force_deletable? %> - <%= link_to(t('.force_delete_btn'), force_delete_admin_domain_path(@domain), - method: :post, data: { confirm: t(:are_you_sure) }, class: 'btn btn-warning') %> - <% else %> - <%= link_to(t('.cancel_force_delete_btn'), cancel_force_delete_admin_domain_path(@domain), - method: :post, data: { confirm: t(:are_you_sure) }, class: 'btn btn-warning') %> - <% end %> +
+
+

+ Edit: <%= domain.name %> +

+
+
+

+ <%= link_to t('.add_new_status_btn'), '#', class: 'btn btn-primary js-add-status' %> + <%= domain.force_delete_toggle_btn %> + <%= link_to t('.back_btn'), [:admin, @domain], class: 'btn btn-default' %> +

+
+
+
- <%= link_to t(:back_to_domain), [:admin, @domain], class: 'btn btn-default' %> -<% end %> - -<%= render 'shared/title', name: "#{t(:edit)}: #{@domain.name}" %> <%= render 'form' %> -<%= render 'force_delete_dialog' %> +<%= render 'force_delete_dialog', templates: force_delete_templates %> diff --git a/app/views/mailers/domain_delete_mailer/forced/death.html.erb b/app/views/mailers/domain_delete_mailer/forced/death.html.erb index 36ef3693d..aeb1583fe 100644 --- a/app/views/mailers/domain_delete_mailer/forced/death.html.erb +++ b/app/views/mailers/domain_delete_mailer/forced/death.html.erb @@ -1,43 +1,57 @@ -

Lugupeetud domeeni <%= @domain.name %> kontaktisik
-.ee domeeniregistrisse on domeeni <%= @domain.name %> kohta kantud järgmised andmed:

+ +
+ + +
+
+ +

Lugupeetud domeeni <%= @domain.name %> kontaktisik

+

.ee domeeniregistrisse on domeeni <%= @domain.name %> kohta kantud järgmised andmed:

Registreerija nimi: <%= @registrant.name %>
Isikukood: <%= @registrant.id_code %>

-

Eesti Interneti Sihtasutusele (EIS) on saanud teatavaks, et füüsiline isik isikukoodiga <%= @registrant.id_code %> on surnud ja sellest on möödunud vähemalt 6 kuud. +

Eesti Interneti Sihtasutusele (EIS) on saanud teatavaks, et füüsiline isik isikukoodiga <%= @registrant.id_code %> on surnud ja sellest on möödunud vähemalt 6 kuud.

-Domeenireeglite punktist 6.6 tulenevalt on domeeni suhtes õigust omaval registreerijal võimalus esitada domeeni <%= @domain.name %> registripidajale [Registrars.name] domeeni üleandmise taotlus Domeenireeglite p 5.3.6.2 kohaselt. Taotlusele tuleb lisada pärimisõiguse tõend, mis asendavad Domeenireeglite punktis 5.3.6.3 sätestatud üleandva registreerija nõusolekut. Vastav dokumentatsioon tuleb esitada Registripidajale <%= @redemption_grace_period %> päeva jooksul. +

Domeenireeglite punktist 6.6 tulenevalt on domeeni suhtes õigust omaval registreerijal võimalus esitada domeeni <%= @domain.name %> registripidajale <%= @registrar.name %> domeeni üleandmise taotlus Domeenireeglite p 5.3.6.2 kohaselt. Taotlusele tuleb lisada pärimisõiguse tõend, mis asendavad Domeenireeglite punktis 5.3.6.3 sätestatud üleandva registreerija nõusolekut. Vastav dokumentatsioon tuleb esitada Registripidajale <%= @redemption_grace_period %> päeva jooksul.

-Kuna käesoleval hetkel domeenil registreerijat pole, on EIS algatanud <%= l(@force_delete_set_date, format: :date) %> vastavalt Domeenireeglite (http://www.internet.ee/domeenid/) punktile 6.6 domeeni <%= @domain.name %> suhtes <%= @redemption_grace_period %> päeva pikkuse kustutusmenetluse. Kustutamise käigus jääb domeen internetis kättesaadavaks ja selle aja jooksul on võimalik teostada domeeni üleandmine. +

Kuna käesoleval hetkel domeenil registreerijat pole, on EIS algatanud <%= l(@force_delete_set_date, format: :date) %> vastavalt Domeenireeglite (http://www.internet.ee/domeenid/) punktile 6.6 domeeni <%= @domain.name %> suhtes <%= @redemption_grace_period %> päeva pikkuse kustutusmenetluse. Kustutamise käigus jääb domeen internetis kättesaadavaks ja selle aja jooksul on võimalik teostada domeeni üleandmine.

-Kui üleandmine ei ole <%= @redemption_grace_period %> päeva jooksul toimunud, kustub domeen <%= @domain.name %> 24 tunni jooksul <%= @domain.force_delete_date %> juhuslikult valitud ajahetkel. Soovi korral on võimalik domeen pärast selle kustumist registrist “kes ees, see mees” põhimõttel uuesti registreerida. +

Kui üleandmine ei ole <%= @redemption_grace_period %> päeva jooksul toimunud, kustub domeen <%= @domain.name %> 24 tunni jooksul <%= @domain.force_delete_date %> juhuslikult valitud ajahetkel. Soovi korral on võimalik domeen pärast selle kustumist registrist “kes ees, see mees” põhimõttel uuesti registreerida.

-Lisaküsimuste korral võtke palun ühendust oma registripidajaga:

+

Lisaküsimuste korral võtke palun ühendust oma registripidajaga:

<%= render 'mailers/shared/registrar/registrar.et.html', registrar: @registrar %> +
- -

Dear contact of <%= @domain.name %> domain
-The following details for domain name <%= @domain.name %> have been entered into the Estonian Internet Foundation's (EIS) domain registry:

+

Dear contact of <%= @domain.name %> domain
+The following details for domain name <%= @domain.name %> have been entered into the Estonian Internet Foundation's (EIS) domain registry:

Registrant's name: <%= @registrant.name %>
Identification code: <%= @registrant.id_code %>

-

EIS has learned that the natural person <%= @registrant.name %> with identification code <%= @registrant.id_code %> has been deceased and 6 months have passed from death. +

EIS has learned that the natural person <%= @registrant.name %> with identification code <%= @registrant.id_code %> has been deceased and 6 months have passed from death.

-According to paragraph 6.6 of the Domain Regulation, the registrant holding a right to the domain name <%= @domain.name %> can submit a domain name transfer application to the registrar [Registrars.name] in accordance with paragraph 5.3.6.2 of the Domain Regulation. The application must be submitted together with succession evidence certifying the acquisition of the domain that will replace the consent of the surrendering registrant as laid down in paragraph 5.3.6.3 of the Domain Regulation. The relevant documents should be submitted to the registrar within <%= @redemption_grace_period %> day(s). +

According to paragraph 6.6 of the Domain Regulation, the registrant holding a right to the domain name <%= @domain.name %> can submit a domain name transfer application to the registrar <%= @registrar.name %> in accordance with paragraph 5.3.6.2 of the Domain Regulation. The application must be submitted together with succession evidence certifying the acquisition of the domain that will replace the consent of the surrendering registrant as laid down in paragraph 5.3.6.3 of the Domain Regulation. The relevant documents should be submitted to the registrar within <%= @redemption_grace_period %> day(s).

-As a deceased natural person is not the registrant of a domain, the EIS started the deletion process of <%= @domain.name %> domain on <%= l(@force_delete_set_date, format: :date) %> according to the Domain Regulation (http://www.internet.ee/en/domains/), using the <%= @redemption_grace_period %>-day delete procedure. The domain will remain available on the Internet during the delete procedure and within this time can be transferred to new registrant. +

As a deceased natural person is not the registrant of a domain, the EIS started the deletion process of <%= @domain.name %> domain on <%= l(@force_delete_set_date, format: :date) %> according to the Domain Regulation (http://www.internet.ee/en/domains/), using the <%= @redemption_grace_period %>-day delete procedure. The domain will remain available on the Internet during the delete procedure and within this time can be transferred to new registrant.

-If the transfer has not been made in <%= @redemption_grace_period %> day(s), the domain <%= @domain.name %> will be deleted at a randomly chosen moment within 24 hours on <%= @domain.force_delete_date %>. After deletion it is possible to reregister the domain on a "first come, first served" basis. +

If the transfer has not been made in <%= @redemption_grace_period %> day(s), the domain <%= @domain.name %> will be deleted at a randomly chosen moment within 24 hours on <%= @domain.force_delete_date %>. After deletion it is possible to reregister the domain on a "first come, first served" basis.

-Should you have additional questions, please contact your registrar:

+

Should you have additional questions, please contact your registrar:

<%= render 'mailers/shared/registrar/registrar.en.html', registrar: @registrar %> -

Lugupidamisega,
-Best Regards,
-

-Eesti Interneti Sihtasutus
-Estonian Internet Foundation

+

+ + + + +
+

Lugupidamisega,
+ Best Regards,

+

Eesti Interneti Sihtasutus
+ Estonian Internet Foundation

+
+
diff --git a/app/views/mailers/domain_delete_mailer/forced/death.text.erb b/app/views/mailers/domain_delete_mailer/forced/death.text.erb index 96393d5f3..58939070f 100644 --- a/app/views/mailers/domain_delete_mailer/forced/death.text.erb +++ b/app/views/mailers/domain_delete_mailer/forced/death.text.erb @@ -6,7 +6,7 @@ Isikukood: <%= @registrant.id_code %> Eesti Interneti Sihtasutusele (EIS) on saanud teatavaks, et füüsiline isik isikukoodiga <%= @registrant.id_code %> on surnud ja sellest on möödunud vähemalt 6 kuud. -Domeenireeglite punktist 6.6 tulenevalt on domeeni suhtes õigust omaval registreerijal võimalus esitada domeeni <%= @domain.name %> registripidajale [Registrars.name] domeeni üleandmise taotlus Domeenireeglite p 5.3.6.2 kohaselt. Taotlusele tuleb lisada pärimisõiguse tõend, mis asendavad Domeenireeglite punktis 5.3.6.3 sätestatud üleandva registreerija nõusolekut. Vastav dokumentatsioon tuleb esitada Registripidajale <%= @redemption_grace_period %> päeva jooksul. +Domeenireeglite punktist 6.6 tulenevalt on domeeni suhtes õigust omaval registreerijal võimalus esitada domeeni <%= @domain.name %> registripidajale <%= @registrar.name %> domeeni üleandmise taotlus Domeenireeglite p 5.3.6.2 kohaselt. Taotlusele tuleb lisada pärimisõiguse tõend, mis asendavad Domeenireeglite punktis 5.3.6.3 sätestatud üleandva registreerija nõusolekut. Vastav dokumentatsioon tuleb esitada Registripidajale <%= @redemption_grace_period %> päeva jooksul. Kuna käesoleval hetkel domeenil registreerijat pole, on EIS algatanud <%= l(@force_delete_set_date, format: :date) %> vastavalt Domeenireeglite (http://www.internet.ee/domeenid/) punktile 6.6 domeeni <%= @domain.name %> suhtes <%= @redemption_grace_period %> päeva pikkuse kustutusmenetluse. Kustutamise käigus jääb domeen internetis kättesaadavaks ja selle aja jooksul on võimalik teostada domeeni üleandmine. @@ -27,7 +27,7 @@ Identification code: <%= @registrant.id_code %> EIS has learned that the natural person <%= @registrant.name %> with identification code <%= @registrant.id_code %> has been deceased and 6 months have passed from death. -According to paragraph 6.6 of the Domain Regulation, the registrant holding a right to the domain name <%= @domain.name %> can submit a domain name transfer application to the registrar [Registrars.name] in accordance with paragraph 5.3.6.2 of the Domain Regulation. The application must be submitted together with succession evidence certifying the acquisition of the domain that will replace the consent of the surrendering registrant as laid down in paragraph 5.3.6.3 of the Domain Regulation. The relevant documents should be submitted to the registrar within <%= @redemption_grace_period %> day(s). +According to paragraph 6.6 of the Domain Regulation, the registrant holding a right to the domain name <%= @domain.name %> can submit a domain name transfer application to the registrar <%= @registrar.name %> in accordance with paragraph 5.3.6.2 of the Domain Regulation. The application must be submitted together with succession evidence certifying the acquisition of the domain that will replace the consent of the surrendering registrant as laid down in paragraph 5.3.6.3 of the Domain Regulation. The relevant documents should be submitted to the registrar within <%= @redemption_grace_period %> day(s). As a deceased natural person is not the registrant of a domain, the EIS started the deletion process of <%= @domain.name %> domain on <%= l(@force_delete_set_date, format: :date) %> according to the Domain Regulation (http://www.internet.ee/en/domains/), using the <%= @redemption_grace_period %>-day delete procedure. The domain will remain available on the Internet during the delete procedure and within this time can be transferred to new registrant. diff --git a/config/locales/admin/domains.en.yml b/config/locales/admin/domains.en.yml index ce37f7ea6..ae0626ffb 100644 --- a/config/locales/admin/domains.en.yml +++ b/config/locales/admin/domains.en.yml @@ -6,6 +6,19 @@ en: edit: add_new_status_btn: Add new status + back_btn: Back to domain + + force_delete_dialog: + title: Force delete + template: Template + close_btn: Close dialog + submit_btn: Force delete domain + + schedule_force_delete: + scheduled: Force delete procedure has been scheduled + + cancel_force_delete: + cancelled: Force delete procedure has been cancelled versions: time: Time @@ -16,3 +29,8 @@ en: outzone_time: Outzone time delete_time: Delete time force_delete_time: Force delete time + + force_delete_toggle_btn: + schedule: Schedule force delete + cancel: Cancel force delete + cancel_confim: Are you sure you want cancel force delete procedure? diff --git a/config/locales/en.yml b/config/locales/en.yml index f75324218..d266cdfdf 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -602,7 +602,6 @@ en: new_domain: 'New domain' edit: 'Edit' delete: 'Delete' - are_you_sure: 'Are you sure?' renew: 'Renew' new: New renew_domain: 'Renew domain' @@ -844,8 +843,6 @@ en: valid: Valid category: Zone object_is_not_eligible_for_renewal: 'Object is not eligible for renewal' - set_force_delete: 'Set force delete' - unset_force_delete: 'Unset force delete' domain_expiring: 'Domain expiring' domain_validation_rules: 'Domain validation rules' bank_statement_desc: 'Import file row will match only when matching following attributes:
ref number
payment amount
invoice number (the first numerical value in comment field)
.' @@ -914,7 +911,7 @@ en: created_at_from: 'Created at from' created_at_until: 'Created at until' is_registrant: 'Is registrant' - force_delete_set_on_domain: 'Force delete set on domain %{domain}' + force_delete_set_on_domain: 'Force delete set on domain %{domain_name}' mail_templates: Mail Templates new_mail_template: New mail template failure: "It was not saved" diff --git a/config/routes.rb b/config/routes.rb index c4f1cf32c..8b52e7091 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -202,9 +202,10 @@ Rails.application.routes.draw do resources :domain_versions, controller: 'domains', action: 'versions' resources :pending_updates resources :pending_deletes + member do - post 'set_force_delete' - post 'unset_force_delete' + patch 'schedule_force_delete' + patch 'cancel_force_delete' end end diff --git a/spec/factories/domain.rb b/spec/factories/domain.rb index 534670ce0..edbd2274c 100644 --- a/spec/factories/domain.rb +++ b/spec/factories/domain.rb @@ -10,5 +10,10 @@ FactoryGirl.define do domain.admin_domain_contacts << FactoryGirl.build(:admin_domain_contact) domain.tech_domain_contacts << FactoryGirl.build(:tech_domain_contact) end + + factory :domain_without_force_delete do + force_delete_time nil + statuses [] + end end end diff --git a/spec/features/admin/domains/force_delete_spec.rb b/spec/features/admin/domains/force_delete_spec.rb new file mode 100644 index 000000000..1d3b926a6 --- /dev/null +++ b/spec/features/admin/domains/force_delete_spec.rb @@ -0,0 +1,33 @@ +require 'rails_helper' + +RSpec.feature 'Force delete' do + context 'when domain has no force delete procedure' do + given!(:domain) { create(:domain_without_force_delete) } + + scenario 'schedule' do + sign_in_to_admin_area + + visit edit_admin_domain_url(domain) + click_link_or_button 'Force delete domain' + + expect(page).to have_text('Force delete procedure has been scheduled') + end + end + + context 'when domain has force delete procedure' do + given!(:domain) { create(:domain_without_force_delete) } + + background do + domain.schedule_force_delete + end + + scenario 'cancel' do + sign_in_to_admin_area + + visit edit_admin_domain_url(domain) + click_link_or_button 'Cancel force delete' + + expect(page).to have_text('Force delete procedure has been cancelled') + end + end +end diff --git a/spec/mailers/domain_delete_mailer_spec.rb b/spec/mailers/domain_delete_mailer_spec.rb index 5a2f775c1..ce4bbce93 100644 --- a/spec/mailers/domain_delete_mailer_spec.rb +++ b/spec/mailers/domain_delete_mailer_spec.rb @@ -48,12 +48,16 @@ RSpec.describe DomainDeleteMailer do describe '#forced' do let(:domain) { instance_spy(Domain, name: 'test.com') } + let(:registrant) { instance_spy(Registrant) } + let(:template_name) { 'removed_company' } + let(:domain_presenter) { instance_spy(DomainPresenter) } let(:registrar_presenter) { instance_spy(RegistrarPresenter) } let(:registrant_presenter) { instance_spy(RegistrantPresenter) } subject(:message) { described_class.forced(domain: domain, registrar: 'registrar', - registrant: 'registrant') + registrant: registrant, + template_name: template_name) } before :example do @@ -75,8 +79,28 @@ RSpec.describe DomainDeleteMailer do expect(message.subject).to eq('Kustutusmenetluse teade') end - it 'sends message' do - expect { message.deliver_now }.to change { ActionMailer::Base.deliveries.count }.by(1) + context 'when template is :death' do + let(:template_name) { 'death' } + + it 'sends message' do + expect { message.deliver_now }.to change { ActionMailer::Base.deliveries.count }.by(1) + end + end + + context 'when registrant is private entity' do + let(:registrant) { build_stubbed(:registrant_private_entity) } + + it 'sends message' do + expect { message.deliver_now }.to change { ActionMailer::Base.deliveries.count }.by(1) + end + end + + context 'when registrant is legal entity' do + let(:registrant) { build_stubbed(:registrant_legal_entity) } + + it 'sends message' do + expect { message.deliver_now }.to change { ActionMailer::Base.deliveries.count }.by(1) + end end end end diff --git a/spec/models/concerns/domain/force_delete_spec.rb b/spec/models/concerns/domain/force_delete_spec.rb new file mode 100644 index 000000000..3e0563366 --- /dev/null +++ b/spec/models/concerns/domain/force_delete_spec.rb @@ -0,0 +1,98 @@ +require 'rails_helper' + +RSpec.describe Domain do + it { is_expected.to alias_attribute(:force_delete_time, :force_delete_at) } + + before :example do + Fabricate(:zonefile_setting, origin: 'ee') + end + + it 'should set force delete time' do + domain = Fabricate(:domain) + domain.statuses = ['ok'] + domain.schedule_force_delete + + domain.statuses.should match_array([ + "serverForceDelete", + "pendingDelete", + "serverManualInzone", + "serverRenewProhibited", + "serverTransferProhibited", + "serverUpdateProhibited" + ]) + + domain.cancel_force_delete + + domain.statuses.should == ['ok'] + + domain.statuses = [ + DomainStatus::CLIENT_DELETE_PROHIBITED, + DomainStatus::SERVER_DELETE_PROHIBITED, + DomainStatus::PENDING_UPDATE, + DomainStatus::PENDING_TRANSFER, + DomainStatus::PENDING_RENEW, + DomainStatus::PENDING_CREATE, + DomainStatus::CLIENT_HOLD, + DomainStatus::EXPIRED, + DomainStatus::SERVER_HOLD, + DomainStatus::DELETE_CANDIDATE + ] + + domain.save + + domain.schedule_force_delete + + domain.statuses.should match_array([ + "clientHold", + "deleteCandidate", + "expired", + "serverForceDelete", + "pendingDelete", + "serverHold", + "serverRenewProhibited", + "serverTransferProhibited", + "serverUpdateProhibited" + ]) + + domain.cancel_force_delete + + domain.statuses.should match_array([ + "clientDeleteProhibited", + "clientHold", + "deleteCandidate", + "expired", + "pendingCreate", + "pendingRenew", + "pendingTransfer", + "pendingUpdate", + "serverDeleteProhibited", + "serverHold" + ]) + end + + it 'should should be manual in zone and held after force delete' do + domain = create(:domain) + Setting.redemption_grace_period = 1 + + domain.valid? + domain.outzone_at = Time.zone.now + 1.day # before redemption grace period + # what should this be? + # domain.server_holdable?.should be true + domain.statuses.include?(DomainStatus::SERVER_HOLD).should be false + domain.statuses.include?(DomainStatus::SERVER_MANUAL_INZONE).should be false + domain.schedule_force_delete + domain.server_holdable?.should be false + domain.statuses.include?(DomainStatus::SERVER_MANUAL_INZONE).should be true + domain.statuses.include?(DomainStatus::SERVER_HOLD).should be false + end + + it 'should not allow update after force delete' do + domain = create(:domain) + domain.valid? + domain.pending_update_prohibited?.should be false + domain.update_prohibited?.should be false + domain.schedule_force_delete + domain.pending_update_prohibited?.should be true + domain.update_prohibited?.should be true + end +end diff --git a/spec/models/domain_spec.rb b/spec/models/domain_spec.rb index 555cf48e1..6e224080f 100644 --- a/spec/models/domain_spec.rb +++ b/spec/models/domain_spec.rb @@ -182,98 +182,6 @@ RSpec.describe Domain do domain.statuses.include?(DomainStatus::SERVER_HOLD).should == false end - it 'should set force delete time' do - @domain.statuses = ['ok'] - @domain.set_force_delete - - @domain.statuses.should match_array([ - "serverForceDelete", - "pendingDelete", - "serverManualInzone", - "serverRenewProhibited", - "serverTransferProhibited", - "serverUpdateProhibited" - ]) - - fda = Time.zone.now + Setting.redemption_grace_period.days - - @domain.registrar.messages.count.should == 1 - m = @domain.registrar.messages.first - m.body.should == "Force delete set on domain #{@domain.name}" - - @domain.unset_force_delete - - @domain.statuses.should == ['ok'] - - @domain.statuses = [ - DomainStatus::CLIENT_DELETE_PROHIBITED, - DomainStatus::SERVER_DELETE_PROHIBITED, - DomainStatus::PENDING_UPDATE, - DomainStatus::PENDING_TRANSFER, - DomainStatus::PENDING_RENEW, - DomainStatus::PENDING_CREATE, - DomainStatus::CLIENT_HOLD, - DomainStatus::EXPIRED, - DomainStatus::SERVER_HOLD, - DomainStatus::DELETE_CANDIDATE - ] - - @domain.save - - @domain.set_force_delete - - @domain.statuses.should match_array([ - "clientHold", - "deleteCandidate", - "expired", - "serverForceDelete", - "pendingDelete", - "serverHold", - "serverRenewProhibited", - "serverTransferProhibited", - "serverUpdateProhibited" - ]) - - @domain.unset_force_delete - - @domain.statuses.should match_array([ - "clientDeleteProhibited", - "clientHold", - "deleteCandidate", - "expired", - "pendingCreate", - "pendingRenew", - "pendingTransfer", - "pendingUpdate", - "serverDeleteProhibited", - "serverHold" - ]) - end - - it 'should should be manual in zone and held after force delete' do - Setting.redemption_grace_period = 1 - - @domain.valid? - @domain.outzone_at = Time.zone.now + 1.day # before redemption grace period - # what should this be? - # @domain.server_holdable?.should be true - @domain.statuses.include?(DomainStatus::SERVER_HOLD).should be false - @domain.statuses.include?(DomainStatus::SERVER_MANUAL_INZONE).should be false - @domain.set_force_delete - @domain.server_holdable?.should be false - @domain.statuses.include?(DomainStatus::SERVER_MANUAL_INZONE).should be true - @domain.statuses.include?(DomainStatus::SERVER_HOLD).should be false - end - - it 'should not allow update after force delete' do - @domain.valid? - @domain.pending_update_prohibited?.should be false - @domain.update_prohibited?.should be false - @domain.set_force_delete - @domain.pending_update_prohibited?.should be true - @domain.update_prohibited?.should be true - end - context 'with time period settings' do before :example do @save_days_to_renew = Setting.days_to_renew_domain_before_expire @@ -302,7 +210,7 @@ RSpec.describe Domain do it 'should not allow to renew after force delete' do Setting.redemption_grace_period = 1 - @domain.set_force_delete + @domain.schedule_force_delete @domain.renewable?.should be false end end @@ -327,7 +235,7 @@ RSpec.describe Domain do it 'should not allow to renew after force delete' do Setting.redemption_grace_period = 1 - @domain.set_force_delete + @domain.schedule_force_delete @domain.renewable?.should be false end end @@ -700,7 +608,6 @@ end RSpec.describe Domain, db: false do it { is_expected.to alias_attribute(:on_hold_time, :outzone_at) } it { is_expected.to alias_attribute(:delete_time, :delete_at) } - it { is_expected.to alias_attribute(:force_delete_time, :force_delete_at) } it { is_expected.to alias_attribute(:outzone_time, :outzone_at) } describe 'nameserver validation', db: true do diff --git a/spec/presenters/domain_presenter_spec.rb b/spec/presenters/domain_presenter_spec.rb index 2209c01aa..5b3a14e12 100644 --- a/spec/presenters/domain_presenter_spec.rb +++ b/spec/presenters/domain_presenter_spec.rb @@ -114,6 +114,40 @@ RSpec.describe DomainPresenter do end end + describe '#force_delete_toggle_btn' do + let(:domain) { build_stubbed(:domain) } + + context 'when force delete is not scheduled' do + before :example do + expect(domain).to receive(:force_delete_scheduled?).and_return(false) + end + + it 'returns schedule button' do + html = view.content_tag(:a, 'Schedule force delete', + class: 'btn btn-danger', + data: { + toggle: 'modal', + target: '.domain-edit-force-delete-dialog', + }) + expect(presenter.force_delete_toggle_btn).to eq(html) + end + end + + context 'when force delete is scheduled' do + before :example do + expect(domain).to receive(:force_delete_scheduled?).and_return(true) + end + + it 'returns cancel button' do + html = link_to('Cancel force delete', + view.cancel_force_delete_admin_domain_path(domain), + method: :patch, + data: { confirm: 'Are you sure you want cancel force delete procedure?' }, + class: 'btn btn-warning') + expect(presenter.force_delete_toggle_btn).to eq(html) + end + end + end domain_delegatable_attributes = %i( name diff --git a/spec/presenters/registrant_presenter_spec.rb b/spec/presenters/registrant_presenter_spec.rb index 894dd40d5..5db6cb0da 100644 --- a/spec/presenters/registrant_presenter_spec.rb +++ b/spec/presenters/registrant_presenter_spec.rb @@ -11,6 +11,7 @@ RSpec.describe RegistrantPresenter do priv? street city + id_code ) registrant_delegate_attributes.each do |attribute_name| diff --git a/spec/routing/admin/domains_routing_spec.rb b/spec/routing/admin/domains_routing_spec.rb new file mode 100644 index 000000000..ce1da8d57 --- /dev/null +++ b/spec/routing/admin/domains_routing_spec.rb @@ -0,0 +1,13 @@ +require 'rails_helper' + +RSpec.describe Admin::DomainsController do + describe 'routing' do + it 'routes to #schedule_force_delete' do + expect(patch: '/admin/domains/1/schedule_force_delete').to route_to('admin/domains#schedule_force_delete', id: '1') + end + + it 'routes to #cancel_force_delete' do + expect(patch: '/admin/domains/1/cancel_force_delete').to route_to('admin/domains#cancel_force_delete', id: '1') + end + end +end diff --git a/spec/views/admin/domains/edit.html.erb_spec.rb b/spec/views/admin/domains/edit.html.erb_spec.rb new file mode 100644 index 000000000..b3cc5d834 --- /dev/null +++ b/spec/views/admin/domains/edit.html.erb_spec.rb @@ -0,0 +1,22 @@ +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) + allow(view).to receive(:force_delete_templates) + + assign(:domain, domain) + + stub_template '_form' => '' + stub_template '_force_delete_dialog' => '' + 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 From e56e27327bba20866c389d89a835b1effcaf758b Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Mon, 23 Jan 2017 04:24:02 +0200 Subject: [PATCH 64/73] Add flash messages to admin area #268 --- app/views/admin/_flash_messages.html.erb | 20 ++++++++++++++++++++ app/views/layouts/admin.haml | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 app/views/admin/_flash_messages.html.erb diff --git a/app/views/admin/_flash_messages.html.erb b/app/views/admin/_flash_messages.html.erb new file mode 100644 index 000000000..4a10df304 --- /dev/null +++ b/app/views/admin/_flash_messages.html.erb @@ -0,0 +1,20 @@ +<% if flash[:notice] %> +
+ +

<%= flash[:notice] %>

+
+<% end %> + +<% if flash[:alert] %> +
+ +

<%= flash[:alert] %>

+
+<% end %> + +<% if flash[:info] %> +
+ +

<%= flash[:info] %>

+
+<% end %> diff --git a/app/views/layouts/admin.haml b/app/views/layouts/admin.haml index 8e8e3230e..717c5015c 100644 --- a/app/views/layouts/admin.haml +++ b/app/views/layouts/admin.haml @@ -27,7 +27,7 @@ = render 'menu' .container - = render 'shared/flash' + = render 'flash_messages' = yield .footer.text-right From 4a84157a8360448cb8588ff218e7f5805ef195b0 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Mon, 23 Jan 2017 04:32:12 +0200 Subject: [PATCH 65/73] Fix domain specs #268 --- spec/jobs/domain_delete_forced_email_job_spec.rb | 6 ++++-- spec/presenters/domain_presenter_spec.rb | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/spec/jobs/domain_delete_forced_email_job_spec.rb b/spec/jobs/domain_delete_forced_email_job_spec.rb index 05dab987b..3d725b987 100644 --- a/spec/jobs/domain_delete_forced_email_job_spec.rb +++ b/spec/jobs/domain_delete_forced_email_job_spec.rb @@ -17,7 +17,8 @@ RSpec.describe DomainDeleteForcedEmailJob do after :example do domain_id = 1 - described_class.enqueue(domain_id) + template_name = 'removed_company' + described_class.enqueue(domain_id, template_name) end it 'creates log record' do @@ -32,7 +33,8 @@ RSpec.describe DomainDeleteForcedEmailJob do it 'sends email' do expect(DomainDeleteMailer).to receive(:forced).with(domain: domain, registrar: 'registrar', - registrant: 'registrant') + registrant: 'registrant', + template_name: 'removed_company') .and_return(message) expect(message).to receive(:deliver_now) end diff --git a/spec/presenters/domain_presenter_spec.rb b/spec/presenters/domain_presenter_spec.rb index 5b3a14e12..f32e6eb52 100644 --- a/spec/presenters/domain_presenter_spec.rb +++ b/spec/presenters/domain_presenter_spec.rb @@ -143,7 +143,7 @@ RSpec.describe DomainPresenter do view.cancel_force_delete_admin_domain_path(domain), method: :patch, data: { confirm: 'Are you sure you want cancel force delete procedure?' }, - class: 'btn btn-warning') + class: 'btn btn-primary') expect(presenter.force_delete_toggle_btn).to eq(html) end end From 39f9ff13d12b63848c801c06ba588b66affe3daa Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Tue, 24 Jan 2017 13:49:45 +0200 Subject: [PATCH 66/73] Remove unused class #355 --- app/jobs/domain_set_delete_candidate_job.rb | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 app/jobs/domain_set_delete_candidate_job.rb diff --git a/app/jobs/domain_set_delete_candidate_job.rb b/app/jobs/domain_set_delete_candidate_job.rb deleted file mode 100644 index f1e489694..000000000 --- a/app/jobs/domain_set_delete_candidate_job.rb +++ /dev/null @@ -1,10 +0,0 @@ -class DomainSetDeleteCandidateJob < Que::Job - - def run(domain_id) - domain = Domain.find(domain_id) - domain.statuses << DomainStatus::DELETE_CANDIDATE - ::PaperTrail.whodunnit = "job - #{self.class.name}" - domain.save(validate: false) - DomainDeleteJob.enqueue(domain.id, run_at: rand(((24*60) - (DateTime.now.hour * 60 + DateTime.now.minute))).minutes.from_now) - end -end From edf1e3326086ca482bd61f437f4ff99ae976c042 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Tue, 24 Jan 2017 19:16:15 +0200 Subject: [PATCH 67/73] Disallow EPP domain:update/transfer/delete if a domain has "deleteCandidate" status #355 --- CHANGELOG.md | 3 ++ app/models/concerns/domain/deletable.rb | 11 +++++ app/models/domain.rb | 2 +- app/models/epp/domain.rb | 18 +++++++ spec/factories/domain.rb | 4 ++ spec/models/concerns/domain/deletable_spec.rb | 19 ++++++++ spec/models/domain_spec.rb | 1 - .../epp/domain/delete/discarded_spec.rb | 48 +++++++++++++++++++ .../epp/domain/transfer/discarded_spec.rb | 46 ++++++++++++++++++ .../epp/domain/update/discarded_spec.rb | 43 +++++++++++++++++ 10 files changed, 193 insertions(+), 2 deletions(-) create mode 100644 app/models/concerns/domain/deletable.rb create mode 100644 spec/models/concerns/domain/deletable_spec.rb create mode 100644 spec/requests/epp/domain/delete/discarded_spec.rb create mode 100644 spec/requests/epp/domain/transfer/discarded_spec.rb create mode 100644 spec/requests/epp/domain/update/discarded_spec.rb diff --git a/CHANGELOG.md b/CHANGELOG.md index a6517b4ff..157cc9501 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +24.01.2017 +* Disallow EPP domain:update/transfer/delete if a domain has "deleteCandidate" status + 22.12.2016 * Return business registry code and country for 'org' type registrants in WHOIS and Rest-WHOIS diff --git a/app/models/concerns/domain/deletable.rb b/app/models/concerns/domain/deletable.rb new file mode 100644 index 000000000..f724162e5 --- /dev/null +++ b/app/models/concerns/domain/deletable.rb @@ -0,0 +1,11 @@ +module Concerns::Domain::Deletable + extend ActiveSupport::Concern + + included do + alias_attribute :delete_time, :delete_at + end + + def discarded? + statuses.include?(DomainStatus::DELETE_CANDIDATE) + end +end diff --git a/app/models/domain.rb b/app/models/domain.rb index bca5942ac..3e71dd1e9 100644 --- a/app/models/domain.rb +++ b/app/models/domain.rb @@ -5,6 +5,7 @@ class Domain < ActiveRecord::Base include Concerns::Domain::Expirable include Concerns::Domain::Activatable include Concerns::Domain::ForceDelete + include Concerns::Domain::Deletable has_paper_trail class_name: "DomainVersion", meta: { children: :children_log } @@ -14,7 +15,6 @@ class Domain < ActiveRecord::Base alias_attribute :on_hold_time, :outzone_at alias_attribute :outzone_time, :outzone_at - alias_attribute :delete_time, :delete_at # TODO: whois requests ip whitelist for full info for own domains and partial info for other domains # TODO: most inputs should be trimmed before validatation, probably some global logic? diff --git a/app/models/epp/domain.rb b/app/models/epp/domain.rb index 6a2edf5ed..a2a5dd1dc 100644 --- a/app/models/epp/domain.rb +++ b/app/models/epp/domain.rb @@ -472,6 +472,9 @@ class Epp::Domain < Domain # rubocop: disable Metrics/CyclomaticComplexity def update(frame, current_user, verify = true) return super if frame.blank? + + check_discarded + at = {}.with_indifferent_access at.deep_merge!(attrs_from(frame.css('chg'), current_user, 'chg')) at.deep_merge!(attrs_from(frame.css('rem'), current_user, 'rem')) @@ -563,6 +566,8 @@ class Epp::Domain < Domain def epp_destroy(frame, user_id) return false unless valid? + check_discarded + if doc = attach_legal_document(Epp::Domain.parse_legal_document_from_frame(frame)) frame.css("legalDocument").first.content = doc.path if doc && doc.persisted? end @@ -629,6 +634,8 @@ class Epp::Domain < Domain # rubocop: disable Metrics/CyclomaticComplexity def transfer(frame, action, current_user) + check_discarded + @is_transfer = true case action @@ -925,5 +932,16 @@ class Epp::Domain < Domain res end end + + private + + def check_discarded + if discarded? + throw :epp_error, { + code: '2105', + msg: I18n.t(:object_is_not_eligible_for_renewal), + } + end + end end # rubocop: enable Metrics/ClassLength diff --git a/spec/factories/domain.rb b/spec/factories/domain.rb index edbd2274c..4c1b4b1cc 100644 --- a/spec/factories/domain.rb +++ b/spec/factories/domain.rb @@ -15,5 +15,9 @@ FactoryGirl.define do force_delete_time nil statuses [] end + + factory :domain_discarded do + statuses [DomainStatus::DELETE_CANDIDATE] + end end end diff --git a/spec/models/concerns/domain/deletable_spec.rb b/spec/models/concerns/domain/deletable_spec.rb new file mode 100644 index 000000000..826299b69 --- /dev/null +++ b/spec/models/concerns/domain/deletable_spec.rb @@ -0,0 +1,19 @@ +require 'rails_helper' + +RSpec.describe Domain, db: false do + it { is_expected.to alias_attribute(:delete_time, :delete_at) } + + describe '#discarded?' do + context 'when :deleteCandidate status is present' do + let(:domain) { described_class.new(statuses: [DomainStatus::DELETE_CANDIDATE]) } + + specify { expect(domain).to be_discarded } + end + + context 'when :deleteCandidate status is absent' do + let(:domain) { described_class.new(statuses: []) } + + specify { expect(domain).to_not be_discarded } + end + end +end diff --git a/spec/models/domain_spec.rb b/spec/models/domain_spec.rb index 6e224080f..65c96dbe8 100644 --- a/spec/models/domain_spec.rb +++ b/spec/models/domain_spec.rb @@ -607,7 +607,6 @@ end RSpec.describe Domain, db: false do it { is_expected.to alias_attribute(:on_hold_time, :outzone_at) } - it { is_expected.to alias_attribute(:delete_time, :delete_at) } it { is_expected.to alias_attribute(:outzone_time, :outzone_at) } describe 'nameserver validation', db: true do diff --git a/spec/requests/epp/domain/delete/discarded_spec.rb b/spec/requests/epp/domain/delete/discarded_spec.rb new file mode 100644 index 000000000..f136e0696 --- /dev/null +++ b/spec/requests/epp/domain/delete/discarded_spec.rb @@ -0,0 +1,48 @@ +require 'rails_helper' + +RSpec.describe 'EPP domain:delete' do + let(:request_xml) { <<-XML + + + + + + test.com + + + + + dGVzdCBmYWlsCg== + + + + + XML + } + + 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_to_epp_area + end + + context 'when domain is not discarded' do + let!(:domain) { create(:domain, name: 'test.com') } + + it 'returns epp code of 1001' do + post '/epp/command/delete', frame: request_xml + expect(response_code).to eq('1001'), "Expected EPP code of 1001, got #{response_code} (#{response_description})" + end + end + + context 'when domain is discarded' do + let!(:domain) { create(:domain_discarded, name: 'test.com') } + + it 'returns epp code of 2105' do + post '/epp/command/delete', frame: request_xml + expect(response_code).to eq('2105'), "Expected EPP code of 2105, got #{response_code} (#{response_description})" + end + end +end diff --git a/spec/requests/epp/domain/transfer/discarded_spec.rb b/spec/requests/epp/domain/transfer/discarded_spec.rb new file mode 100644 index 000000000..045e3cd2f --- /dev/null +++ b/spec/requests/epp/domain/transfer/discarded_spec.rb @@ -0,0 +1,46 @@ +require 'rails_helper' + +RSpec.describe 'EPP domain:transfer' do + let(:request_xml) { <<-XML + + + + + + test.com + + 98oiewslkfkd + + + + + + XML + } + + 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_to_epp_area + end + + context 'when domain is not discarded' do + let!(:domain) { create(:domain, name: 'test.com') } + + it 'returns epp code of 1000' do + post '/epp/command/transfer', frame: request_xml + expect(response_code).to eq('1000'), "Expected EPP code of 1000, got #{response_code} (#{response_description})" + end + end + + context 'when domain is discarded' do + let!(:domain) { create(:domain_discarded, name: 'test.com') } + + it 'returns epp code of 2105' do + post '/epp/command/transfer', frame: request_xml + expect(response_code).to eq('2105'), "Expected EPP code of 2105, got #{response_code} (#{response_description})" + end + end +end diff --git a/spec/requests/epp/domain/update/discarded_spec.rb b/spec/requests/epp/domain/update/discarded_spec.rb new file mode 100644 index 000000000..c1061a95f --- /dev/null +++ b/spec/requests/epp/domain/update/discarded_spec.rb @@ -0,0 +1,43 @@ +require 'rails_helper' + +RSpec.describe 'EPP domain:update' do + let(:request_xml) { <<-XML + + + + + + test.com + + + + + XML + } + + 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_to_epp_area + end + + context 'when domain is not discarded' do + let!(:domain) { create(:domain, name: 'test.com') } + + it 'returns epp code of 1000' do + post '/epp/command/update', frame: request_xml + expect(response_code).to eq('1000'), "Expected EPP code of 1000, got #{response_code} (#{response_description})" + end + end + + context 'when domain is discarded' do + let!(:domain) { create(:domain_discarded, name: 'test.com') } + + it 'returns epp code of 2105' do + post '/epp/command/update', frame: request_xml + expect(response_code).to eq('2105'), "Expected EPP code of 2105, got #{response_code} (#{response_description})" + end + end +end From e31c68d43fe4dd11de1d3cac1e2ff506d5cb18ae Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Wed, 25 Jan 2017 05:11:31 +0200 Subject: [PATCH 68/73] Add EPP response code rspec matcher #355 --- spec/rails_helper.rb | 8 +++++ .../epp/domain/delete/discarded_spec.rb | 8 ++--- .../epp/domain/transfer/discarded_spec.rb | 8 ++--- .../epp/domain/update/discarded_spec.rb | 8 ++--- spec/support/matchers/epp/code.rb | 35 +++++++++++++++++++ spec/support/requests/epp_helpers.rb | 7 ++++ 6 files changed, 56 insertions(+), 18 deletions(-) create mode 100644 spec/support/matchers/epp/code.rb create mode 100644 spec/support/requests/epp_helpers.rb diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index 402db389d..bfe87211b 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -6,6 +6,7 @@ require 'capybara/poltergeist' require 'paper_trail/frameworks/rspec' require 'money-rails/test_helpers' require 'support/requests/session_helpers' +require 'support/requests/epp_helpers' require 'support/features/session_helpers' if ENV['ROBOT'] @@ -15,6 +16,7 @@ end require 'support/matchers/alias_attribute' require 'support/matchers/active_job' +require 'support/matchers/epp/code' require 'support/capybara' require 'support/factory_girl' require 'support/database_cleaner' @@ -30,6 +32,8 @@ RSpec.configure do |config| config.include Features::SessionHelpers, type: :feature config.include AbstractController::Translation, type: :feature + config.include Requests::EPPHelpers, epp: true + config.define_derived_metadata(file_path: %r[/spec/features/]) do |metadata| metadata[:db] = true if metadata[:db].nil? end @@ -46,6 +50,10 @@ RSpec.configure do |config| metadata[:db] = true if metadata[:db].nil? end + config.define_derived_metadata(file_path: %r[/spec/requests/epp/]) do |metadata| + metadata[:epp] = true if metadata[:epp].nil? + end + config.define_derived_metadata(file_path: %r[/spec/api/]) do |metadata| metadata[:type] = :request end diff --git a/spec/requests/epp/domain/delete/discarded_spec.rb b/spec/requests/epp/domain/delete/discarded_spec.rb index f136e0696..99ec59267 100644 --- a/spec/requests/epp/domain/delete/discarded_spec.rb +++ b/spec/requests/epp/domain/delete/discarded_spec.rb @@ -20,10 +20,6 @@ RSpec.describe 'EPP domain:delete' do XML } - 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_to_epp_area end @@ -33,7 +29,7 @@ RSpec.describe 'EPP domain:delete' do it 'returns epp code of 1001' do post '/epp/command/delete', frame: request_xml - expect(response_code).to eq('1001'), "Expected EPP code of 1001, got #{response_code} (#{response_description})" + expect(response).to have_code_of(1001) end end @@ -42,7 +38,7 @@ RSpec.describe 'EPP domain:delete' do it 'returns epp code of 2105' do post '/epp/command/delete', frame: request_xml - expect(response_code).to eq('2105'), "Expected EPP code of 2105, got #{response_code} (#{response_description})" + expect(response).to have_code_of(2105) end end end diff --git a/spec/requests/epp/domain/transfer/discarded_spec.rb b/spec/requests/epp/domain/transfer/discarded_spec.rb index 045e3cd2f..51f65c641 100644 --- a/spec/requests/epp/domain/transfer/discarded_spec.rb +++ b/spec/requests/epp/domain/transfer/discarded_spec.rb @@ -18,10 +18,6 @@ RSpec.describe 'EPP domain:transfer' do XML } - 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_to_epp_area end @@ -31,7 +27,7 @@ RSpec.describe 'EPP domain:transfer' do it 'returns epp code of 1000' do post '/epp/command/transfer', frame: request_xml - expect(response_code).to eq('1000'), "Expected EPP code of 1000, got #{response_code} (#{response_description})" + expect(response).to have_code_of(1000) end end @@ -40,7 +36,7 @@ RSpec.describe 'EPP domain:transfer' do it 'returns epp code of 2105' do post '/epp/command/transfer', frame: request_xml - expect(response_code).to eq('2105'), "Expected EPP code of 2105, got #{response_code} (#{response_description})" + expect(response).to have_code_of(2105) end end end diff --git a/spec/requests/epp/domain/update/discarded_spec.rb b/spec/requests/epp/domain/update/discarded_spec.rb index c1061a95f..14ff1c743 100644 --- a/spec/requests/epp/domain/update/discarded_spec.rb +++ b/spec/requests/epp/domain/update/discarded_spec.rb @@ -15,10 +15,6 @@ RSpec.describe 'EPP domain:update' do XML } - 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_to_epp_area end @@ -28,7 +24,7 @@ RSpec.describe 'EPP domain:update' do it 'returns epp code of 1000' do post '/epp/command/update', frame: request_xml - expect(response_code).to eq('1000'), "Expected EPP code of 1000, got #{response_code} (#{response_description})" + expect(response).to have_code_of(1000) end end @@ -37,7 +33,7 @@ RSpec.describe 'EPP domain:update' do it 'returns epp code of 2105' do post '/epp/command/update', frame: request_xml - expect(response_code).to eq('2105'), "Expected EPP code of 2105, got #{response_code} (#{response_description})" + expect(response).to have_code_of(2105) end end end diff --git a/spec/support/matchers/epp/code.rb b/spec/support/matchers/epp/code.rb new file mode 100644 index 000000000..db79488b3 --- /dev/null +++ b/spec/support/matchers/epp/code.rb @@ -0,0 +1,35 @@ +module Matchers + module EPP + class Code + def initialize(expected) + @expected = expected + end + + def matches?(response) + @xml = response.body + actual == expected + end + + def failure_message + "Expected EPP code of #{expected}, got #{actual} (#{description})" + end + + private + + attr_reader :xml + attr_reader :expected + + def actual + xml_document.xpath('//xmlns:result').first['code'].to_i + end + + def description + xml_document.css('result msg').text + end + + def xml_document + @xml_document ||= Nokogiri::XML(xml) + end + end + end +end diff --git a/spec/support/requests/epp_helpers.rb b/spec/support/requests/epp_helpers.rb new file mode 100644 index 000000000..1372ae779 --- /dev/null +++ b/spec/support/requests/epp_helpers.rb @@ -0,0 +1,7 @@ +module Requests + module EPPHelpers + def have_code_of(*args) + Matchers::EPP::Code.new(*args) + end + end +end From 13a92c98698a826d2232e34e52837a2ff92025ed Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Wed, 25 Jan 2017 13:06:13 +0200 Subject: [PATCH 69/73] Fix EPP schema #355 --- spec/requests/epp/domain/delete/discarded_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/requests/epp/domain/delete/discarded_spec.rb b/spec/requests/epp/domain/delete/discarded_spec.rb index 99ec59267..91a527890 100644 --- a/spec/requests/epp/domain/delete/discarded_spec.rb +++ b/spec/requests/epp/domain/delete/discarded_spec.rb @@ -11,7 +11,7 @@ RSpec.describe 'EPP domain:delete' do - + dGVzdCBmYWlsCg== From 7d1a5558b03da6685ea8e1344212efcacff9820c Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Mon, 30 Jan 2017 14:04:56 +0200 Subject: [PATCH 70/73] Disallow EPP domain:update/transfer/delete if a domain has "deleteCandidate" status #355 --- CHANGELOG.md | 3 ++ app/models/concerns/domain/deletable.rb | 7 +++ app/models/domain.rb | 1 + app/models/epp/domain.rb | 18 ++++++++ spec/factories/domain.rb | 4 ++ spec/models/concerns/domain/deletable_spec.rb | 17 +++++++ spec/rails_helper.rb | 8 ++++ .../epp/domain/delete/discarded_spec.rb | 44 +++++++++++++++++++ .../epp/domain/transfer/discarded_spec.rb | 42 ++++++++++++++++++ .../epp/domain/update/discarded_spec.rb | 39 ++++++++++++++++ spec/support/matchers/epp/code.rb | 35 +++++++++++++++ spec/support/requests/epp_helpers.rb | 7 +++ 12 files changed, 225 insertions(+) create mode 100644 app/models/concerns/domain/deletable.rb create mode 100644 spec/models/concerns/domain/deletable_spec.rb create mode 100644 spec/requests/epp/domain/delete/discarded_spec.rb create mode 100644 spec/requests/epp/domain/transfer/discarded_spec.rb create mode 100644 spec/requests/epp/domain/update/discarded_spec.rb create mode 100644 spec/support/matchers/epp/code.rb create mode 100644 spec/support/requests/epp_helpers.rb diff --git a/CHANGELOG.md b/CHANGELOG.md index a6517b4ff..157cc9501 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +24.01.2017 +* Disallow EPP domain:update/transfer/delete if a domain has "deleteCandidate" status + 22.12.2016 * Return business registry code and country for 'org' type registrants in WHOIS and Rest-WHOIS diff --git a/app/models/concerns/domain/deletable.rb b/app/models/concerns/domain/deletable.rb new file mode 100644 index 000000000..aa4c8d47d --- /dev/null +++ b/app/models/concerns/domain/deletable.rb @@ -0,0 +1,7 @@ +module Concerns::Domain::Deletable + extend ActiveSupport::Concern + + def discarded? + statuses.include?(DomainStatus::DELETE_CANDIDATE) + end +end diff --git a/app/models/domain.rb b/app/models/domain.rb index be450fb80..821a37fe6 100644 --- a/app/models/domain.rb +++ b/app/models/domain.rb @@ -5,6 +5,7 @@ class Domain < ActiveRecord::Base include Statuses include Concerns::Domain::Expirable include Concerns::Domain::Activatable + include Concerns::Domain::Deletable has_paper_trail class_name: "DomainVersion", meta: { children: :children_log } diff --git a/app/models/epp/domain.rb b/app/models/epp/domain.rb index 6a2edf5ed..a2a5dd1dc 100644 --- a/app/models/epp/domain.rb +++ b/app/models/epp/domain.rb @@ -472,6 +472,9 @@ class Epp::Domain < Domain # rubocop: disable Metrics/CyclomaticComplexity def update(frame, current_user, verify = true) return super if frame.blank? + + check_discarded + at = {}.with_indifferent_access at.deep_merge!(attrs_from(frame.css('chg'), current_user, 'chg')) at.deep_merge!(attrs_from(frame.css('rem'), current_user, 'rem')) @@ -563,6 +566,8 @@ class Epp::Domain < Domain def epp_destroy(frame, user_id) return false unless valid? + check_discarded + if doc = attach_legal_document(Epp::Domain.parse_legal_document_from_frame(frame)) frame.css("legalDocument").first.content = doc.path if doc && doc.persisted? end @@ -629,6 +634,8 @@ class Epp::Domain < Domain # rubocop: disable Metrics/CyclomaticComplexity def transfer(frame, action, current_user) + check_discarded + @is_transfer = true case action @@ -925,5 +932,16 @@ class Epp::Domain < Domain res end end + + private + + def check_discarded + if discarded? + throw :epp_error, { + code: '2105', + msg: I18n.t(:object_is_not_eligible_for_renewal), + } + end + end end # rubocop: enable Metrics/ClassLength diff --git a/spec/factories/domain.rb b/spec/factories/domain.rb index 534670ce0..a77f367fa 100644 --- a/spec/factories/domain.rb +++ b/spec/factories/domain.rb @@ -10,5 +10,9 @@ FactoryGirl.define do domain.admin_domain_contacts << FactoryGirl.build(:admin_domain_contact) domain.tech_domain_contacts << FactoryGirl.build(:tech_domain_contact) end + + factory :domain_discarded do + statuses [DomainStatus::DELETE_CANDIDATE] + end end end diff --git a/spec/models/concerns/domain/deletable_spec.rb b/spec/models/concerns/domain/deletable_spec.rb new file mode 100644 index 000000000..6214368b7 --- /dev/null +++ b/spec/models/concerns/domain/deletable_spec.rb @@ -0,0 +1,17 @@ +require 'rails_helper' + +RSpec.describe Domain, db: false do + describe '#discarded?' do + context 'when :deleteCandidate status is present' do + let(:domain) { described_class.new(statuses: [DomainStatus::DELETE_CANDIDATE]) } + + specify { expect(domain).to be_discarded } + end + + context 'when :deleteCandidate status is absent' do + let(:domain) { described_class.new(statuses: []) } + + specify { expect(domain).to_not be_discarded } + end + end +end diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index 402db389d..52df9727d 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -6,6 +6,7 @@ require 'capybara/poltergeist' require 'paper_trail/frameworks/rspec' require 'money-rails/test_helpers' require 'support/requests/session_helpers' +require 'support/requests/epp_helpers' require 'support/features/session_helpers' if ENV['ROBOT'] @@ -15,6 +16,8 @@ end require 'support/matchers/alias_attribute' require 'support/matchers/active_job' +require 'support/matchers/epp/code' + require 'support/capybara' require 'support/factory_girl' require 'support/database_cleaner' @@ -29,6 +32,7 @@ RSpec.configure do |config| config.include Requests::SessionHelpers, type: :request config.include Features::SessionHelpers, type: :feature config.include AbstractController::Translation, type: :feature + config.include Requests::EPPHelpers, epp: true config.define_derived_metadata(file_path: %r[/spec/features/]) do |metadata| metadata[:db] = true if metadata[:db].nil? @@ -50,6 +54,10 @@ RSpec.configure do |config| metadata[:type] = :request end + config.define_derived_metadata(file_path: %r[/spec/requests/epp/]) do |metadata| + metadata[:epp] = true if metadata[:epp].nil? + end + config.use_transactional_fixtures = false config.infer_spec_type_from_file_location! diff --git a/spec/requests/epp/domain/delete/discarded_spec.rb b/spec/requests/epp/domain/delete/discarded_spec.rb new file mode 100644 index 000000000..99ec59267 --- /dev/null +++ b/spec/requests/epp/domain/delete/discarded_spec.rb @@ -0,0 +1,44 @@ +require 'rails_helper' + +RSpec.describe 'EPP domain:delete' do + let(:request_xml) { <<-XML + + + + + + test.com + + + + + dGVzdCBmYWlsCg== + + + + + XML + } + + before :example do + sign_in_to_epp_area + end + + context 'when domain is not discarded' do + let!(:domain) { create(:domain, name: 'test.com') } + + it 'returns epp code of 1001' do + post '/epp/command/delete', frame: request_xml + expect(response).to have_code_of(1001) + end + end + + context 'when domain is discarded' do + let!(:domain) { create(:domain_discarded, name: 'test.com') } + + it 'returns epp code of 2105' do + post '/epp/command/delete', frame: request_xml + expect(response).to have_code_of(2105) + end + end +end diff --git a/spec/requests/epp/domain/transfer/discarded_spec.rb b/spec/requests/epp/domain/transfer/discarded_spec.rb new file mode 100644 index 000000000..51f65c641 --- /dev/null +++ b/spec/requests/epp/domain/transfer/discarded_spec.rb @@ -0,0 +1,42 @@ +require 'rails_helper' + +RSpec.describe 'EPP domain:transfer' do + let(:request_xml) { <<-XML + + + + + + test.com + + 98oiewslkfkd + + + + + + XML + } + + before :example do + sign_in_to_epp_area + end + + context 'when domain is not discarded' do + let!(:domain) { create(:domain, name: 'test.com') } + + it 'returns epp code of 1000' do + post '/epp/command/transfer', frame: request_xml + expect(response).to have_code_of(1000) + end + end + + context 'when domain is discarded' do + let!(:domain) { create(:domain_discarded, name: 'test.com') } + + it 'returns epp code of 2105' do + post '/epp/command/transfer', frame: request_xml + expect(response).to have_code_of(2105) + end + end +end diff --git a/spec/requests/epp/domain/update/discarded_spec.rb b/spec/requests/epp/domain/update/discarded_spec.rb new file mode 100644 index 000000000..14ff1c743 --- /dev/null +++ b/spec/requests/epp/domain/update/discarded_spec.rb @@ -0,0 +1,39 @@ +require 'rails_helper' + +RSpec.describe 'EPP domain:update' do + let(:request_xml) { <<-XML + + + + + + test.com + + + + + XML + } + + before :example do + sign_in_to_epp_area + end + + context 'when domain is not discarded' do + let!(:domain) { create(:domain, name: 'test.com') } + + it 'returns epp code of 1000' do + post '/epp/command/update', frame: request_xml + expect(response).to have_code_of(1000) + end + end + + context 'when domain is discarded' do + let!(:domain) { create(:domain_discarded, name: 'test.com') } + + it 'returns epp code of 2105' do + post '/epp/command/update', frame: request_xml + expect(response).to have_code_of(2105) + end + end +end diff --git a/spec/support/matchers/epp/code.rb b/spec/support/matchers/epp/code.rb new file mode 100644 index 000000000..db79488b3 --- /dev/null +++ b/spec/support/matchers/epp/code.rb @@ -0,0 +1,35 @@ +module Matchers + module EPP + class Code + def initialize(expected) + @expected = expected + end + + def matches?(response) + @xml = response.body + actual == expected + end + + def failure_message + "Expected EPP code of #{expected}, got #{actual} (#{description})" + end + + private + + attr_reader :xml + attr_reader :expected + + def actual + xml_document.xpath('//xmlns:result').first['code'].to_i + end + + def description + xml_document.css('result msg').text + end + + def xml_document + @xml_document ||= Nokogiri::XML(xml) + end + end + end +end diff --git a/spec/support/requests/epp_helpers.rb b/spec/support/requests/epp_helpers.rb new file mode 100644 index 000000000..1372ae779 --- /dev/null +++ b/spec/support/requests/epp_helpers.rb @@ -0,0 +1,7 @@ +module Requests + module EPPHelpers + def have_code_of(*args) + Matchers::EPP::Code.new(*args) + end + end +end From 5f77c633322445ff3d43831182fc3dbd869d2252 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Mon, 30 Jan 2017 14:13:21 +0200 Subject: [PATCH 71/73] Extract domain's "delete_time" attribute to deletable concern --- app/models/concerns/domain/deletable.rb | 4 ++++ spec/models/concerns/domain/deletable_spec.rb | 2 ++ spec/models/domain_spec.rb | 1 - 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/app/models/concerns/domain/deletable.rb b/app/models/concerns/domain/deletable.rb index aa4c8d47d..f724162e5 100644 --- a/app/models/concerns/domain/deletable.rb +++ b/app/models/concerns/domain/deletable.rb @@ -1,6 +1,10 @@ module Concerns::Domain::Deletable extend ActiveSupport::Concern + included do + alias_attribute :delete_time, :delete_at + end + def discarded? statuses.include?(DomainStatus::DELETE_CANDIDATE) end diff --git a/spec/models/concerns/domain/deletable_spec.rb b/spec/models/concerns/domain/deletable_spec.rb index 6214368b7..826299b69 100644 --- a/spec/models/concerns/domain/deletable_spec.rb +++ b/spec/models/concerns/domain/deletable_spec.rb @@ -1,6 +1,8 @@ require 'rails_helper' RSpec.describe Domain, db: false do + it { is_expected.to alias_attribute(:delete_time, :delete_at) } + describe '#discarded?' do context 'when :deleteCandidate status is present' do let(:domain) { described_class.new(statuses: [DomainStatus::DELETE_CANDIDATE]) } diff --git a/spec/models/domain_spec.rb b/spec/models/domain_spec.rb index 555cf48e1..74207e077 100644 --- a/spec/models/domain_spec.rb +++ b/spec/models/domain_spec.rb @@ -699,7 +699,6 @@ end RSpec.describe Domain, db: false do it { is_expected.to alias_attribute(:on_hold_time, :outzone_at) } - it { is_expected.to alias_attribute(:delete_time, :delete_at) } it { is_expected.to alias_attribute(:force_delete_time, :force_delete_at) } it { is_expected.to alias_attribute(:outzone_time, :outzone_at) } From 27d1bb953fac535704949aa81295828d4fae427e Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Tue, 31 Jan 2017 14:03:30 +0200 Subject: [PATCH 72/73] Revert e951b471b71c08c2af87a14c910db39dac5dc671 --- CHANGELOG.md | 4 - Gemfile | 2 +- Gemfile.lock | 7 +- app/models/legal_document.rb | 2 +- app/views/epp/contacts/info.xml.builder | 2 +- app/views/epp/sessions/greeting.xml.builder | 2 +- .../epp_requests/contact/create.xml | 2 +- .../epp_requests/contact/delete.xml | 2 +- .../epp_requests/contact/update_chg.xml | 2 +- .../epp_requests/domain/create.xml | 2 +- .../epp_requests/domain/delete.xml | 2 +- .../epp_requests/domain/transfer.xml | 2 +- .../epp_requests/domain/update.xml | 2 +- .../epp_requests/keyrelay/keyrelay.xml | 2 +- config/application-example.yml | 4 +- config/initializers/load_schemas.rb | 2 +- doc/epp-examples.md | 374 +++++++++--------- doc/epp/README.md | 2 - doc/epp/contact.md | 12 +- doc/epp/domain.md | 20 +- lib/schemas/all-ee-1.2.xsd | 46 --- lib/schemas/contact-ee-1.1.xsd | 2 +- lib/schemas/domain-eis-1.0.xsd | 2 +- lib/schemas/ee-1.1.xsd | 104 ----- spec/requests/epp/contact/create_spec.rb | 4 +- spec/requests/epp/contact/update_spec.rb | 4 +- .../domain/create/optional_nameserver_spec.rb | 4 +- .../domain/create/required_nameserver_spec.rb | 4 +- spec/support/requests/session_helpers.rb | 2 +- 29 files changed, 232 insertions(+), 389 deletions(-) delete mode 100644 lib/schemas/all-ee-1.2.xsd delete mode 100644 lib/schemas/ee-1.1.xsd diff --git a/CHANGELOG.md b/CHANGELOG.md index 81ddffa7b..157cc9501 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,10 +1,6 @@ 24.01.2017 * Disallow EPP domain:update/transfer/delete if a domain has "deleteCandidate" status -08.01.2017 -* EPP XML schema "eis-1.0.xsd" replaced with "ee-1.1.xsd" -* .ddoc legal document format support dropped - 22.12.2016 * Return business registry code and country for 'org' type registrants in WHOIS and Rest-WHOIS diff --git a/Gemfile b/Gemfile index 550d87802..11e5d92a0 100644 --- a/Gemfile +++ b/Gemfile @@ -84,7 +84,7 @@ gem 'deep_cloneable', '2.1.1' gem 'digidoc_client', '0.2.1' gem 'epp', '1.5.0', github: 'internetee/epp' -gem 'epp-xml', github: 'internetee/epp-xml', branch: 'epp-xml-6' +gem 'epp-xml', '1.1.0', github: 'internetee/epp-xml' gem 'uuidtools', '2.1.5' # For unique IDs (used by the epp gem) # que diff --git a/Gemfile.lock b/Gemfile.lock index ea66d68db..7b3810caf 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -18,10 +18,9 @@ GIT GIT remote: https://github.com/internetee/epp-xml.git - revision: e483de16c06856a2d0dfe29aef74ddcbc901704b - branch: epp-xml-6 + revision: 5dd542e67ef26d58365f30e553254d6db809277d specs: - epp-xml (2.0.0) + epp-xml (1.1.0) activesupport (~> 4.1) builder (~> 3.2) @@ -595,7 +594,7 @@ DEPENDENCIES devise (= 3.5.4) digidoc_client (= 0.2.1) epp (= 1.5.0)! - epp-xml! + epp-xml (= 1.1.0)! fabrication (= 2.13.2) factory_girl_rails figaro (= 1.1.1) diff --git a/app/models/legal_document.rb b/app/models/legal_document.rb index 36e18c016..c1f9243e3 100644 --- a/app/models/legal_document.rb +++ b/app/models/legal_document.rb @@ -6,7 +6,7 @@ class LegalDocument < ActiveRecord::Base if ENV['legal_document_types'].present? TYPES = ENV['legal_document_types'].split(',').map(&:strip) else - TYPES = %w(pdf bdoc zip rar gz tar 7z odt doc docx).freeze + TYPES = %w(pdf bdoc ddoc zip rar gz tar 7z odt doc docx).freeze end attr_accessor :body diff --git a/app/views/epp/contacts/info.xml.builder b/app/views/epp/contacts/info.xml.builder index ba045d30f..068622203 100644 --- a/app/views/epp/contacts/info.xml.builder +++ b/app/views/epp/contacts/info.xml.builder @@ -80,7 +80,7 @@ xml.epp_head do end if can? :view_full_info, @contact, @password xml.tag!('extension') do - xml.tag!('eis:extdata', 'xmlns:eis' => 'https://epp.tld.ee/schema/ee-1.1.xsd') do + xml.tag!('eis:extdata', 'xmlns:eis' => 'https://epp.tld.ee/schema/eis-1.0.xsd') do xml.tag!('eis:ident', @contact.ident, type: @contact.ident_type, cc: @contact.ident_country_code) end diff --git a/app/views/epp/sessions/greeting.xml.builder b/app/views/epp/sessions/greeting.xml.builder index 60d4ac117..040ce7196 100644 --- a/app/views/epp/sessions/greeting.xml.builder +++ b/app/views/epp/sessions/greeting.xml.builder @@ -11,7 +11,7 @@ xml.epp_head do xml.objURI 'urn:ietf:params:xml:ns:keyrelay-1.0' xml.svcExtension do xml.extURI 'urn:ietf:params:xml:ns:secDNS-1.1' - xml.extURI 'https://epp.tld.ee/schema/ee-1.1.xsd' + xml.extURI 'https://epp.tld.ee/schema/eis-1.0.xsd' end end diff --git a/app/views/registrar/xml_consoles/epp_requests/contact/create.xml b/app/views/registrar/xml_consoles/epp_requests/contact/create.xml index 423e8f3ef..ff10b8370 100644 --- a/app/views/registrar/xml_consoles/epp_requests/contact/create.xml +++ b/app/views/registrar/xml_consoles/epp_requests/contact/create.xml @@ -20,7 +20,7 @@ - + 123 dGVzdCBmYWlsCg== diff --git a/app/views/registrar/xml_consoles/epp_requests/contact/delete.xml b/app/views/registrar/xml_consoles/epp_requests/contact/delete.xml index 9bc692c55..a86c4ac0c 100644 --- a/app/views/registrar/xml_consoles/epp_requests/contact/delete.xml +++ b/app/views/registrar/xml_consoles/epp_requests/contact/delete.xml @@ -11,7 +11,7 @@ - + dGVzdCBmYWlsCg== diff --git a/app/views/registrar/xml_consoles/epp_requests/contact/update_chg.xml b/app/views/registrar/xml_consoles/epp_requests/contact/update_chg.xml index 8be734ea0..62cc103db 100644 --- a/app/views/registrar/xml_consoles/epp_requests/contact/update_chg.xml +++ b/app/views/registrar/xml_consoles/epp_requests/contact/update_chg.xml @@ -25,7 +25,7 @@ - + dGVzdCBmYWlsCg== diff --git a/app/views/registrar/xml_consoles/epp_requests/domain/create.xml b/app/views/registrar/xml_consoles/epp_requests/domain/create.xml index c409f712c..ef1392859 100644 --- a/app/views/registrar/xml_consoles/epp_requests/domain/create.xml +++ b/app/views/registrar/xml_consoles/epp_requests/domain/create.xml @@ -31,7 +31,7 @@ AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== diff --git a/app/views/registrar/xml_consoles/epp_requests/domain/delete.xml b/app/views/registrar/xml_consoles/epp_requests/domain/delete.xml index 598fdac29..16b78b73f 100644 --- a/app/views/registrar/xml_consoles/epp_requests/domain/delete.xml +++ b/app/views/registrar/xml_consoles/epp_requests/domain/delete.xml @@ -8,7 +8,7 @@ - + dGVzdCBmYWlsCg== diff --git a/app/views/registrar/xml_consoles/epp_requests/domain/transfer.xml b/app/views/registrar/xml_consoles/epp_requests/domain/transfer.xml index 0750abd7f..e373e64ee 100644 --- a/app/views/registrar/xml_consoles/epp_requests/domain/transfer.xml +++ b/app/views/registrar/xml_consoles/epp_requests/domain/transfer.xml @@ -11,7 +11,7 @@ - + dGVzdCBmYWlsCg== diff --git a/app/views/registrar/xml_consoles/epp_requests/domain/update.xml b/app/views/registrar/xml_consoles/epp_requests/domain/update.xml index 79be51a70..57f495791 100644 --- a/app/views/registrar/xml_consoles/epp_requests/domain/update.xml +++ b/app/views/registrar/xml_consoles/epp_requests/domain/update.xml @@ -43,7 +43,7 @@ - + dGVzdCBmYWlsCg== diff --git a/app/views/registrar/xml_consoles/epp_requests/keyrelay/keyrelay.xml b/app/views/registrar/xml_consoles/epp_requests/keyrelay/keyrelay.xml index b3d55f016..4a8773cac 100644 --- a/app/views/registrar/xml_consoles/epp_requests/keyrelay/keyrelay.xml +++ b/app/views/registrar/xml_consoles/epp_requests/keyrelay/keyrelay.xml @@ -16,7 +16,7 @@ P1D - + dGVzdCBmYWlsCg== 1422542244 diff --git a/config/application-example.yml b/config/application-example.yml index a264dfa34..f1b17cc03 100644 --- a/config/application-example.yml +++ b/config/application-example.yml @@ -66,8 +66,8 @@ contact_org_enabled: 'false' # iptables_server_ip: '127.0.0.1' # Custom legal document types. Changing this requires updating EPP extension schema for allowed legalDocEnumType values. -# System default for legal document types is: pdf,bdoc,zip,rar,gz,tar,7z,odt,doc,docx -# legal_document_types: "pdf,bdoc,zip,rar,gz,tar,7z,odt,doc,docx" +# System default for legal document types is: pdf,bdoc,ddoc,zip,rar,gz,tar,7z,odt,doc,docx +# legal_document_types: "pdf,bdoc,ddoc,zip,rar,gz,tar,7z,odt,doc,docx" # diff --git a/config/initializers/load_schemas.rb b/config/initializers/load_schemas.rb index 1f34d58df..fa0150896 100644 --- a/config/initializers/load_schemas.rb +++ b/config/initializers/load_schemas.rb @@ -1 +1 @@ -EPP_ALL_SCHEMA = Nokogiri::XML::Schema(File.read('lib/schemas/all-ee-1.2.xsd')) +EPP_ALL_SCHEMA = Nokogiri::XML::Schema(File.read('lib/schemas/all-ee-1.1.xsd')) diff --git a/doc/epp-examples.md b/doc/epp-examples.md index f503d074f..12b2fdfdb 100644 --- a/doc/epp-examples.md +++ b/doc/epp-examples.md @@ -25,7 +25,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -108,7 +108,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -168,7 +168,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -225,7 +225,7 @@ REQUEST: - + 1990-22-12 dGVzdCBmYWlsCg== @@ -282,7 +282,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -339,7 +339,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -396,7 +396,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -448,7 +448,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -506,7 +506,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -564,7 +564,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -616,7 +616,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -668,7 +668,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -719,7 +719,7 @@ REQUEST: - + 1990-22-12 @@ -735,10 +735,10 @@ RESPONSE: - Element '{https://epp.tld.ee/schema/ee-1.1.xsd}ident', attribute 'cc': [facet 'maxLength'] The value 'WRONG' has a length of '5'; this exceeds the allowed maximum length of '2'. + Element '{https://epp.tld.ee/schema/eis-1.0.xsd}ident', attribute 'cc': [facet 'maxLength'] The value 'WRONG' has a length of '5'; this exceeds the allowed maximum length of '2'. - Element '{https://epp.tld.ee/schema/ee-1.1.xsd}ident', attribute 'cc': 'WRONG' is not a valid value of the atomic type '{https://epp.tld.ee/schema/ee-1.1.xsd}ccType'. + Element '{https://epp.tld.ee/schema/eis-1.0.xsd}ident', attribute 'cc': 'WRONG' is not a valid value of the atomic type '{https://epp.tld.ee/schema/eis-1.0.xsd}ccType'. ABC-12345 @@ -772,7 +772,7 @@ REQUEST: - + 1990-22-12 @@ -788,7 +788,7 @@ RESPONSE: - Element '{https://epp.tld.ee/schema/ee-1.1.xsd}ident': The attribute 'cc' is required but missing. + Element '{https://epp.tld.ee/schema/eis-1.0.xsd}ident': The attribute 'cc' is required but missing. ABC-12345 @@ -822,7 +822,7 @@ REQUEST: - + 1990-22-12 @@ -838,10 +838,10 @@ RESPONSE: - Element '{https://epp.tld.ee/schema/ee-1.1.xsd}ident': The attribute 'type' is required but missing. + Element '{https://epp.tld.ee/schema/eis-1.0.xsd}ident': The attribute 'type' is required but missing. - Element '{https://epp.tld.ee/schema/ee-1.1.xsd}ident': The attribute 'cc' is required but missing. + Element '{https://epp.tld.ee/schema/eis-1.0.xsd}ident': The attribute 'cc' is required but missing. ABC-12345 @@ -876,7 +876,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -934,7 +934,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -992,7 +992,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -1050,7 +1050,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -1108,7 +1108,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -1165,7 +1165,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -1222,7 +1222,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -1280,7 +1280,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -1332,7 +1332,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -1416,7 +1416,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -1469,7 +1469,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -1569,7 +1569,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -1617,7 +1617,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -1669,7 +1669,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -1717,7 +1717,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -1801,7 +1801,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -1851,7 +1851,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -1904,7 +1904,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -1955,7 +1955,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -2005,7 +2005,7 @@ REQUEST: - + 1990-22-12 dGVzdCBmYWlsCg== @@ -2057,7 +2057,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -2108,7 +2108,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -2486,7 +2486,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -2533,7 +2533,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -2577,7 +2577,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -2656,7 +2656,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -2705,7 +2705,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -2746,7 +2746,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -2793,7 +2793,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -2841,7 +2841,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -2920,7 +2920,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -2968,7 +2968,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -3009,7 +3009,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -3056,7 +3056,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -3339,7 +3339,7 @@ RESPONSE: - + 37605030299 @@ -3407,7 +3407,7 @@ RESPONSE: - + 37605030299 @@ -3475,7 +3475,7 @@ RESPONSE: - + 37605030299 @@ -3543,7 +3543,7 @@ RESPONSE: - + 37605030299 @@ -3611,7 +3611,7 @@ RESPONSE: - + 37605030299 @@ -3645,7 +3645,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -3725,7 +3725,7 @@ RESPONSE: - + 37605030299 @@ -3757,7 +3757,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -3805,7 +3805,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -3887,7 +3887,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -3935,7 +3935,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -4030,7 +4030,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -4076,7 +4076,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -4139,7 +4139,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -4202,7 +4202,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -4318,7 +4318,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -4380,7 +4380,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -4453,7 +4453,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -4521,7 +4521,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -4584,7 +4584,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -4647,7 +4647,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -4708,7 +4708,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== wrong_pw @@ -4774,7 +4774,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== abc @@ -4847,7 +4847,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -4909,7 +4909,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -4962,7 +4962,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -5062,7 +5062,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -5123,7 +5123,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -5189,7 +5189,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -5247,7 +5247,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -5312,7 +5312,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -5384,7 +5384,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -5454,7 +5454,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -5524,7 +5524,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -5593,7 +5593,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -5663,7 +5663,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -5729,7 +5729,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -5793,7 +5793,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -5871,7 +5871,7 @@ REQUEST: 841936717ae427ace63c28d04918569a841936717ae427ace63c28d0 - + dGVzdCBmYWlsCg== @@ -5953,7 +5953,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -6029,7 +6029,7 @@ REQUEST: AwEAAbuFiHS4jZL7ZQKvEPBmsbceNHTVYpEVMdxz2A6YCjlZTEoAH3qK - + dGVzdCBmYWlsCg== @@ -6131,7 +6131,7 @@ REQUEST: 700b97b591ed27ec2590d19f06f88bba700b97b591ed27ec2590d19f - + dGVzdCBmYWlsCg== @@ -6203,7 +6203,7 @@ REQUEST: 700b97b591ed27ec2590d19f06f88bba700b97b591ed27ec2590d19f - + dGVzdCBmYWlsCg== @@ -6266,7 +6266,7 @@ REQUEST: 49FD46E6C4B45C55D4AC - + dGVzdCBmYWlsCg== @@ -6342,7 +6342,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -6418,7 +6418,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -6481,7 +6481,7 @@ REQUEST: 700b97b591ed27ec2590d19f06f88bba700b97b591ed27ec2590d19f - + dGVzdCBmYWlsCg== @@ -6550,7 +6550,7 @@ REQUEST: 700b97b591ed27ec2590d19f06f88bba700b97b591ed27ec2590d19f - + dGVzdCBmYWlsCg== @@ -6611,7 +6611,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -6679,7 +6679,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -6740,7 +6740,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -6791,7 +6791,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -6832,7 +6832,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -6889,7 +6889,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -7011,7 +7011,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -7052,7 +7052,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -7109,7 +7109,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -7155,7 +7155,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -7196,7 +7196,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -7242,7 +7242,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -7290,7 +7290,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -7383,7 +7383,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -7431,7 +7431,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -7524,7 +7524,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -7572,7 +7572,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -7665,7 +7665,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -7713,7 +7713,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -7806,7 +7806,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -7854,7 +7854,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -7947,7 +7947,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -7995,7 +7995,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -8088,7 +8088,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -8136,7 +8136,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -8229,7 +8229,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -8277,7 +8277,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -8370,7 +8370,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -8418,7 +8418,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -8497,7 +8497,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -8540,7 +8540,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -8599,7 +8599,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -8640,7 +8640,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -8686,7 +8686,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -8727,7 +8727,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -8786,7 +8786,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -8827,7 +8827,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -8873,7 +8873,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -8916,7 +8916,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -8959,7 +8959,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -9045,7 +9045,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -9086,7 +9086,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -9138,7 +9138,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -9184,7 +9184,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -9227,7 +9227,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -9351,7 +9351,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -9437,7 +9437,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -9481,7 +9481,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -9525,7 +9525,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -9622,7 +9622,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -9666,7 +9666,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -9710,7 +9710,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -9754,7 +9754,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -10050,7 +10050,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -10123,7 +10123,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -11231,7 +11231,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -11312,7 +11312,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -11943,7 +11943,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -12023,7 +12023,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -12071,7 +12071,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -12176,7 +12176,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -12224,7 +12224,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -12335,7 +12335,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -12375,7 +12375,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -12415,7 +12415,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -12455,7 +12455,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -12753,7 +12753,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -12996,7 +12996,7 @@ REQUEST: P1D - + dGVzdCBmYWlsCg== 1441791743 @@ -13047,7 +13047,7 @@ REQUEST: P1D - + dGVzdCBmYWlsCg== 1441791744 @@ -13092,7 +13092,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -13171,7 +13171,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -13246,7 +13246,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -13325,7 +13325,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -13403,7 +13403,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -13764,7 +13764,7 @@ RESPONSE: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -13810,7 +13810,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -13858,7 +13858,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -13941,7 +13941,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -13987,7 +13987,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -14035,7 +14035,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -14083,7 +14083,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -14129,7 +14129,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -14177,7 +14177,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -14255,7 +14255,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -14304,7 +14304,7 @@ REQUEST: urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd diff --git a/doc/epp/README.md b/doc/epp/README.md index 6b7b9e116..99ffd07df 100644 --- a/doc/epp/README.md +++ b/doc/epp/README.md @@ -30,9 +30,7 @@ ### .ee-specific * [all-ee-1.0.xsd](/lib/schemas/all-ee-1.0.xsd) * [all-ee-1.1.xsd](/lib/schemas/all-ee-1.1.xsd) -* [all-ee-1.2.xsd](/lib/schemas/all-ee-1.2.xsd) * [eis-1.0.xsd](/lib/schemas/eis-1.0.xsd) -* [ee-1.1.xsd](/lib/schemas/ee-1.1.xsd) * [epp-ee-1.0.xsd](/lib/schemas/epp-ee-1.0.xsd) * [domain-eis-1.0.xsd](/lib/schemas/domain-eis-1.0.xsd) * [contact-eis-1.0.xsd](/lib/schemas/contact-eis-1.0.xsd) diff --git a/doc/epp/contact.md b/doc/epp/contact.md index ca092bd28..dbfdc893f 100644 --- a/doc/epp/contact.md +++ b/doc/epp/contact.md @@ -35,7 +35,7 @@ More info: https://en.wikipedia.org/wiki/Latin_script_in_Unicode 0 Fax is not supported and must be blank or missing 1 E-mail 1 - 1 Attribute: xmlns:eis="https://epp.tld.ee/schema/ee-1.1.xsd" + 1 Attribute: xmlns:eis="https://epp.tld.ee/schema/eis-1.0.xsd" 1 Contact identificator Attribute: "type" "org" # Business registry code @@ -44,7 +44,7 @@ More info: https://en.wikipedia.org/wiki/Latin_script_in_Unicode Attribute: "cc" "EE" # Country code in ISO_3166-1 aplha 2 0-1 Base64 encoded document - Attribute: type="pdf/bdoc/zip/rar/gz/tar/7z" + Attribute: type="pdf/bdoc/ddoc/zip/rar/gz/tar/7z" 0-1 Client transaction id [EXAMPLE REQUEST AND RESPONSE](/doc/epp-examples.md#epp-contact-with-valid-user-create-command-successfully-creates-a-contact) @@ -72,7 +72,7 @@ More info: https://en.wikipedia.org/wiki/Latin_script_in_Unicode 0-1 Required if registrar is not the owner of the contact. 1 Contact password. Attribute: roid="String" 0-1 - 0-1 Attribute: xmlns:eis="https://epp.tld.ee/schema/ee-1.1.xsd" + 0-1 Attribute: xmlns:eis="https://epp.tld.ee/schema/eis-1.0.xsd" 0-1 Contact identificator Attribute: "type" "org" # Business registry code @@ -81,7 +81,7 @@ More info: https://en.wikipedia.org/wiki/Latin_script_in_Unicode Attribute: "cc" "EE" # Country code in ISO_3166-1 aplha 2 0-1 Base64 encoded document. - Attribute: type="pdf/bdoc/zip/rar/gz/tar/7z" + Attribute: type="pdf/bdoc/ddoc/zip/rar/gz/tar/7z" 0-1 Client transaction id @@ -97,9 +97,9 @@ More info: https://en.wikipedia.org/wiki/Latin_script_in_Unicode 0-1 Required if registrar is not the owner of the contact. 1 Contact password. Attribute: roid="String" 0-1 - 0-1 Attribute: xmlns:eis="https://epp.tld.ee/schema/ee-1.1.xsd" + 0-1 Attribute: xmlns:eis="https://epp.tld.ee/schema/eis-1.0.xsd" 0-1 Base64 encoded document. - Attribute: type="pdf/bdoc/zip/rar/gz/tar/7z" + Attribute: type="pdf/bdoc/ddoc/zip/rar/gz/tar/7z" 0-1 Client transaction id [EXAMPLE REQUEST AND RESPONSE](/doc/epp-examples.md#epp-contact-with-valid-user-delete-command-deletes-contact) diff --git a/doc/epp/domain.md b/doc/epp/domain.md index 58edad293..d6c32467d 100644 --- a/doc/epp/domain.md +++ b/doc/epp/domain.md @@ -34,9 +34,9 @@ Domain name mapping protocol short version: 1 Allowed values: 3 1 Allowed values: 3, 5, 6, 7, 8, 10, 13, 14 1 Public key - 1 Attribute: xmlns:eis="https://epp.tld.ee/schema/ee-1.1.xsd" + 1 Attribute: xmlns:eis="https://epp.tld.ee/schema/eis-1.0.xsd" 1 Base64 encoded document. - Attribute: type="pdf/bdoc/zip/rar/gz/tar/7z" + Attribute: type="pdf/bdoc/ddoc/zip/rar/gz/tar/7z" 0-1 0-1 Required if registering a reserved domain 0-1 Client transaction id @@ -83,9 +83,9 @@ Domain name mapping protocol short version: 1 Allowed values: 3 1 Allowed values: 3, 5, 6, 7, 8, 10, 13, 14 1 Public key - 0-1 Attribute: xmlns:eis="https://epp.tld.ee/schema/ee-1.1.xsd" + 0-1 Attribute: xmlns:eis="https://epp.tld.ee/schema/eis-1.0.xsd" 0-1 Base64 encoded document. Required if registrant is changing. - Attribute: type="pdf/bdoc/zip/rar/gz/tar/7z" + Attribute: type="pdf/bdoc/ddoc/zip/rar/gz/tar/7z" 0-1 Client transaction id [EXAMPLE REQUEST AND RESPONSE](/doc/epp-examples.md#epp-domain-with-valid-domain-updates-domain-and-adds-objects) @@ -99,9 +99,9 @@ Domain name mapping protocol short version: Optional attribute: verified="yes/no" 1 Domain name. Can contain unicode characters. 1 - 1 Attribute: xmlns:eis="https://epp.tld.ee/schema/ee-1.1.xsd" + 1 Attribute: xmlns:eis="https://epp.tld.ee/schema/eis-1.0.xsd" 1 Base64 encoded document. - Attribute: type="pdf/bdoc/zip/rar/gz/tar/7z" + Attribute: type="pdf/bdoc/ddoc/zip/rar/gz/tar/7z" 0-1 Client transaction id [EXAMPLE REQUEST AND RESPONSE](/doc/epp-examples.md#epp-domain-with-valid-domain-deletes-domain) @@ -132,9 +132,9 @@ Domain name mapping protocol short version: Must add up to 1 / 2 / 3 years. Attribute: unit="y/m/d" Default value is 1 year. 0-1 - 0-1 Attribute: xmlns:eis="https://epp.tld.ee/schema/ee-1.1.xsd" + 0-1 Attribute: xmlns:eis="https://epp.tld.ee/schema/eis-1.0.xsd" 0-1 Base64 encoded document. - Attribute: type="pdf/bdoc/zip/rar/gz/tar/7z" + Attribute: type="pdf/bdoc/ddoc/zip/rar/gz/tar/7z" 0-1 Client transaction id [EXAMPLE REQUEST AND RESPONSE](/doc/epp-examples.md#epp-domain-with-valid-domain-renews-a-domain) @@ -149,9 +149,9 @@ Domain name mapping protocol short version: 1 1 Domain password. Attribute: roid="String" 0-1 - 0-1 Attribute: xmlns:eis="https://epp.tld.ee/schema/ee-1.1.xsd" + 0-1 Attribute: xmlns:eis="https://epp.tld.ee/schema/eis-1.0.xsd" 0-1 Base64 encoded document. - Attribute: type="pdf/bdoc/zip/rar/gz/tar/7z" + Attribute: type="pdf/bdoc/ddoc/zip/rar/gz/tar/7z" 0-1 Client transaction id [EXAMPLE REQUEST AND RESPONSE](/doc/epp-examples.md#epp-domain-with-valid-domain-transfers-a-domain) diff --git a/lib/schemas/all-ee-1.2.xsd b/lib/schemas/all-ee-1.2.xsd deleted file mode 100644 index b40ffe919..000000000 --- a/lib/schemas/all-ee-1.2.xsd +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - Extensible Provisioning Protocol v1.2 - all schema's grouped together - - - - diff --git a/lib/schemas/contact-ee-1.1.xsd b/lib/schemas/contact-ee-1.1.xsd index 5a8bf8827..6a115bfab 100644 --- a/lib/schemas/contact-ee-1.1.xsd +++ b/lib/schemas/contact-ee-1.1.xsd @@ -12,7 +12,7 @@ --> - + diff --git a/lib/schemas/domain-eis-1.0.xsd b/lib/schemas/domain-eis-1.0.xsd index 374eaf354..edf8676af 100644 --- a/lib/schemas/domain-eis-1.0.xsd +++ b/lib/schemas/domain-eis-1.0.xsd @@ -15,7 +15,7 @@ Import common element types. - + diff --git a/lib/schemas/ee-1.1.xsd b/lib/schemas/ee-1.1.xsd deleted file mode 100644 index 6dca4ccb3..000000000 --- a/lib/schemas/ee-1.1.xsd +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - EIS Extensible Provisioning Protocol v1.1 extension schema. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/spec/requests/epp/contact/create_spec.rb b/spec/requests/epp/contact/create_spec.rb index 5e478b1bf..0f03fd6ac 100644 --- a/spec/requests/epp/contact/create_spec.rb +++ b/spec/requests/epp/contact/create_spec.rb @@ -20,7 +20,7 @@ RSpec.describe 'EPP contact:create' do - + 1234567 dGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCg @@ -98,7 +98,7 @@ RSpec.describe 'EPP contact:create' do - + 123456 dGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCg diff --git a/spec/requests/epp/contact/update_spec.rb b/spec/requests/epp/contact/update_spec.rb index 1c188afeb..cd596dd85 100644 --- a/spec/requests/epp/contact/update_spec.rb +++ b/spec/requests/epp/contact/update_spec.rb @@ -20,7 +20,7 @@ RSpec.describe 'EPP contact:update' do - + dGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCg @@ -82,7 +82,7 @@ RSpec.describe 'EPP contact:update' do - + dGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCgdGVzdCBmYWlsCg diff --git a/spec/requests/epp/domain/create/optional_nameserver_spec.rb b/spec/requests/epp/domain/create/optional_nameserver_spec.rb index 14e37b9e2..0201477a5 100644 --- a/spec/requests/epp/domain/create/optional_nameserver_spec.rb +++ b/spec/requests/epp/domain/create/optional_nameserver_spec.rb @@ -52,7 +52,7 @@ RSpec.describe 'EPP domain:create' do - + #{Base64.encode64('a' * 5000)} @@ -95,7 +95,7 @@ RSpec.describe 'EPP domain:create' do - + #{Base64.encode64('a' * 5000)} diff --git a/spec/requests/epp/domain/create/required_nameserver_spec.rb b/spec/requests/epp/domain/create/required_nameserver_spec.rb index 3f4daa05e..846bff137 100644 --- a/spec/requests/epp/domain/create/required_nameserver_spec.rb +++ b/spec/requests/epp/domain/create/required_nameserver_spec.rb @@ -53,7 +53,7 @@ RSpec.describe 'EPP domain:create' do - + #{Base64.encode64('a' * 5000)} @@ -83,7 +83,7 @@ RSpec.describe 'EPP domain:create' do - + #{Base64.encode64('a' * 5000)} diff --git a/spec/support/requests/session_helpers.rb b/spec/support/requests/session_helpers.rb index 9d8a3efc9..3f75da577 100644 --- a/spec/support/requests/session_helpers.rb +++ b/spec/support/requests/session_helpers.rb @@ -18,7 +18,7 @@ module Requests urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/ee-1.1.xsd + https://epp.tld.ee/schema/eis-1.0.xsd From e89fc62dc1f4355069ac1807205222f440bbc133 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Tue, 31 Jan 2017 14:33:55 +0200 Subject: [PATCH 73/73] Revert "Fix EPP schema" This reverts commit 13a92c98698a826d2232e34e52837a2ff92025ed. --- spec/requests/epp/domain/delete/discarded_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/requests/epp/domain/delete/discarded_spec.rb b/spec/requests/epp/domain/delete/discarded_spec.rb index 91a527890..99ec59267 100644 --- a/spec/requests/epp/domain/delete/discarded_spec.rb +++ b/spec/requests/epp/domain/delete/discarded_spec.rb @@ -11,7 +11,7 @@ RSpec.describe 'EPP domain:delete' do - + dGVzdCBmYWlsCg==