From d95224cf9c8f9253794089f025b95f8ecca9d5a6 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Tue, 9 Dec 2014 13:49:36 +0200 Subject: [PATCH] Add xml output for epp_request in specs --- lib/tasks/test.rake | 6 ++++++ spec/support/epp.rb | 18 ++++++++++++++++-- spec/support/epp_doc.rb | 22 ++++++++++++++++++++++ 3 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 spec/support/epp_doc.rb diff --git a/lib/tasks/test.rake b/lib/tasks/test.rake index 104270e2a..85540ed36 100644 --- a/lib/tasks/test.rake +++ b/lib/tasks/test.rake @@ -22,6 +22,12 @@ if Rails.env.test? || Rails.env.development? t.rspec_opts = '--tag ~feature' end + desc 'Generate EPP doc from specs' + RSpec::Core::RakeTask.new('test:epp_doc') do |t| + ENV['EPP_DOC'] = 'true' + t.rspec_opts = '--tag epp --require support/epp_doc.rb --format EppDoc' + end + Rake::Task[:default].prerequisites.clear task default: :test diff --git a/spec/support/epp.rb b/spec/support/epp.rb index ceb3fad69..6818d44c5 100644 --- a/spec/support/epp.rb +++ b/spec/support/epp.rb @@ -8,8 +8,16 @@ module Epp 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))) + res = parse_response(server.request(data)) if args.include?(:xml) + if res + log(data, res[:parsed]) + return res + end + + res = parse_response(server.request(read_body(data))) + log(data, res[:parsed]) + return res + rescue => e e end @@ -202,6 +210,12 @@ module Epp xml_params = defaults.deep_merge(xml_params) EppXml::Domain.transfer(xml_params, op) end + + def log(req, res) + return unless ENV['EPP_DOC'] + puts "\nREQUEST: #{Nokogiri(req)}\n" + puts "RESPONSE: #{res}" + end end RSpec.configure do |c| diff --git a/spec/support/epp_doc.rb b/spec/support/epp_doc.rb new file mode 100644 index 000000000..ad485ae63 --- /dev/null +++ b/spec/support/epp_doc.rb @@ -0,0 +1,22 @@ +class EppDoc + RSpec::Core::Formatters.register self, :example_started, :example_passed, :example_failed + + def initialize(output) + @output = output + end + + def example_started(notification) + desc = notification.example.full_description + @output.puts '-' * desc.length + @output.puts desc + @output.puts '-' * desc.length + end + + def example_passed(_example) + @output << "\n\n" + end + + def example_failed(_example) + @output << "\n\n" + end +end