From 0595cd7dfbd9e9dca5dd93516a2878dcc8338568 Mon Sep 17 00:00:00 2001 From: Michael Hale Date: Tue, 8 Feb 2011 22:03:06 -0500 Subject: [PATCH] parse the list of zones returned --- lib/fog/dns/parsers/dynect/zone.rb | 23 +++++++++++++++++++++++ lib/fog/dns/requests/dynect/zone.rb | 4 +++- tests/dns/requests/dynect/dns_tests.rb | 8 ++++---- 3 files changed, 30 insertions(+), 5 deletions(-) create mode 100644 lib/fog/dns/parsers/dynect/zone.rb diff --git a/lib/fog/dns/parsers/dynect/zone.rb b/lib/fog/dns/parsers/dynect/zone.rb new file mode 100644 index 000000000..6664ba5ee --- /dev/null +++ b/lib/fog/dns/parsers/dynect/zone.rb @@ -0,0 +1,23 @@ +module Fog + module Parsers + module Dynect + module DNS + + class Zone < Fog::Parsers::Base + + def reset + @response = {"zones" => []} + end + + def end_element(name) + case name + when 'ZoneURI' + @response['zones'] << @value.match(/\/REST\/Zone\/(.+)\//)[1] + end + end + + end + end + end + end +end diff --git a/lib/fog/dns/requests/dynect/zone.rb b/lib/fog/dns/requests/dynect/zone.rb index 62efda217..dcc6dcafd 100644 --- a/lib/fog/dns/requests/dynect/zone.rb +++ b/lib/fog/dns/requests/dynect/zone.rb @@ -3,10 +3,11 @@ module Fog class DNS class Real - # require 'fog/dns/parsers/dynect/session' + require 'fog/dns/parsers/dynect/zone' def zone request( + :parser => Fog::Parsers::Dynect::DNS::Zone.new, :expects => 200, :method => "GET", :path => "Zone", @@ -20,6 +21,7 @@ module Fog response = Excon::Response.new response.status = 200 response.body = { + "zones" => ["example.com"] } response end diff --git a/tests/dns/requests/dynect/dns_tests.rb b/tests/dns/requests/dynect/dns_tests.rb index 5ae624805..9e783f062 100644 --- a/tests/dns/requests/dynect/dns_tests.rb +++ b/tests/dns/requests/dynect/dns_tests.rb @@ -1,15 +1,15 @@ Shindo.tests('Dynect::dns | DNS requests', ['dynect', 'dns']) do - tests( 'success') do - test "start api session" do + tests "success" do + tests "start api session" do response = Dynect[:dns].session returns(true) { response.body['Auth-Token'] =~ /.+=$/ && true } returns(true) { response.body['API-Version'] == "2.3.1" } returns(true) { response.status == 200 } end - test "list zones" do + tests "list zones" do response = Dynect[:dns].zone - returns(true) { response.body['zones'].size > 0 } + returns(true) { response.body['zones'].first =~ /\.com/ && true } returns(true) { response.status == 200 } end end