diff --git a/.github/workflows/build_deploy_staging.yml b/.github/workflows/build_deploy_staging.yml index 434979e7e..78cc35527 100644 --- a/.github/workflows/build_deploy_staging.yml +++ b/.github/workflows/build_deploy_staging.yml @@ -110,17 +110,22 @@ jobs: export KUBECONFIG=./kubeconfig helm repo add eisrepo https://internetee.github.io/helm-charts/ helm repo update - helm upgrade --install registry-st-"$PR_REF" --set image.tag="$SHORT_TAG",reference="$PR_REF" eisrepo/registry -n registry-staging + helm upgrade --install reg-admin-"$PR_REF" --set image.tag="$SHORT_TAG",reference="$PR_REF" eisrepo/registry-admin -n reg-admin-staging + helm upgrade --install repp-"$PR_REF" --set image.tag="$SHORT_TAG",reference="$PR_REF" eisrepo/registry-epp -n epp + helm upgrade --install reg-api-"$PR_REF" --set image.tag="$SHORT_TAG",reference="$PR_REF" eisrepo/registry-api -n reg-api rm kubeconfig + echo "Setting up URLs" echo "server obs.tld.ee zone pilv.tld.ee - update add registry-"$PR_REF".pilv.tld.ee. 3600 CNAME riigi.pilv.tld.ee. + update add reg-admin-"$PR_REF".pilv.tld.ee. 3600 CNAME riigi.pilv.tld.ee. + update add repp-"$PR_REF".pilv.tld.ee. 3600 CNAME riigi.pilv.tld.ee. + update add reg-api-"$PR_REF".pilv.tld.ee. 3600 CNAME riigi.pilv.tld.ee. send " | nsupdate -k ~/Kgh-runner.infra.tld.ee.+165+27011.key if [ "$?" -eq "0" ]; then - echo "CNAME update success" + echo "CNAME updates were successful" else - echo "CNAME update failed" + echo "CNAME updates failed" fi EOSSH @@ -130,9 +135,13 @@ jobs: NOTIFICATION_URL: ${{ secrets.NOTIFICATION_URL}} run: | curl -i -X POST --data-urlencode 'payload={ - "text": "##### Build and deploy from pull request has been succesful :tada:\n - | Project | Branch | :net: | - |:-----------|:----------------------:|:--------------------------------------:| - | **'$REPO'**|'${{ github.head_ref }}'| https://registry-'$PR_REF'.pilv.tld.ee | + "text": "\n##### A pull request from ['${{ github.head_ref }}'](https://github.com/internetee/registry/pull/'$PR_REF') to master has been deployed :tada:\n + |Service | :net: | + |:------------|:---------------------------------------:| + | **Admin** | https://reg-admin-'$PR_REF'.pilv.tld.ee | + | **repp** | https://repp-'$PR_REF'.pilv.tld.ee | + | **API** | https://reg-api-'$PR_REF'.pilv.tld.ee | + + Please note that the API is only accessible from Riigipilv. " }' $NOTIFICATION_URL \ No newline at end of file diff --git a/.github/workflows/remove_st_after_pr.yml b/.github/workflows/remove_st_after_pr.yml index 9815c9b1c..f204c7a62 100644 --- a/.github/workflows/remove_st_after_pr.yml +++ b/.github/workflows/remove_st_after_pr.yml @@ -2,7 +2,7 @@ name: remove-staging-after-pull-request on: pull_request: - types: [closed] + types: [closed, converted_to_draft, locked] paths-ignore: - 'CHANGELOG.md' - 'README.md' @@ -10,7 +10,7 @@ on: jobs: delete: - if: github.event.pull_request.draft == false + runs-on: ubuntu-20.04 steps: @@ -70,28 +70,35 @@ jobs: bash cd "$REPO"/"$PR_REF" export KUBECONFIG=./kubeconfig - helm delete registry-st-"$PR_REF" -n registry-staging + helm delete reg-admin-"$PR_REF" -n reg-admin-staging + helm delete repp-"$PR_REF" -n epp + helm delete reg-api-"$PR_REF" -n reg-api rm kubeconfig echo "server obs.tld.ee zone pilv.tld.ee - update delete registry-"$PR_REF".pilv.tld.ee. + update delete reg-admin-"$PR_REF".pilv.tld.ee. + update delete repp-"$PR_REF".pilv.tld.ee. + update delete reg-api-"$PR_REF".pilv.tld.ee. send " | nsupdate -k ~/Kgh-runner.infra.tld.ee.+165+27011.key if [ "$?" -eq "0" ]; then - echo "CNAME update success" + echo "CNAME updates were successful" else - echo "CNAME update failed" + echo "CNAME updates failed" fi EOSSH + - name: Notify developers timeout-minutes: 1 env: NOTIFICATION_URL: ${{ secrets.NOTIFICATION_URL}} run: | curl -i -X POST --data-urlencode 'payload={ - "text": "##### Pull request was succesful, it has been merged :bowtie:\n - | Project | Branch | :net: | - |:-----------|:----------------------:|:------------------------------------------:| - | **'$REPO'**|'${{ github.head_ref }}'| ~~https://registry-'$PR_REF'.pilv.tld.ee~~ | + "text": "##### [Pull request](https://github.com/internetee/registry/pull/'$PR_REF') was succesful, it has been merged :bowtie:\n + | Registry | '${{ github.head_ref }}' | + |:-----------|:-------------------------------------------:| + | **Admin** | ~~https://reg-admin-'$PR_REF'.pilv.tld.ee~~ | + | **API** | ~~https://reg-api-'$PR_REF'.pilv.tld.ee~~ | + | **REPP** | ~~https://repp-'$PR_REF'.pilv.tld.ee~~ | " - }' $NOTIFICATION_URL \ No newline at end of file + }' $NOTIFICATION_URL diff --git a/.gitignore b/.gitignore index f09a003dc..3f23f1277 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ /config/application.yml /config/environments/development.rb /config/deploy.rb +/.idea # Do not commit one. Instead, download the latest from https://github.com/internetee/style-guide. .rubocop.yml diff --git a/CHANGELOG.md b/CHANGELOG.md index 62e5a2641..25b20d399 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +23.09.2021 +* Fixed registrant portal link in expiration email templates [#2168](https://github.com/internetee/registry/pull/2168) +* extensionProhibited option for registry lock [#2164](https://github.com/internetee/registry/pull/2164) +* job and tests for updating regsitry lock update orhibited statuses [#2163](https://github.com/internetee/registry/pull/2163) + 21.09.2021 * Registry lock: new serverObjUpdateProhibited status replaces serverUpdateProhibited [#2162](https://github.com/internetee/registry/pull/2162) diff --git a/app/controllers/api/v1/registrant/registry_locks_controller.rb b/app/controllers/api/v1/registrant/registry_locks_controller.rb index a8f420ae5..5c5b8c803 100644 --- a/app/controllers/api/v1/registrant/registry_locks_controller.rb +++ b/app/controllers/api/v1/registrant/registry_locks_controller.rb @@ -8,7 +8,9 @@ module Api before_action :authorized_to_manage_locks? def create - if @domain.apply_registry_lock + extensions_prohibited = params[:extensionsProhibited] + + if @domain.apply_registry_lock(extensions_prohibited: extensions_prohibited.to_s.downcase == 'true') render json: serialized_domain(@domain) else render json: { errors: [{ base: ['Domain cannot be locked'] }] }, diff --git a/app/jobs/replace_upd_to_obj_upd_prohibited_job.rb b/app/jobs/replace_upd_to_obj_upd_prohibited_job.rb new file mode 100644 index 000000000..6df72eb6e --- /dev/null +++ b/app/jobs/replace_upd_to_obj_upd_prohibited_job.rb @@ -0,0 +1,40 @@ +class ReplaceUpdToObjUpdProhibitedJob < ApplicationJob + def perform(rollback: false) + logger.info 'Ran ReplaceUpdToObjUpdProhibitedJob!' + + start_replace_status_for_locked_domains(rollback: rollback) + end + + + def start_replace_status_for_locked_domains(rollback:) + count = 0 + Domain.all.find_in_batches do |domain_batches| + count += domain_batches.count + logger.info "Proccesing #{count} domains of #{Domain.count}" + + domain_batches.each do |domain| + if domain.locked_by_registrant? + process_domain_status_replacment(domain: domain, rollback: rollback) + end + end + + logger.info "Successfully proccesed #{count} domains of #{Domain.count}" + end + end + + private + + def process_domain_status_replacment(domain:, rollback:) + domain.statuses = domain.statuses - ["serverUpdateProhibited"] + ["serverObjUpdateProhibited"] unless rollback + domain.statuses = domain.statuses - ["serverObjUpdateProhibited"] + ["serverUpdateProhibited"] if rollback + if domain.save + logger.info "#{domain.name} has next statuses #{domain.statuses}" + else + logger.warn "#{domain.name} - something goes wrong!" + end + end + + def logger + @logger ||= Logger.new(Rails.root.join('log/replace_upd_to_obj_upd_prohibited.log')) + end +end diff --git a/app/models/concerns/domain/registry_lockable.rb b/app/models/concerns/domain/registry_lockable.rb index f34741a22..716486f35 100644 --- a/app/models/concerns/domain/registry_lockable.rb +++ b/app/models/concerns/domain/registry_lockable.rb @@ -1,7 +1,7 @@ module Domain::RegistryLockable extend ActiveSupport::Concern - LOCK_STATUSES = if Feature.obj_and_extensions_statuses_enabled? + LOCK_STATUSES = if Feature.enable_lock_domain_with_new_statuses? [DomainStatus::SERVER_OBJ_UPDATE_PROHIBITED, DomainStatus::SERVER_DELETE_PROHIBITED, DomainStatus::SERVER_TRANSFER_PROHIBITED].freeze @@ -11,20 +11,26 @@ module Domain::RegistryLockable DomainStatus::SERVER_TRANSFER_PROHIBITED].freeze end - def apply_registry_lock + EXTENSIONS_STATUS = [DomainStatus::SERVER_EXTENSION_UPDATE_PROHIBITED].freeze + + def apply_registry_lock(extensions_prohibited:) return unless registry_lockable? return if locked_by_registrant? transaction do - self.admin_store_statuses_history = self.statuses - self.statuses |= LOCK_STATUSES - self.locked_by_registrant_at = Time.zone.now - alert_registrar_lock_changes!(lock: true) - - save! + apply_statuses_locked_statuses(extensions_prohibited: extensions_prohibited) end end + def apply_statuses_locked_statuses(extensions_prohibited:) + self.statuses |= LOCK_STATUSES + self.statuses |= EXTENSIONS_STATUS if Feature.obj_and_extensions_statuses_enabled? && extensions_prohibited + self.locked_by_registrant_at = Time.zone.now + alert_registrar_lock_changes!(lock: true) + + save! + end + def registry_lockable? (statuses & [DomainStatus::PENDING_DELETE_CONFIRMATION, DomainStatus::PENDING_CREATE, DomainStatus::PENDING_UPDATE, @@ -42,17 +48,23 @@ module Domain::RegistryLockable return unless locked_by_registrant? transaction do - LOCK_STATUSES.each do |domain_status| - statuses.delete([domain_status]) - end - self.locked_by_registrant_at = nil - self.statuses = admin_store_statuses_history || [] - alert_registrar_lock_changes!(lock: false) - - save! + remove_statuses_from_locked_domain end end + def remove_statuses_from_locked_domain + LOCK_STATUSES.each do |domain_status| + statuses.delete([domain_status]) + end + + statuses.delete([EXTENSIONS_STATUS]) if statuses.include? EXTENSIONS_STATUS + self.locked_by_registrant_at = nil + self.statuses = admin_store_statuses_history || [] + alert_registrar_lock_changes!(lock: false) + + save! + end + def alert_registrar_lock_changes!(lock: true) translation = lock ? 'locked' : 'unlocked' registrar.notifications.create!( diff --git a/app/models/feature.rb b/app/models/feature.rb index 098949045..f14eefa4d 100644 --- a/app/models/feature.rb +++ b/app/models/feature.rb @@ -4,4 +4,10 @@ class Feature ENV['obj_and_extensions_prohibited'] || false end + + def self.enable_lock_domain_with_new_statuses? + return false if ENV['enable_lock_domain_with_new_statuses'] == 'false' + + ENV['enable_lock_domain_with_new_statuses'] || false + end end diff --git a/app/models/registrant_user.rb b/app/models/registrant_user.rb index f7e85c5af..57a2f58ab 100644 --- a/app/models/registrant_user.rb +++ b/app/models/registrant_user.rb @@ -23,7 +23,7 @@ class RegistrantUser < User company_register.representation_rights(citizen_personal_code: ident, citizen_country_code: country.alpha3) end - + def contacts(representable: true) Contact.registrant_user_contacts(self, representable: representable) end diff --git a/app/views/mailers/domain_expire_mailer/expired.html.erb b/app/views/mailers/domain_expire_mailer/expired.html.erb index f04301245..cbf5ba94d 100644 --- a/app/views/mailers/domain_expire_mailer/expired.html.erb +++ b/app/views/mailers/domain_expire_mailer/expired.html.erb @@ -9,7 +9,7 @@

