diff --git a/lib/fog/dynect/dns.rb b/lib/fog/dynect/dns.rb index ab6cd41d6..c8d30a176 100644 --- a/lib/fog/dynect/dns.rb +++ b/lib/fog/dynect/dns.rb @@ -91,7 +91,7 @@ module Fog response rescue Excon::Errors::HTTPStatusError => error - if @auth_token && error.message =~ /login: Bad or expired credentials/ + if @auth_token && error.message =~ /login: (Bad or expired credentials|inactivity logout)/ @auth_token = nil retry else diff --git a/tests/dynect/requests/dns/dns_tests.rb b/tests/dynect/requests/dns/dns_tests.rb index b489a4fe3..db39d7313 100644 --- a/tests/dynect/requests/dns/dns_tests.rb +++ b/tests/dynect/requests/dns/dns_tests.rb @@ -174,12 +174,20 @@ Shindo.tests('Dynect::dns | DNS requests', ['dynect', 'dns']) do end tests('failure') do - tests("#auth_token with bad credentials").raises(Excon::Errors::BadRequest) do + tests("#auth_token with expired credentials").raises(Excon::Errors::BadRequest) do pending if Fog.mocking? @dns = Fog::DNS[:dynect] @dns.instance_variable_get(:@connection).stub(:request) { raise Excon::Errors::BadRequest.new('Expected(200) <=> Actual(400 Bad Request) request => {:headers=>{"Content-Type"=>"application/json", "API-Version"=>"2.3.1", "Auth-Token"=>"auth-token", "Host"=>"api2.dynect.net:443", "Content-Length"=>0}, :host=>"api2.dynect.net", :mock=>nil, :path=>"/REST/CNAMERecord/domain.com/www.domain.com", :port=>"443", :query=>nil, :scheme=>"https", :expects=>200, :method=>:get} response => #"nginx/0.7.67", "Date"=>"Thu, 08 Sep 2011 20:04:21 GMT", "Content-Type"=>"application/json", "Transfer-Encoding"=>"chunked", "Connection"=>"keep-alive"}, @status=400>') } @dns.instance_variable_get(:@connection).should_receive(:request).exactly(2).times @dns.auth_token end + + tests("#auth_token with inactivity logout").raises(Excon::Errors::BadRequest) do + pending if Fog.mocking? + @dns = Fog::DNS[:dynect] + @dns.instance_variable_get(:@connection).stub(:request) { raise Excon::Errors::BadRequest.new('Expected(200) <=> Actual(400 Bad Request) request => {:headers=>{"Content-Type"=>"application/json", "API-Version"=>"2.3.1", "Auth-Token"=>"auth-token", "Host"=>"api2.dynect.net:443", "Content-Length"=>0}, :host=>"api2.dynect.net", :mock=>nil, :path=>"/REST/CNAMERecord/domain.com/www.domain.com", :port=>"443", :query=>nil, :scheme=>"https", :expects=>200, :method=>:get} response => #"nginx/0.7.67", "Date"=>"Thu, 08 Sep 2011 20:04:21 GMT", "Content-Type"=>"application/json", "Transfer-Encoding"=>"chunked", "Connection"=>"keep-alive"}, @status=400>') } + @dns.instance_variable_get(:@connection).should_receive(:request).exactly(2).times + @dns.auth_token + end end end