require 'ecloud/spec_helper' if Fog.mocking? describe "Fog::Ecloud, initialized w/ the TMRK Ecloud module", :type => :mock_tmrk_ecloud_request do subject { @vcloud } it { should respond_to(:get_catalog_item) } describe "#get_catalog_item" do context "with a valid catalog_item_uri" do before { @catalog_item = @vcloud.get_catalog_item(@vcloud.vdcs.first.catalog.first.href) } subject { @catalog_item } let(:mock_data_catalog_item) { @mock_data.catalog_item_from_href(@catalog_item.body[:href]) } it_should_behave_like "all responses" it { should have_headers_denoting_a_content_type_of("application/vnd.vmware.vcloud.catalogItem+xml") } describe "#body" do subject { @catalog_item.body } it { should have(8).items } it_should_behave_like("it has the standard vcloud v0.8 xmlns attributes") # 3 keys its(:name) { should == "Item 0" } it { should include(:Entity) } it { should include(:Link) } it { should include(:Property) } describe "Entity" do subject { @catalog_item.body[:Entity] } let(:mock_data_catalog_item) { @mock_data.catalog_item_from_href(@catalog_item.body[:href]) } it { should have(3).items } its(:name) { should == mock_data_catalog_item.name } its(:type) { should == "application/vnd.vmware.vcloud.vAppTemplate+xml" } its(:href) { should == mock_data_catalog_item.vapp_template.href } end describe "Link" do subject { @catalog_item.body[:Link] } it { should have(4).items } its(:rel) { should == "down" } its(:href) { should == mock_data_catalog_item.customization.href } its(:name) { should == mock_data_catalog_item.customization.name } its(:type) { should == "application/vnd.tmrk.ecloud.catalogItemCustomizationParameters+xml" } end end end context "with a catalog uri that doesn't exist" do subject { lambda { @vcloud.get_catalog(URI.parse('https://www.fakey.com/api/v0.8/vdc/999/catalog')) } } it_should_behave_like("a request for a resource that doesn't exist") end end end end