Domeeni <%= @domain.name %> registripidaja:

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

Ülevaate kõikidest endaga seotud domeenidest saate registreerija portaalist.

+

Ülevaate kõikidest endaga seotud domeenidest saate registreerija portaalist.

<%= render 'mailers/shared/signatures/signature.et.html' %> @@ -26,7 +26,7 @@

Registrar of the <%= @domain.name %>:

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

You can find an overview of all your domains at the registrant's portal.

+

You can find an overview of all your domains at the registrant's portal.

<%= render 'mailers/shared/signatures/signature.en.html' %> @@ -43,6 +43,6 @@

Pегистратор домена <%= @domain.name %>:

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

Обзор всех связанных с вами доменов можете получить на портале регистратора.

+

Обзор всех связанных с вами доменов можете получить на портале регистратора.

<%= render 'mailers/shared/signatures/signature.ru.html' %> diff --git a/app/views/mailers/domain_expire_mailer/expired.text.erb b/app/views/mailers/domain_expire_mailer/expired.text.erb index 634746493..0f33bd180 100644 --- a/app/views/mailers/domain_expire_mailer/expired.text.erb +++ b/app/views/mailers/domain_expire_mailer/expired.text.erb @@ -9,7 +9,7 @@ Domeeninimi <%= @domain.name %> on aegunud ja ei ole alates <%= @domain.on_hold_ Domeeni <%= @domain.name %> registripidaja: <%= render 'mailers/shared/registrar/registrar.et.text', registrar: @registrar %> -Ülevaate kõikidest endaga seotud domeenidest saate registreerija portaalist https://registrant.internet.ee/registrant/. +Ülevaate kõikidest endaga seotud domeenidest saate registreerija portaalist https://registrant.internet.ee/. <%= render 'mailers/shared/signatures/signature.et.text' %> @@ -26,7 +26,7 @@ If you do not renew the <%= @domain.name %> domain registration, it is deleted a Registrar of the <%= @domain.name %>: <%= render 'mailers/shared/registrar/registrar.en.text', registrar: @registrar %> -You can find an overview of all your domains at the registrant's portal https://registrant.internet.ee/registrant/. +You can find an overview of all your domains at the registrant's portal https://registrant.internet.ee/. <%= render 'mailers/shared/signatures/signature.en.text' %> @@ -43,6 +43,6 @@ You can find an overview of all your domains at the registrant's portal https:// Pегистратор домена <%= @domain.name %>: <%= render 'mailers/shared/registrar/registrar.ru.text', registrar: @registrar %> -Обзор всех связанных с вами доменов можете получить на портале регистратора https://registrant.internet.ee/registrant/ +Обзор всех связанных с вами доменов можете получить на портале регистратора https://registrant.internet.ee/. <%= render 'mailers/shared/signatures/signature.ru.text' %> diff --git a/app/views/mailers/domain_expire_mailer/expired_soft.html.erb b/app/views/mailers/domain_expire_mailer/expired_soft.html.erb index 0bcfc6acd..6ac60651c 100644 --- a/app/views/mailers/domain_expire_mailer/expired_soft.html.erb +++ b/app/views/mailers/domain_expire_mailer/expired_soft.html.erb @@ -9,7 +9,7 @@

Domeeni <%= @domain.name %> registripidaja:

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

Ülevaate kõikidest endaga seotud domeenidest saate registreerija portaalist.

+

Ülevaate kõikidest endaga seotud domeenidest saate registreerija portaalist.

<%= render 'mailers/shared/signatures/signature.et.html' %> @@ -26,7 +26,7 @@

Registrar of the <%= @domain.name %>:

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

You can find an overview of all your domains at the registrant's portal.

+

You can find an overview of all your domains at the registrant's portal.

<%= render 'mailers/shared/signatures/signature.en.html' %> @@ -43,6 +43,6 @@

Pегистратор домена <%= @domain.name %>:

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

Обзор всех связанных с вами доменов можете получить на портале регистратора.

+

Обзор всех связанных с вами доменов можете получить на портале регистратора.

<%= render 'mailers/shared/signatures/signature.ru.html' %> diff --git a/app/views/mailers/domain_expire_mailer/expired_soft.text.erb b/app/views/mailers/domain_expire_mailer/expired_soft.text.erb index 7be32f73b..97ee4207f 100644 --- a/app/views/mailers/domain_expire_mailer/expired_soft.text.erb +++ b/app/views/mailers/domain_expire_mailer/expired_soft.text.erb @@ -9,7 +9,7 @@ Domeeninimi <%= @domain.name %> on aegunud ja ei ole alates <%= @domain.on_hold_ Domeeni <%= @domain.name %> registripidaja: <%= render 'mailers/shared/registrar/registrar.et.html', registrar: @registrar %> -Ülevaate kõikidest endaga seotud domeenidest saate registreerija portaalist https://registrant.internet.ee/registrant/. +Ülevaate kõikidest endaga seotud domeenidest saate registreerija portaalist https://registrant.internet.ee/. <%= render 'mailers/shared/signatures/signature.et.html' %> @@ -26,7 +26,7 @@ If you do not renew the <%= @domain.name %> domain registration, it is deleted a Registrar of the <%= @domain.name %>: <%= render 'mailers/shared/registrar/registrar.en.html', registrar: @registrar %> -You can find an overview of all your domains at the registrant's portal https://registrant.internet.ee/registrant/. +You can find an overview of all your domains at the registrant's portal https://registrant.internet.ee/. <%= render 'mailers/shared/signatures/signature.en.html' %> @@ -43,6 +43,6 @@ You can find an overview of all your domains at the registrant's portal https:// Pегистратор домена <%= @domain.name %>: <%= render 'mailers/shared/registrar/registrar.ru.html', registrar: @registrar %> -Обзор всех связанных с вами доменов можете получить на портале регистратора https://registrant.internet.ee/registrant/. +Обзор всех связанных с вами доменов можете получить на портале регистратора https://registrant.internet.ee/. <%= render 'mailers/shared/signatures/signature.ru.html' %> diff --git a/config/application.yml.sample b/config/application.yml.sample index 7d0cbc864..1da894b5f 100644 --- a/config/application.yml.sample +++ b/config/application.yml.sample @@ -60,6 +60,7 @@ contact_org_enabled: 'false' # legal_document_types: "pdf,asice,sce,asics,scs,adoc,edoc,bdoc,ddoc,zip,rar,gz,tar,7z,odt,doc,docx" # obj_and_extensions_prohibited: 'true' +# enable_lock_domain_with_new_statuses: 'true' # # REGISTRAR configuration (DEPP) diff --git a/lib/tasks/replace_upd_to_obj_upd_prohibited.rake b/lib/tasks/replace_upd_to_obj_upd_prohibited.rake new file mode 100644 index 000000000..54c53f11d --- /dev/null +++ b/lib/tasks/replace_upd_to_obj_upd_prohibited.rake @@ -0,0 +1,22 @@ +require 'benchmark' + +# INSTRUCTIONS: +# The task works as follows, it finds a domain that has a domain lock mark and replaces the status serverUpdateProhibited with serverObjUpdateProhibited +# For run this task it need to type `rake locked_domains:replace_new_status` +# Whole results will saved into log/replace_upd_to_obj_upd_prohibited.log +# It need to make sure before launching that these statuses mean that the domain has a domain lock, otherwise this scanner will not find the required domains. +# Therefore, it is better that the value `enable_lock_domain_with_new_statuses` in the `application.yml` file is commented out or has the status false before starting. After the task has been completed, set the value `enable_lock_domain_with_new_statuses` to true, and then the domain with the following statuses `serverDeleteProhibited, serverTransferProhibited, serverObjUpdateProhibite` will be considered blocked now. + +# If for some reason it need to roll back the result, then this value `enable_lock_domain_with_new_statuses` must be true, and run the command `rake locked_domains:rollback_replacement_new_status` + +namespace :locked_domains do + desc 'Replace serverUpdateProhibited to serverObjUpdateProhibited for locked domains' + task replace_new_status: :environment do + ReplaceUpdToObjUpdProhibitedJob.perform_later + end + + desc 'Replace serverObjUpdateProhibited to serverUpdateProhibited for locked domains' + task rollback_replacement_new_status: :environment do + ReplaceUpdToObjUpdProhibitedJob.perform_later(rollback: true) + end +end diff --git a/test/integration/api/registrant/registrant_api_registry_locks_test.rb b/test/integration/api/registrant/registrant_api_registry_locks_test.rb index 0de47dbc9..3499711a7 100644 --- a/test/integration/api/registrant/registrant_api_registry_locks_test.rb +++ b/test/integration/api/registrant/registrant_api_registry_locks_test.rb @@ -47,7 +47,7 @@ class RegistrantApiRegistryLocksTest < ApplicationIntegrationTest end def test_cannot_lock_an_already_locked_domain - @domain.apply_registry_lock + @domain.apply_registry_lock(extensions_prohibited: false) assert(@domain.locked_by_registrant?) post '/api/v1/registrant/domains/2df2c1a1-8f6a-490a-81be-8bdf29866880/registry_lock', @@ -59,7 +59,7 @@ class RegistrantApiRegistryLocksTest < ApplicationIntegrationTest end def test_can_unlock_a_locked_domain - @domain.apply_registry_lock + @domain.apply_registry_lock(extensions_prohibited: false) delete '/api/v1/registrant/domains/2df2c1a1-8f6a-490a-81be-8bdf29866880/registry_lock', headers: @auth_headers diff --git a/test/jobs/domain_update_confirm_job_test.rb b/test/jobs/domain_update_confirm_job_test.rb index 183fd5cf1..158729ae3 100644 --- a/test/jobs/domain_update_confirm_job_test.rb +++ b/test/jobs/domain_update_confirm_job_test.rb @@ -22,14 +22,14 @@ class DomainUpdateConfirmJobTest < ActiveSupport::TestCase def test_registrant_locked_domain refute @domain.locked_by_registrant? - @domain.apply_registry_lock + @domain.apply_registry_lock(extensions_prohibited: false) assert @domain.locked_by_registrant? assert_equal(@domain.registrar.notifications.last.text, "Domain #{@domain.name} has been locked by registrant") end def test_registrant_unlocked_domain refute @domain.locked_by_registrant? - @domain.apply_registry_lock + @domain.apply_registry_lock(extensions_prohibited: false) assert @domain.locked_by_registrant? @domain.remove_registry_lock refute @domain.locked_by_registrant? diff --git a/test/jobs/replace_upd_to_obj_upd_prohibited_job_test.rb b/test/jobs/replace_upd_to_obj_upd_prohibited_job_test.rb new file mode 100644 index 000000000..16d6ed367 --- /dev/null +++ b/test/jobs/replace_upd_to_obj_upd_prohibited_job_test.rb @@ -0,0 +1,72 @@ +require 'test_helper' + +class ReplaceUpdToObjUpdProhibitedJobTest < ActiveSupport::TestCase + include ActiveJob::TestHelper + + setup do + travel_to Time.zone.parse('2010-07-05') + @domain = domains(:shop) + end + + def test_start_adding_new_status_for_locked_domains + @domain.apply_registry_lock(extensions_prohibited: false) + assert @domain.locked_by_registrant? + + perform_enqueued_jobs do + ReplaceUpdToObjUpdProhibitedJob.perform_later + end + + @domain.reload + assert @domain.statuses.include? "serverObjUpdateProhibited" + end + + def test_start_adding_new_status_for_locked_domains + @domain.apply_registry_lock(extensions_prohibited: false) + assert @domain.locked_by_registrant? + assert @domain.statuses.include? "serverUpdateProhibited" + + # @domain.statuses += ["serverObjUpdateProhibited"] + # @domain.save + # @domain.reload + + # assert @domain.statuses.include? "serverObjUpdateProhibited" + + perform_enqueued_jobs do + ReplaceUpdToObjUpdProhibitedJob.perform_later + end + + @domain.reload + + assert_not @domain.statuses.include? "serverUpdateProhibited" + end + + def test_should_not_added_to_non_locked_domain_with_update_prohibited + @domain.statuses += ["serverUpdateProhibited"] + @domain.save + @domain.reload + assert @domain.statuses.include? "serverUpdateProhibited" + + assert_not @domain.locked_by_registrant? + + perform_enqueued_jobs do + ReplaceUpdToObjUpdProhibitedJob.perform_later + end + + assert_not @domain.statuses.include? "serverObjUpdateProhibited" + end + + def test_should_not_removed_from_non_locked_domain_with_update_prohibited + @domain.statuses += ["serverUpdateProhibited"] + @domain.save + @domain.reload + assert @domain.statuses.include? "serverUpdateProhibited" + + assert_not @domain.locked_by_registrant? + + perform_enqueued_jobs do + ReplaceUpdToObjUpdProhibitedJob.perform_later + end + + assert @domain.statuses.include? "serverUpdateProhibited" + end +end diff --git a/test/lib/serializers/registrant_api/domain_test.rb b/test/lib/serializers/registrant_api/domain_test.rb index 2e68e4293..535aefc3d 100644 --- a/test/lib/serializers/registrant_api/domain_test.rb +++ b/test/lib/serializers/registrant_api/domain_test.rb @@ -16,7 +16,7 @@ class SerializersRegistrantApiDomainTest < ActiveSupport::TestCase assert_not(@json[:locked_by_registrant_at]) travel_to Time.zone.parse('2010-07-05 10:30') - @domain.apply_registry_lock + @domain.apply_registry_lock(extensions_prohibited: false) serializer_for_locked_domain = Serializers::RegistrantApi::Domain.new(@domain.reload) new_json = serializer_for_locked_domain.to_json diff --git a/test/models/domain/domain_version_test.rb b/test/models/domain/domain_version_test.rb index 2139c21c1..4b937e274 100644 --- a/test/models/domain/domain_version_test.rb +++ b/test/models/domain/domain_version_test.rb @@ -31,7 +31,7 @@ class DomainVersionTest < ActiveSupport::TestCase PaperTrail.request.whodunnit = @user.id_role_username assert_difference '@domain.versions.count', 1 do - @domain.apply_registry_lock + @domain.apply_registry_lock(extensions_prohibited: false) end assert_equal(@domain.updator, @user) diff --git a/test/models/domain/registry_lockable_test.rb b/test/models/domain/registry_lockable_test.rb index ed1a7d6f2..d5c801e24 100644 --- a/test/models/domain/registry_lockable_test.rb +++ b/test/models/domain/registry_lockable_test.rb @@ -11,14 +11,14 @@ class DomainRegistryLockableTest < ActiveSupport::TestCase refute(@domain.locked_by_registrant?) @domain.update(statuses: [DomainStatus::SERVER_TRANSFER_PROHIBITED]) - @domain.apply_registry_lock # Raise validation error + @domain.apply_registry_lock(extensions_prohibited: false) # Raise validation error check_statuses_lockable_domain assert(@domain.locked_by_registrant?) end def test_remove_lockalable_statuses_after_admin_intervention - @domain.apply_registry_lock + @domain.apply_registry_lock(extensions_prohibited: false) assert @domain.locked_by_registrant? assert_equal @domain.statuses.sort, Domain::RegistryLockable::LOCK_STATUSES.sort @@ -26,7 +26,7 @@ class DomainRegistryLockableTest < ActiveSupport::TestCase @domain.update(statuses: deleted_status) assert_not @domain.locked_by_registrant? - @domain.apply_registry_lock + @domain.apply_registry_lock(extensions_prohibited: false) assert @domain.locked_by_registrant? @domain.remove_registry_lock @@ -41,7 +41,7 @@ class DomainRegistryLockableTest < ActiveSupport::TestCase @domain.save assert @domain.admin_store_statuses_history.include? DomainStatus::SERVER_UPDATE_PROHIBITED - @domain.apply_registry_lock + @domain.apply_registry_lock(extensions_prohibited: false) assert @domain.locked_by_registrant? assert_equal @domain.statuses.sort, Domain::RegistryLockable::LOCK_STATUSES.sort @@ -52,7 +52,7 @@ class DomainRegistryLockableTest < ActiveSupport::TestCase end def test_add_additinal_status_for_locked_domain - @domain.apply_registry_lock + @domain.apply_registry_lock(extensions_prohibited: false) assert @domain.locked_by_registrant? assert_equal @domain.statuses.sort, Domain::RegistryLockable::LOCK_STATUSES.sort @@ -69,7 +69,7 @@ class DomainRegistryLockableTest < ActiveSupport::TestCase def test_lockable_domain_if_remove_some_prohibited_status refute(@domain.locked_by_registrant?) - @domain.apply_registry_lock + @domain.apply_registry_lock(extensions_prohibited: false) check_statuses_lockable_domain assert(@domain.locked_by_registrant?) @@ -85,7 +85,7 @@ class DomainRegistryLockableTest < ActiveSupport::TestCase def test_registry_lock_on_lockable_domain refute(@domain.locked_by_registrant?) - @domain.apply_registry_lock + @domain.apply_registry_lock(extensions_prohibited: false) assert_equal( [DomainStatus::SERVER_UPDATE_PROHIBITED, @@ -99,21 +99,21 @@ class DomainRegistryLockableTest < ActiveSupport::TestCase end def test_registry_lock_cannot_be_applied_twice - @domain.apply_registry_lock - refute(@domain.apply_registry_lock) + @domain.apply_registry_lock(extensions_prohibited: false) + refute(@domain.apply_registry_lock(extensions_prohibited: false)) assert(@domain.locked_by_registrant?) assert(@domain.locked_by_registrant_at) end def test_registry_lock_cannot_be_applied_on_pending_statuses @domain.statuses << DomainStatus::PENDING_RENEW - refute(@domain.apply_registry_lock) + refute(@domain.apply_registry_lock(extensions_prohibited: false)) refute(@domain.locked_by_registrant?) refute(@domain.locked_by_registrant_at) end def test_remove_registry_lock_on_locked_domain - @domain.apply_registry_lock + @domain.apply_registry_lock(extensions_prohibited: false) assert_equal( [DomainStatus::SERVER_UPDATE_PROHIBITED, diff --git a/test/models/feature_test.rb b/test/models/feature_test.rb index 23fd86171..d910ac140 100644 --- a/test/models/feature_test.rb +++ b/test/models/feature_test.rb @@ -1,6 +1,11 @@ require 'test_helper' class FeatureTest < ActiveSupport::TestCase + setup do + @domain = domains(:shop) + @domain.apply_registry_lock(extensions_prohibited: false) + end + def test_if_obj_and_extensions_prohibited_enabled ENV['obj_and_extensions_prohibited'] = 'true' @@ -27,4 +32,22 @@ class FeatureTest < ActiveSupport::TestCase statuses = DomainStatus.admin_statuses assert_not statuses.include? DomainStatus::SERVER_OBJ_UPDATE_PROHIBITED end + + def test_if_enable_lock_domain_with_new_statuses_is_nil + ENV['enable_lock_domain_with_new_statuses'] = nil + + assert_not Feature.enable_lock_domain_with_new_statuses? + + assert_equal @domain.statuses, ["serverUpdateProhibited", "serverDeleteProhibited", "serverTransferProhibited"] + assert @domain.locked_by_registrant? + end + + def test_if_enable_lock_domain_with_new_statuses_is_false + ENV['enable_lock_domain_with_new_statuses'] = 'false' + + assert_not Feature.enable_lock_domain_with_new_statuses? + + assert_equal @domain.statuses, ["serverUpdateProhibited", "serverDeleteProhibited", "serverTransferProhibited"] + assert @domain.locked_by_registrant? + end end diff --git a/test/system/admin_area/domains/registry_lock_test.rb b/test/system/admin_area/domains/registry_lock_test.rb index 6a34c23b4..659e1fc7d 100644 --- a/test/system/admin_area/domains/registry_lock_test.rb +++ b/test/system/admin_area/domains/registry_lock_test.rb @@ -17,7 +17,7 @@ class AdminAreaRegistryLockTest < JavaScriptApplicationSystemTestCase end def test_can_remove_registry_lock_from_a_domain - @domain.apply_registry_lock + @domain.apply_registry_lock(extensions_prohibited: false) visit edit_admin_domain_path(@domain) click_link_or_button('Actions') @@ -34,7 +34,7 @@ class AdminAreaRegistryLockTest < JavaScriptApplicationSystemTestCase end def test_cannot_remove_registry_lock_from_not_locked_domain - @domain.apply_registry_lock + @domain.apply_registry_lock(extensions_prohibited: false) visit edit_admin_domain_path(@domain) @domain.remove_registry_lock diff --git a/test/system/admin_area/domains_test.rb b/test/system/admin_area/domains_test.rb index 9a59247fe..0fabb0e77 100644 --- a/test/system/admin_area/domains_test.rb +++ b/test/system/admin_area/domains_test.rb @@ -20,7 +20,7 @@ class AdminDomainsTestTest < ApplicationSystemTestCase refute_text 'Registry lock time 2010-07-05 00:30' lockable_domain = domains(:airport) - lockable_domain.apply_registry_lock + lockable_domain.apply_registry_lock(extensions_prohibited: false) visit admin_domain_path(lockable_domain) assert_text 'Registry lock time 2010-07-05 00:30'