mirror of
https://github.com/internetee/registry.git
synced 2025-07-25 20:18:22 +02:00
Refactor keyrelay helper
This commit is contained in:
parent
0704249330
commit
4116a94c23
4 changed files with 38 additions and 12 deletions
|
@ -18,18 +18,6 @@ module Epp::KeyrelayHelper
|
||||||
def validate_keyrelay_request
|
def validate_keyrelay_request
|
||||||
epp_request_valid?('pubKey', 'flags', 'protocol', 'algorithm', 'name', 'pw')
|
epp_request_valid?('pubKey', 'flags', 'protocol', 'algorithm', 'name', 'pw')
|
||||||
|
|
||||||
if parsed_frame.css('relative').text.present? && parsed_frame.css('absolute').text.present?
|
|
||||||
epp_errors << {
|
|
||||||
code: '2003',
|
|
||||||
msg: I18n.t('only_one_parameter_allowed', param_1: 'relative', param_2: 'absolute')
|
|
||||||
}
|
|
||||||
elsif parsed_frame.css('relative').text.empty? && parsed_frame.css('absolute').text.empty?
|
|
||||||
epp_errors << {
|
|
||||||
code: '2003',
|
|
||||||
msg: I18n.t('required_parameter_missing_choice', param_1: 'relative', param_2: 'absolute')
|
|
||||||
}
|
|
||||||
end
|
|
||||||
|
|
||||||
begin
|
begin
|
||||||
abs_datetime = parsed_frame.css('absolute').text
|
abs_datetime = parsed_frame.css('absolute').text
|
||||||
abs_datetime = DateTime.parse(abs_datetime) if abs_datetime.present?
|
abs_datetime = DateTime.parse(abs_datetime) if abs_datetime.present?
|
||||||
|
|
|
@ -10,10 +10,15 @@ class Keyrelay < ActiveRecord::Base
|
||||||
|
|
||||||
validates :expiry_relative, duration_iso8601: true
|
validates :expiry_relative, duration_iso8601: true
|
||||||
|
|
||||||
|
validate :validate_expiry_relative_xor_expiry_absolute
|
||||||
|
|
||||||
def epp_code_map
|
def epp_code_map
|
||||||
{
|
{
|
||||||
'2005' => [
|
'2005' => [
|
||||||
[:expiry_relative, :unknown_pattern, { value: { obj: 'relative', val: expiry_relative } }]
|
[:expiry_relative, :unknown_pattern, { value: { obj: 'relative', val: expiry_relative } }]
|
||||||
|
],
|
||||||
|
'2003' => [
|
||||||
|
[:base, :only_one_parameter_allowed, { param_1: 'relative', param_2: 'absolute' }]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
@ -33,4 +38,11 @@ class Keyrelay < ActiveRecord::Base
|
||||||
return 'pending'
|
return 'pending'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def validate_expiry_relative_xor_expiry_absolute
|
||||||
|
return if expiry_relative.blank? ^ expiry_absolute.blank?
|
||||||
|
errors.add(:base, I18n.t(:only_one_parameter_allowed, param_1: 'relative', param_2: 'absolute'))
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -206,6 +206,8 @@ en:
|
||||||
|
|
||||||
keyrelay:
|
keyrelay:
|
||||||
attributes:
|
attributes:
|
||||||
|
base:
|
||||||
|
only_one_parameter_allowed: 'Only one parameter allowed: %{param_1} or %{param_2}'
|
||||||
expiry_relative:
|
expiry_relative:
|
||||||
unknown_pattern: 'Expiry relative must be compatible to ISO 8601'
|
unknown_pattern: 'Expiry relative must be compatible to ISO 8601'
|
||||||
|
|
||||||
|
|
|
@ -64,5 +64,29 @@ describe 'EPP Keyrelay', epp: true do
|
||||||
|
|
||||||
expect(zone.messages.queued.count).to eq(0)
|
expect(zone.messages.queued.count).to eq(0)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'does not allow both relative and absolute' do
|
||||||
|
xml = epp_xml.keyrelay({
|
||||||
|
name: { value: 'example.ee' },
|
||||||
|
keyData: {
|
||||||
|
flags: { value: '256' },
|
||||||
|
protocol: { value: '3' },
|
||||||
|
alg: { value: '8' },
|
||||||
|
pubKey: { value: 'cmlraXN0aGViZXN0' }
|
||||||
|
},
|
||||||
|
authInfo: {
|
||||||
|
pw: { value: domain.auth_info }
|
||||||
|
},
|
||||||
|
expiry: {
|
||||||
|
relative: { value: 'P1D' },
|
||||||
|
absolute: { value: '2014-12-23' }
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
response = epp_request(xml, :xml, :elkdata)
|
||||||
|
expect(response[:msg]).to eq('Only one parameter allowed: relative or absolute')
|
||||||
|
|
||||||
|
expect(zone.messages.queued.count).to eq(0)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue