gems/aws-sdk-ec2/spec/resource_spec.rb (197 lines of code) (raw):
# frozen_string_literal: true
require_relative 'spec_helper'
module Aws
module EC2
describe Resource do
let(:client) { Client.new(stub_responses: true) }
let(:ec2) { Resource.new(client: client) }
describe '#images' do
it 'sets max_results parameter when options without image_ids' do
expect(ec2.client).to receive(:describe_images).with(
{
filters: [
{
name: 'image-type',
values: ['machine'],
},
],
max_results: 1000,
}
).and_call_original
ec2.images(
filters: [
{
name: 'image-type',
values: ['machine'],
},
],
).to_a
end
it 'does not set max_results parameter when options with image_ids' do
expect(ec2.client).to receive(:describe_images).with(
{
filters: [
{
name: 'image-type',
values: ['machine'],
},
],
image_ids: ['ami-12345678', 'ami-87654321'],
}
).and_call_original
ec2.images(
filters: [
{
name: 'image-type',
values: ['machine'],
},
],
image_ids: ['ami-12345678', 'ami-87654321'],
).to_a
end
end
describe '#instances' do
it 'sets max_results parameter when options without instance_ids' do
expect(ec2.client).to receive(:describe_instances).with(
{
filters: [
{
name: 'image-id',
values: ['ami-12345678', 'ami-87654321'],
},
],
max_results: 1000,
}
).and_call_original
ec2.instances(
filters: [
{
name: 'image-id',
values: ['ami-12345678', 'ami-87654321'],
},
],
).to_a
end
it 'does not set max_results parameter when options with instance_ids' do
expect(ec2.client).to receive(:describe_instances).with(
{
filters: [
{
name: 'image-id',
values: ['ami-12345678', 'ami-87654321'],
},
],
instance_ids: ['ami-12345678', 'ami-87654321'],
}
).and_call_original
ec2.instances(
filters: [
{
name: 'image-id',
values: ['ami-12345678', 'ami-87654321'],
},
],
instance_ids: ['ami-12345678', 'ami-87654321'],
).to_a
end
end
describe '#snapshots' do
it 'sets max_results parameter when options without snapshot_ids' do
expect(ec2.client).to receive(:describe_snapshots).with(
{
owner_ids: ['self'],
max_results: 1000,
}
).and_call_original
ec2.snapshots(
owner_ids: ['self'],
).to_a
end
it 'does not set max_results parameter when options with snapshot_ids' do
expect(ec2.client).to receive(:describe_snapshots).with(
{
snapshot_ids: [
'snap-12345678',
'snap-87654321',
],
}
).and_call_original
ec2.snapshots(
snapshot_ids: [
'snap-12345678',
'snap-87654321',
],
).to_a
end
end
describe '#volumes' do
it 'sets max_results parameter when options without volume_ids' do
expect(ec2.client).to receive(:describe_volumes).with(
{
filters: [
{
name: 'snapshot-id',
values: ['snap-12345678'],
},
],
max_results: 1000,
}
).and_call_original
ec2.volumes(
filters: [
{
name: 'snapshot-id',
values: ['snap-12345678'],
},
],
).to_a
end
it 'does not set max_results parameter when options with volume_ids' do
expect(ec2.client).to receive(:describe_volumes).with(
{
volume_ids: [
'snap-12345678',
'snap-87654321',
],
}
).and_call_original
ec2.volumes(
volume_ids: [
'snap-12345678',
'snap-87654321',
],
).to_a
end
end
describe '#create_tags' do
it 'returns a batch of created tags, the product of ids and tags' do
tags = ec2.create_tags(
resources: ["i-12345678", "i-87654321"],
tags: [
{ key: 'k1', value: 'v1' },
{ key: 'k2', value: 'v2' },
]
)
expect(tags).to be_kind_of(Tag::Collection)
expect(tags.size).to be(4)
tags.each do |tag|
expect(tag).to be_kind_of(Tag)
expect(tag.client).to be(ec2.client)
end
tags = tags.to_a
expect(tags[0].resource_id).to eq('i-12345678')
expect(tags[0].key).to eq('k1')
expect(tags[0].value).to eq('v1')
expect(tags[1].resource_id).to eq('i-12345678')
expect(tags[1].key).to eq('k2')
expect(tags[1].value).to eq('v2')
expect(tags[2].resource_id).to eq('i-87654321')
expect(tags[2].key).to eq('k1')
expect(tags[2].value).to eq('v1')
expect(tags[3].resource_id).to eq('i-87654321')
expect(tags[3].key).to eq('k2')
expect(tags[3].value).to eq('v2')
end
end
end
end
end