internetee-registry/spec/support/epp.rb
2014-11-03 18:13:32 +02:00

70 lines
1.6 KiB
Ruby

module Epp
def read_body(filename)
File.read("spec/epp/requests/#{filename}")
end
# handles connection and login automatically
def epp_request(data, *args)
server = server_zone
server = server_elkdata if args.include?(:elkdata)
return parse_response(server.request(data)) if args.include?(:xml)
return parse_response(server.request(read_body(data)))
rescue => e
e
end
def epp_plain_request(data, *args)
server = server_gitlab
server = server_elkdata if args.include?(:elkdata)
server = server_zone if args.include?(:zone)
return parse_response(server.send_request(data)) if args.include?(:xml)
return parse_response(server.send_request(read_body(data)))
rescue => e
e
end
def parse_response(raw)
res = Nokogiri::XML(raw)
obj = {
results: [],
clTRID: res.css('epp trID clTRID').text,
parsed: res.remove_namespaces!,
raw: raw
}
res.css('epp response result').each do |x|
obj[:results] << { result_code: x[:code], msg: x.css('msg').text, value: x.css('value > *').try(:first).try(:text) }
end
obj[:result_code] = obj[:results][0][:result_code]
obj[:msg] = obj[:results][0][:msg]
obj
end
# print output
def po(r)
puts r[:parsed].to_s
end
### REQUEST TEMPLATES ###
def domain_transfer_xml(xml_params = {}, op = 'query')
defaults = {
name: { value: 'example.ee' },
authInfo: {
pw: { value: '98oiewslkfkd', attrs: { roid: 'JD1234-REP' } }
}
}
xml_params = defaults.deep_merge(xml_params)
EppXml::Domain.transfer(xml_params, op)
end
end
RSpec.configure do |c|
c.include Epp, epp: true
end