-
Notifications
You must be signed in to change notification settings - Fork 19
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #2163 from internetee/replace-upd_prohibited-to-ob…
…j_upd_prohibited-for-locked-domains added new task and test for replace new status for locked domains
- Loading branch information
Showing
8 changed files
with
166 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters