blob: 16682a7cf614494ffdc2ea81a4dce7dd9d86ccd9 [file] [log] [blame]
require 'rubygems'
require 'require_relative' if RUBY_VERSION < '1.9'
require_relative './common.rb'
require_relative File.join('..', '..', 'lib', 'deltacloud', 'api.rb')
describe Deltacloud::EC2 do
describe Deltacloud::EC2::ActionHandler do
before do
@handler = Deltacloud::EC2::ActionHandler
end
it 'provides access to mappings' do
@handler.mappings.wont_be_nil
@handler.mappings.must_be_kind_of Hash
end
end
describe Deltacloud::EC2::QueryParser do
before do
@parser = Deltacloud::EC2::QueryParser
end
it 'parse request parameters and assign the action' do
result = @parser.parse({'Action' => 'DescribeAvailabilityZones', 'ZoneName.1' => 'us'}, '1')
result.wont_be_nil
result.must_be_kind_of Deltacloud::EC2::ActionHandler
result.action.wont_be_nil
result.action.must_be_kind_of @parser
result.action.action.must_equal :describe_availability_zones
result.action.request_id.must_equal '1'
result.action.parameters.wont_be_nil
result.action.parameters.must_be_kind_of Hash
result.action.parameters['ZoneName.1'].must_equal 'us'
end
it 'must provide verification for actions' do
result = @parser.parse({'Action' => 'DescribeAvailabilityZones', 'ZoneName.1' => 'us'}, '1')
result.wont_be_nil
result.must_be_kind_of Deltacloud::EC2::ActionHandler
result.action.wont_be_nil
result.action.must_be_kind_of @parser
result.action.valid_actions.wont_be_nil
result.action.valid_actions.must_include :describe_availability_zones
result.action.valid_action?.must_equal true
end
it 'must provide the Deltacloud method for EC2 action' do
result = @parser.parse({'Action' => 'DescribeAvailabilityZones', 'ZoneName.1' => 'us'}, '1')
result.wont_be_nil
result.must_be_kind_of Deltacloud::EC2::ActionHandler
result.deltacloud_method.must_equal :realms
result.deltacloud_method_params[:id].wont_be_nil
result.deltacloud_method_params[:id].must_equal 'us'
end
end
describe Deltacloud::EC2::ResultParser do
before do
@parser = Deltacloud::EC2::QueryParser
@driver = Deltacloud::new(:mock, :user => 'mockuser', :password => 'mockpassword')
def app; Deltacloud::EC2::API; end
end
it 'must perform the EC2 action on Deltacloud driver' do
result = @parser.parse({'Action' => 'DescribeAvailabilityZones', 'ZoneName.1' => 'us'}, '1')
result.wont_be_nil
result.must_be_kind_of Deltacloud::EC2::ActionHandler
result.action.wont_be_nil
result.action.must_be_kind_of @parser
result.must_respond_to :'perform!'
realms = result.perform!(@driver.credentials, @driver.backend)
realms.wont_be_empty
realms.first.must_be_kind_of Deltacloud::Realm
realms.first.id.must_equal 'us'
end
it 'must parse the result of EC2 action to EC2 formatted XML' do
result = @parser.parse({'Action' => 'DescribeAvailabilityZones', 'ZoneName.1' => 'us'}, '1')
result.wont_be_nil
result.must_be_kind_of Deltacloud::EC2::ActionHandler
result.action.wont_be_nil
result.action.must_be_kind_of @parser
result.must_respond_to :'perform!'
result.perform!(@driver.credentials, @driver.backend)
result = Nokogiri::XML(result.to_xml(app))
result.root.name.must_equal 'DescribeAvailabilityZonesResponse'
end
end
end