Save legal document with keyrelay

This commit is contained in:
Martin Lensment 2015-01-29 16:34:01 +02:00
parent c91c9c8ebf
commit efad36929e
4 changed files with 48 additions and 2 deletions

View file

@ -1,4 +1,4 @@
class Epp::KeyrelaysController < EppController
class Epp::KeyrelaysController < EppController
# rubocop: disable Metrics/PerceivedComplexity
# rubocop: disable Metrics/CyclomaticComplexity
def keyrelay

View file

@ -423,7 +423,7 @@ class Epp::EppDomain < Domain
abs_datetime = DateTime.parse(abs_datetime) if abs_datetime.present?
transaction do
kr = keyrelays.create(
kr = keyrelays.build(
pa_date: Time.now,
key_data_flags: parsed_frame.css('flags').text,
key_data_protocol: parsed_frame.css('protocol').text,
@ -436,6 +436,16 @@ class Epp::EppDomain < Domain
accepter: registrar
)
legal_document_data = self.class.parse_legal_document_from_frame(parsed_frame)
if legal_document_data
kr.legal_documents.build(
document_type: legal_document_data[:type],
body: legal_document_data[:body]
)
end
kr.save
return false unless valid?
registrar.messages.create!(

View file

@ -6,6 +6,8 @@ class Keyrelay < ActiveRecord::Base
belongs_to :requester, class_name: 'Registrar'
belongs_to :accepter, class_name: 'Registrar'
has_many :legal_documents, as: :documentable
delegate :name, to: :domain, prefix: true
validates :expiry_relative, duration_iso8601: true

View file

@ -168,4 +168,38 @@ describe 'EPP Keyrelay', epp: true do
@zone.messages.queued.count.should == msg_count
end
it 'saves legal document with keyrelay' do
xml = epp_xml.keyrelay({
name: { value: domain.name },
keyData: {
flags: { value: '256' },
protocol: { value: '3' },
alg: { value: '8' },
pubKey: { value: 'cmlraXN0aGViZXN0' }
},
authInfo: {
pw: { value: domain.auth_info }
},
expiry: {
relative: { value: 'P1D' },
}
}, {
_anonymus: [
legalDocument: {
value: 'JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==',
attrs: { type: 'pdf' }
}
]
})
response = epp_request(xml, :xml, :elkdata)
response[:msg].should == 'Command completed successfully'
docs = Keyrelay.last.legal_documents
docs.count.should == 1
docs.first.body.should == 'JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp=='
docs.first.document_type.should == 'pdf'
end
end