mirror of
https://github.com/internetee/registry.git
synced 2025-05-17 09:57:23 +02:00
Use app time zone when calculating valid_to, outzone_at and delete_at domain attributes
#235
This commit is contained in:
parent
8dc65a370f
commit
1cc780f3ce
4 changed files with 86 additions and 15 deletions
|
@ -73,7 +73,6 @@ class Domain < ActiveRecord::Base
|
||||||
end
|
end
|
||||||
|
|
||||||
before_create :generate_auth_info
|
before_create :generate_auth_info
|
||||||
before_create :set_validity_dates
|
|
||||||
before_create -> { self.reserved = in_reserved_list?; nil }
|
before_create -> { self.reserved = in_reserved_list?; nil }
|
||||||
|
|
||||||
before_save :manage_automatic_statuses
|
before_save :manage_automatic_statuses
|
||||||
|
@ -542,13 +541,6 @@ class Domain < ActiveRecord::Base
|
||||||
end
|
end
|
||||||
# rubocop:enable Lint/Loop
|
# rubocop:enable Lint/Loop
|
||||||
|
|
||||||
def set_validity_dates
|
|
||||||
self.registered_at = Time.zone.now
|
|
||||||
self.valid_from = Time.zone.now
|
|
||||||
# we need + 1 day as this is more correct from juridical side
|
|
||||||
self.valid_to = valid_from.utc.beginning_of_day + self.class.convert_period_to_time(period, period_unit) + 1.day
|
|
||||||
end
|
|
||||||
|
|
||||||
# rubocop:disable Metrics/AbcSize
|
# rubocop:disable Metrics/AbcSize
|
||||||
# rubocop:disable Metrics/MethodLength
|
# rubocop:disable Metrics/MethodLength
|
||||||
def set_force_delete
|
def set_force_delete
|
||||||
|
@ -605,8 +597,8 @@ class Domain < ActiveRecord::Base
|
||||||
end
|
end
|
||||||
|
|
||||||
def set_graceful_expired
|
def set_graceful_expired
|
||||||
self.outzone_at = (valid_to + Setting.expire_warning_period.days).utc.beginning_of_day
|
self.outzone_at = valid_to + self.class.expire_warning_period
|
||||||
self.delete_at = (outzone_at + Setting.redemption_grace_period.days).utc.beginning_of_day
|
self.delete_at = outzone_at + self.class.redemption_grace_period
|
||||||
self.statuses |= [DomainStatus::EXPIRED]
|
self.statuses |= [DomainStatus::EXPIRED]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -760,5 +752,13 @@ class Domain < ActiveRecord::Base
|
||||||
kit = PDFKit.new(html)
|
kit = PDFKit.new(html)
|
||||||
kit.to_pdf
|
kit.to_pdf
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def self.expire_warning_period
|
||||||
|
Setting.expire_warning_period.days
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.redemption_grace_period
|
||||||
|
Setting.redemption_grace_period.days
|
||||||
|
end
|
||||||
end
|
end
|
||||||
# rubocop: enable Metrics/ClassLength
|
# rubocop: enable Metrics/ClassLength
|
||||||
|
|
|
@ -53,6 +53,9 @@ class Epp::Domain < Domain
|
||||||
domain = Epp::Domain.new
|
domain = Epp::Domain.new
|
||||||
domain.attributes = domain.attrs_from(frame, current_user)
|
domain.attributes = domain.attrs_from(frame, current_user)
|
||||||
domain.attach_default_contacts
|
domain.attach_default_contacts
|
||||||
|
domain.registered_at = Time.zone.now
|
||||||
|
domain.valid_from = Time.zone.now
|
||||||
|
domain.valid_to = domain.valid_from.beginning_of_day + convert_period_to_time(domain.period, domain.period_unit) + 1.day
|
||||||
domain
|
domain
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -70,11 +70,6 @@ RSpec.describe Domain do
|
||||||
@domain.errors.full_messages.should match_array([])
|
@domain.errors.full_messages.should match_array([])
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'should have correct validity dates' do
|
|
||||||
@domain.outzone_at.should be_nil
|
|
||||||
@domain.delete_at.should be_nil
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'should validate uniqueness of tech contacts' do
|
it 'should validate uniqueness of tech contacts' do
|
||||||
same_contact = Fabricate(:contact, code: 'same_contact')
|
same_contact = Fabricate(:contact, code: 'same_contact')
|
||||||
domain = Fabricate(:domain)
|
domain = Fabricate(:domain)
|
||||||
|
@ -842,6 +837,26 @@ RSpec.describe Domain do
|
||||||
end
|
end
|
||||||
|
|
||||||
RSpec.describe Domain, db: false do
|
RSpec.describe Domain, db: false do
|
||||||
|
describe '::expire_warning_period', db: true do
|
||||||
|
before :example do
|
||||||
|
Setting.expire_warning_period = 1
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'returns expire warning period' do
|
||||||
|
expect(described_class.expire_warning_period).to eq(1.day)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe '::redemption_grace_period', db: true do
|
||||||
|
before :example do
|
||||||
|
Setting.redemption_grace_period = 1
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'returns redemption grace period' do
|
||||||
|
expect(described_class.redemption_grace_period).to eq(1.day)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe '#set_server_hold' do
|
describe '#set_server_hold' do
|
||||||
let(:domain) { described_class.new }
|
let(:domain) { described_class.new }
|
||||||
|
|
||||||
|
@ -858,4 +873,24 @@ RSpec.describe Domain, db: false do
|
||||||
expect(domain.outzone_at).to eq(Time.zone.parse('05.07.2010'))
|
expect(domain.outzone_at).to eq(Time.zone.parse('05.07.2010'))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe '#set_graceful_expired' do
|
||||||
|
let(:domain) { described_class.new }
|
||||||
|
|
||||||
|
before :example do
|
||||||
|
expect(described_class).to receive(:expire_warning_period).and_return(1.day)
|
||||||
|
expect(described_class).to receive(:redemption_grace_period).and_return(2.days)
|
||||||
|
expect(domain).to receive(:valid_to).and_return(Time.zone.parse('05.07.2010 10:30'))
|
||||||
|
|
||||||
|
domain.set_graceful_expired
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'sets :outzone_at to :valid_to + expire warning period' do
|
||||||
|
expect(domain.outzone_at).to eq(Time.zone.parse('06.07.2010 10:30'))
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'sets :delete_at to :outzone_at + redemption grace period' do
|
||||||
|
expect(domain.delete_at).to eq(Time.zone.parse('08.07.2010 10:30'))
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
33
spec/models/epp/domain_spec.rb
Normal file
33
spec/models/epp/domain_spec.rb
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
RSpec.describe Epp::Domain, db: false do
|
||||||
|
describe '::new_from_epp' do
|
||||||
|
let(:domain_blueprint) { described_class.new }
|
||||||
|
subject(:domain) { described_class.new_from_epp(nil, nil) }
|
||||||
|
|
||||||
|
before :example do
|
||||||
|
travel_to Time.zone.parse('05.07.2010')
|
||||||
|
|
||||||
|
domain_blueprint.period = 1
|
||||||
|
domain_blueprint.period_unit = 'y'
|
||||||
|
|
||||||
|
expect(described_class).to receive(:new).and_return(domain_blueprint)
|
||||||
|
expect(domain_blueprint).to receive(:attrs_from).and_return({})
|
||||||
|
expect(domain_blueprint).to receive(:attach_default_contacts)
|
||||||
|
end
|
||||||
|
|
||||||
|
describe 'domain' do
|
||||||
|
it 'has :registered_at set to now' do
|
||||||
|
expect(domain.registered_at).to eq(Time.zone.parse('05.07.2010'))
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'has :valid_from set to now' do
|
||||||
|
expect(domain.valid_from).to eq(Time.zone.parse('05.07.2010'))
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'has :valid_to set to the beginning of next day after :valid_from' do
|
||||||
|
expect(domain.valid_to).to eq(Time.zone.parse('06.07.2011 00:00'))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Add table
Add a link
Reference in a new issue