diff --git a/app/models/concerns/domain/releasable.rb b/app/models/concerns/domain/releasable.rb index 4aa5faa58..12a182b65 100644 --- a/app/models/concerns/domain/releasable.rb +++ b/app/models/concerns/domain/releasable.rb @@ -39,9 +39,12 @@ module Concerns def release if release_to_auction - transaction do + with_lock do + to_stdout "Checking if domain_name is auctionable: #{domain_name.auctionable?}" domain_name.sell_at_auction if domain_name.auctionable? + to_stdout 'Destroying domain' destroy! + to_stdout 'Sending registrar notification' registrar.notifications.create!(text: "#{I18n.t(:domain_deleted)}: #{name}", attached_obj_id: id, attached_obj_type: self.class) @@ -50,6 +53,11 @@ module Concerns discard end end + + def to_stdout(message) + time = Time.zone.now.utc + STDOUT << "#{time} - #{message}\n" unless Rails.env.test? + end end end end diff --git a/app/models/concerns/to_stdout.rb b/app/models/concerns/to_stdout.rb new file mode 100644 index 000000000..2a01ee668 --- /dev/null +++ b/app/models/concerns/to_stdout.rb @@ -0,0 +1,8 @@ +module ToStdout + extend ActiveSupport::Concern + + def to_stdout(message) + time = Time.zone.now.utc + STDOUT << "#{time} - #{message}\n" unless Rails.env.test? + end +end diff --git a/app/models/dns/domain_name.rb b/app/models/dns/domain_name.rb index c1af4d5e7..0daa7bbae 100644 --- a/app/models/dns/domain_name.rb +++ b/app/models/dns/domain_name.rb @@ -2,6 +2,7 @@ module DNS # Namespace is needed, because a class with the same name is defined by `domain_name` gem, # a dependency of `actionmailer`, class DomainName + include ToStdout def initialize(name) @name = name end @@ -36,6 +37,7 @@ module DNS auction = Auction.new auction.domain = name auction.start + to_stdout "Created the auction: #{auction.inspect}" update_whois_from_auction(auction) end @@ -100,7 +102,8 @@ module DNS whois_record = Whois::Record.find_or_create_by!(name: name) do |record| record.json = {} end - + to_stdout "Starting to update WHOIS record #{whois_record.inspect}\n\n"\ + "from auction #{auction.inspect}" whois_record.update_from_auction(auction) end end diff --git a/app/models/whois/record.rb b/app/models/whois/record.rb index 1d827e22a..b4f70c28f 100644 --- a/app/models/whois/record.rb +++ b/app/models/whois/record.rb @@ -1,24 +1,30 @@ module Whois class Record < Whois::Server + include ToStdout self.table_name = 'whois_records' def self.disclaimer Setting.registry_whois_disclaimer end + # rubocop:disable Metrics/AbcSize def update_from_auction(auction) if auction.started? update!(json: { name: auction.domain, status: ['AtAuction'], disclaimer: self.class.disclaimer }) + to_stdout "Updated from auction WHOIS record #{inspect}" elsif auction.no_bids? + to_stdout "Destroying WHOIS record #{inspect}" destroy! elsif auction.awaiting_payment? || auction.payment_received? update!(json: { name: auction.domain, status: ['PendingRegistration'], disclaimer: self.class.disclaimer, registration_deadline: auction.whois_deadline }) + to_stdout "Updated from auction WHOIS record #{inspect}" end end + # rubocop:enable Metrics/AbcSize end end diff --git a/test/models/domain/releasable/auctionable_test.rb b/test/models/domain/releasable/auctionable_test.rb index bb0485f7d..a74f41c90 100644 --- a/test/models/domain/releasable/auctionable_test.rb +++ b/test/models/domain/releasable/auctionable_test.rb @@ -25,6 +25,7 @@ class DomainReleasableAuctionableTest < ActiveSupport::TestCase def test_skips_auction_when_domains_is_blocked assert_equal 'shop.test', @domain.name blocked_domains(:one).update!(name: 'shop.test') + @domain.save!(validate: false) @domain.release @@ -34,6 +35,7 @@ class DomainReleasableAuctionableTest < ActiveSupport::TestCase def test_skips_auction_when_domains_is_reserved assert_equal 'shop.test', @domain.name reserved_domains(:one).update!(name: 'shop.test') + @domain.save!(validate: false) @domain.release @@ -58,7 +60,7 @@ class DomainReleasableAuctionableTest < ActiveSupport::TestCase end end - def test_updates_whois + def test_updates_whois_server @domain.update!(delete_date: '2010-07-04') travel_to Time.zone.parse('2010-07-05')