From 78d473f3e660e89c6635f635f345e7f1bddb6bd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karl=20Erik=20=C3=95unapuu?= Date: Thu, 30 Jul 2020 13:10:13 +0300 Subject: [PATCH 1/6] Create tests for jobs triggered by registrant confirmations --- config/application.yml.sample | 1 + test/fixtures/files/legaldoc.pdf | Bin 0 -> 7613 bytes test/jobs/domain_delete_confirm_job_test.rb | 62 +++++++++++++++++--- test/jobs/domain_update_confirm_job_test.rb | 31 ++++++++++ 4 files changed, 86 insertions(+), 8 deletions(-) create mode 100644 test/fixtures/files/legaldoc.pdf diff --git a/config/application.yml.sample b/config/application.yml.sample index 691740b2a..8f71d75d8 100644 --- a/config/application.yml.sample +++ b/config/application.yml.sample @@ -166,6 +166,7 @@ test: lhv_keystore: 'test/fixtures/files/keystore.jks' lhv_keystore_password: 'testtest' lhv_keystore_alias: 'testtest' + legal_documents_dir: 'test/fixtures/files' # Airbrake // Errbit: airbrake_host: "https://your-errbit-host.ee" diff --git a/test/fixtures/files/legaldoc.pdf b/test/fixtures/files/legaldoc.pdf new file mode 100644 index 0000000000000000000000000000000000000000..1ddf7a0e8cd4188cf5af1650ae4745eecf5d1d61 GIT binary patch literal 7613 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 r8tN!GN)xH2rKo|>M8FW*5Df^8ej3^A*-$ie literal 0 HcmV?d00001 diff --git a/test/jobs/domain_delete_confirm_job_test.rb b/test/jobs/domain_delete_confirm_job_test.rb index 51af58c24..b999bd3c7 100644 --- a/test/jobs/domain_delete_confirm_job_test.rb +++ b/test/jobs/domain_delete_confirm_job_test.rb @@ -1,17 +1,11 @@ require "test_helper" class DomainDeleteConfirmJobTest < ActiveSupport::TestCase - def setup - super - + setup do + @legal_doc_path = 'test/fixtures/files/legaldoc.pdf' @domain = domains(:shop) @new_registrant = contacts(:william) @user = users(:api_bestnames) - - @domain.update!(pending_json: { new_registrant_id: @new_registrant.id, - new_registrant_name: @new_registrant.name, - new_registrant_email: @new_registrant.email, - current_user_id: @user.id }) end def teardown @@ -19,6 +13,11 @@ class DomainDeleteConfirmJobTest < ActiveSupport::TestCase end def test_rejected_registrant_verification_notifies_registrar + @domain.update!(pending_json: { new_registrant_id: @new_registrant.id, + new_registrant_name: @new_registrant.name, + new_registrant_email: @new_registrant.email, + current_user_id: @user.id }) + DomainDeleteConfirmJob.enqueue(@domain.id, RegistrantVerification::REJECTED) last_registrar_notification = @domain.registrar.notifications.last @@ -27,10 +26,57 @@ class DomainDeleteConfirmJobTest < ActiveSupport::TestCase end def test_accepted_registrant_verification_notifies_registrar + @domain.update!(pending_json: { new_registrant_id: @new_registrant.id, + new_registrant_name: @new_registrant.name, + new_registrant_email: @new_registrant.email, + current_user_id: @user.id }) + DomainDeleteConfirmJob.enqueue(@domain.id, RegistrantVerification::CONFIRMED) last_registrar_notification = @domain.registrar.notifications.last assert_equal(last_registrar_notification.attached_obj_id, @domain.id) assert_equal(last_registrar_notification.text, 'Registrant confirmed domain deletion: shop.test') end + + def test_marks_domain_as_pending_delete_after_acceptance + epp_xml = "\n\n \n \n" \ + " \n #{@domain.name}\n \n \n \n" \ + " \n #{@legal_doc_path}\n" \ + " \n \n 20alla-1594212240\n \n\n" + + @domain.registrant_verification_asked!(epp_xml, @user.id) + @domain.pending_delete! + @domain.reload + + assert @domain.registrant_delete_confirmable?(@domain.registrant_verification_token) + assert_equal @user.id, @domain.pending_json['current_user_id'] + + DomainDeleteConfirmJob.enqueue(@domain.id, RegistrantVerification::CONFIRMED) + @domain.reload + + assert @domain.statuses.include? DomainStatus::PENDING_DELETE + assert @domain.statuses.include? DomainStatus::SERVER_HOLD + assert_not @domain.statuses.include? DomainStatus::PENDING_DELETE_CONFIRMATION + end + + def test_clears_pending_flags_after_delete_denial + epp_xml = "\n\n \n \n" \ + " \n #{@domain.name}\n \n \n \n" \ + " \n #{@legal_doc_path}\n" \ + " \n \n 20alla-1594212240\n \n\n" + + @domain.registrant_verification_asked!(epp_xml, @user.id) + @domain.pending_delete! + @domain.reload + + assert @domain.registrant_delete_confirmable?(@domain.registrant_verification_token) + assert_equal @user.id, @domain.pending_json['current_user_id'] + + DomainDeleteConfirmJob.enqueue(@domain.id, RegistrantVerification::REJECTED) + @domain.reload + + assert_equal ['ok'], @domain.statuses + assert_not @domain.statuses.include? DomainStatus::PENDING_DELETE_CONFIRMATION + assert_not @domain.statuses.include? DomainStatus::PENDING_DELETE + end end diff --git a/test/jobs/domain_update_confirm_job_test.rb b/test/jobs/domain_update_confirm_job_test.rb index 070b5d5f7..59bbf758d 100644 --- a/test/jobs/domain_update_confirm_job_test.rb +++ b/test/jobs/domain_update_confirm_job_test.rb @@ -7,6 +7,7 @@ class DomainUpdateConfirmJobTest < ActiveSupport::TestCase @domain = domains(:shop) @new_registrant = contacts(:william) @user = users(:api_bestnames) + @legal_doc_path = 'test/fixtures/files/legaldoc.pdf' @domain.update!(pending_json: { new_registrant_id: @new_registrant.id, new_registrant_name: @new_registrant.name, @@ -33,4 +34,34 @@ class DomainUpdateConfirmJobTest < ActiveSupport::TestCase assert_equal(last_registrar_notification.attached_obj_id, @domain.id) assert_equal(last_registrar_notification.text, 'Registrant confirmed domain update: shop.test') end + + def test_changes_domain_registrant_after_approval + epp_xml = "\n\n \n \n \n #{@domain.name}\n" \ + " \n #{@new_registrant.code}\n \n \n \n \n \n" \ + " \n #{@legal_doc_path}\n \n" \ + " \n 20alla-1594199756\n \n\n" + @domain.pending_json['frame'] = epp_xml + @domain.update(pending_json: @domain.pending_json) + + @domain.reload + DomainUpdateConfirmJob.enqueue(@domain.id, RegistrantVerification::CONFIRMED) + @domain.reload + + assert_equal @domain.registrant.code, @new_registrant.code + end + + def test_clears_pending_update_after_denial + epp_xml = "\n\n \n \n \n #{@domain.name}\n" \ + " \n #{@new_registrant.code}\n \n \n \n \n \n" \ + " \n #{@legal_doc_path}\n \n" \ + " \n 20alla-1594199756\n \n\n" + @domain.pending_json['frame'] = epp_xml + @domain.update(pending_json: @domain.pending_json) + + DomainUpdateConfirmJob.enqueue(@domain.id, RegistrantVerification::REJECTED) + @domain.reload + + assert_not @domain.statuses.include? DomainStatus::PENDING_DELETE_CONFIRMATION + assert_not @domain.statuses.include? DomainStatus::PENDING_DELETE + end end From 310e0adac81897d9289d63024699780078d73f37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karl=20Erik=20=C3=95unapuu?= Date: Thu, 30 Jul 2020 16:35:52 +0300 Subject: [PATCH 2/6] Pass whole Customer object to Directo --- app/models/concerns/invoice/book_keeping.rb | 10 +++++++++- app/models/concerns/registrar/book_keeping.rb | 10 +++++++++- test/jobs/directo_invoice_forward_job_test.rb | 9 +++++++++ 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/app/models/concerns/invoice/book_keeping.rb b/app/models/concerns/invoice/book_keeping.rb index 2469f45eb..82e6506c9 100644 --- a/app/models/concerns/invoice/book_keeping.rb +++ b/app/models/concerns/invoice/book_keeping.rb @@ -5,7 +5,7 @@ module Concerns def as_directo_json invoice = ActiveSupport::JSON.decode(ActiveSupport::JSON.encode(self)) - invoice['customer_code'] = buyer.accounting_customer_code + invoice['customer'] = compose_directo_customer invoice['issue_date'] = issue_date.strftime('%Y-%m-%d') invoice['transaction_date'] = account_activity .bank_transaction&.paid_at&.strftime('%Y-%m-%d') @@ -21,6 +21,14 @@ module Concerns subtotal, precision: 2, separator: '.' ) }].as_json end + + def compose_directo_customer + { + 'code': buyer.accounting_customer_code, + 'destination': buyer_country_code, + 'vat_reg_no': buyer_vat_no, + }.as_json + end end end end diff --git a/app/models/concerns/registrar/book_keeping.rb b/app/models/concerns/registrar/book_keeping.rb index 27645d2cb..60b9c2b1a 100644 --- a/app/models/concerns/registrar/book_keeping.rb +++ b/app/models/concerns/registrar/book_keeping.rb @@ -12,7 +12,7 @@ module Concerns invoice = { 'number': 1, - 'customer_code': accounting_customer_code, + 'customer': compose_directo_customer, 'language': language == 'en' ? 'ENG' : '', 'currency': activities.first.currency, 'date': month.end_of_month.strftime('%Y-%m-%d') }.as_json @@ -109,6 +109,14 @@ module Concerns } end + def compose_directo_customer + { + 'code': accounting_customer_code, + 'destination': address_country_code, + 'vat_reg_no': vat_no, + }.as_json + end + def load_price(account_activity) @pricelists ||= {} return @pricelists[account_activity.price_id] if @pricelists.key? account_activity.price_id diff --git a/test/jobs/directo_invoice_forward_job_test.rb b/test/jobs/directo_invoice_forward_job_test.rb index 8a4fb43aa..57b1759ff 100644 --- a/test/jobs/directo_invoice_forward_job_test.rb +++ b/test/jobs/directo_invoice_forward_job_test.rb @@ -14,6 +14,15 @@ class DirectoInvoiceForwardJobTest < ActiveSupport::TestCase Setting.directo_monthly_number_last = 309901 end + def test_directo_json_sends_customer_as_hash + @invoice.update!(buyer_country_code: @user.address_country_code) + + json_output = @invoice.as_directo_json + assert json_output['customer'].is_a? Hash + assert_equal @user.accounting_customer_code, json_output['customer']['code'] + assert_equal @user.address_country_code, json_output['customer']['destination'] + end + def test_xml_is_include_transaction_date @invoice.update(total: @invoice.account_activity.bank_transaction.sum) @invoice.account_activity.bank_transaction.update(paid_at: Time.zone.now) From 59a6251510084360159d27dfeb767409036e33ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karl=20Erik=20=C3=95unapuu?= Date: Mon, 3 Aug 2020 13:00:48 +0300 Subject: [PATCH 3/6] Call valid Job when confirming domain delete action --- .../registrant/domain_delete_confirms_controller.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/controllers/registrant/domain_delete_confirms_controller.rb b/app/controllers/registrant/domain_delete_confirms_controller.rb index ba5dd2ba7..337ca2403 100644 --- a/app/controllers/registrant/domain_delete_confirms_controller.rb +++ b/app/controllers/registrant/domain_delete_confirms_controller.rb @@ -24,9 +24,9 @@ class Registrant::DomainDeleteConfirmsController < RegistrantController confirmed = params[:confirmed] ? true : false action = if confirmed - @registrant_verification.domain_registrant_delete_reject!("email link #{initiator}") - else @registrant_verification.domain_registrant_delete_confirm!("email link #{initiator}") + else + @registrant_verification.domain_registrant_delete_reject!("email link #{initiator}") end fail_msg = t("registrant_domain_delete_#{confirmed ? 'confirmed' : 'rejected'}_failed".to_sym) @@ -36,9 +36,9 @@ class Registrant::DomainDeleteConfirmsController < RegistrantController (render 'show' && return) unless action if confirmed - redirect_to registrant_domain_delete_confirm_path(@domain.id, confirmed: true) && return + redirect_to registrant_domain_delete_confirm_path(@domain.id, confirmed: true) else - redirect_to registrant_domain_delete_confirm_path(@domain.id, rejected: true) unless confirmed + redirect_to registrant_domain_delete_confirm_path(@domain.id, rejected: true) end end end From 1b0c264f547209c59789bf27f9c1ba05ddd36ae5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karl=20Erik=20=C3=95unapuu?= Date: Mon, 3 Aug 2020 13:38:35 +0300 Subject: [PATCH 4/6] Add tests for domain delete confirm UI --- .../domains/domain_delete_confirms_test.rb | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 test/system/registrant_area/domains/domain_delete_confirms_test.rb diff --git a/test/system/registrant_area/domains/domain_delete_confirms_test.rb b/test/system/registrant_area/domains/domain_delete_confirms_test.rb new file mode 100644 index 000000000..fac381dc4 --- /dev/null +++ b/test/system/registrant_area/domains/domain_delete_confirms_test.rb @@ -0,0 +1,32 @@ +require 'application_system_test_case' + +class DomainDeleteConfirmsTest < ApplicationSystemTestCase + setup do + @user = users(:registrant) + sign_in @user + + @domain = domains(:shop) + @domain.registrant_verification_asked!('\n', @user.id) + @domain.pending_delete! + end + + def test_enqueues_approve_job_after_verification + visit registrant_domain_delete_confirm_url(@domain.id, token: @domain.registrant_verification_token) + + click_on 'Confirm domain delete' + assert_text 'Domain registrant change has successfully received.' + + @domain.reload + assert_includes @domain.statuses, 'serverHold' + end + + def test_enqueues_reject_job_after_verification + visit registrant_domain_delete_confirm_url(@domain.id, token: @domain.registrant_verification_token) + + click_on 'Reject domain delete' + assert_text 'Domain registrant change has been rejected successfully.' + + @domain.reload + assert_equal ['ok'], @domain.statuses + end +end From 18337c4f8d26f4eb55c3d3348fba2826f8dc09f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20V=C3=B5hmar?= Date: Mon, 3 Aug 2020 16:24:15 +0300 Subject: [PATCH 5/6] Update CHANGELOG.md --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 59fb46eb4..589ff5bd3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +03.08.2020 +* Fixed 0 vat issue with invoices sent to Directo [#1647](https://github.com/internetee/registry/issues/1647) + 17.07.2020 * Added turemail gem for validating email addresses syntactically and on MX record level [#297](https://github.com/internetee/registry/issues/297) From 6dbdedfa807ec580f618942c417e370c79494df3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20V=C3=B5hmar?= Date: Tue, 4 Aug 2020 14:39:30 +0300 Subject: [PATCH 6/6] Update CHANGELOG.md --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 589ff5bd3..266a820b1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +04.08.2020 +* FIxed registrant verification for domain delete [#1631](https://github.com/internetee/registry/issues/1631) + 03.08.2020 * Fixed 0 vat issue with invoices sent to Directo [#1647](https://github.com/internetee/registry/issues/1647)