[ec2] consolidate security group tests

This commit is contained in:
geemus 2010-05-22 16:01:45 -07:00
parent fb7555bfe5
commit 881e7254e6
7 changed files with 128 additions and 179 deletions

View File

@ -1,36 +0,0 @@
require File.dirname(__FILE__) + '/../../../spec_helper'
describe 'EC2.authorize_security_group_ingress' do
describe 'success' do
before(:each) do
AWS[:ec2].create_security_group('fog_security_group', 'a security group for testing fog')
end
after(:each) do
AWS[:ec2].delete_security_group('fog_security_group')
end
it "should return proper attributes for port based ingress" do
actual = AWS[:ec2].authorize_security_group_ingress({
'FromPort' => 80,
'GroupName' => 'fog_security_group',
'IpProtocol' => 'tcp',
'ToPort' => 80,
})
actual.body['requestId'].should be_a(String)
[false, true].should include(actual.body['return'])
end
it "should return proper attributes for named ingress" do
actual = AWS[:ec2].authorize_security_group_ingress({
'GroupName' => 'fog_security_group',
'SourceSecurityGroupName' => 'fog_security_group',
'SourceSecurityGroupOwnerId' => '254056571511'
})
actual.body['requestId'].should be_a(String)
[false, true].should include(actual.body['return'])
end
end
end

View File

@ -1,34 +0,0 @@
require File.dirname(__FILE__) + '/../../../spec_helper'
describe 'EC2.create_security_group' do
describe 'success' do
after(:each) do
AWS[:ec2].delete_security_group('fog_security_group')
end
it "should return proper attributes" do
actual = AWS[:ec2].create_security_group('fog_security_group', 'a security group for testing fog')
actual.body['requestId'].should be_a(String)
[false, true].should include(actual.body['return'])
end
end
describe 'failure' do
before(:each) do
AWS[:ec2].create_security_group('fog_security_group', 'a security group for testing fog')
end
after(:each) do
AWS[:ec2].delete_security_group('fog_security_group')
end
it "should raise a BadRequest error when the security group already exists" do
lambda {
AWS[:ec2].create_security_group('fog_security_group', 'a security group for testing fog')
}.should raise_error(Excon::Errors::BadRequest)
end
end
end

View File

@ -1,26 +0,0 @@
require File.dirname(__FILE__) + '/../../../spec_helper'
describe 'EC2.delete_security_group' do
describe 'success' do
before(:each) do
AWS[:ec2].create_security_group('fog_security_group', 'a security group for testing fog')
end
it "should return proper attributes" do
actual = AWS[:ec2].delete_security_group('fog_security_group')
actual.body['requestId'].should be_a(String)
[false, true].should include(actual.body['return'])
end
end
describe 'failure' do
it "should raise a BadRequest error if the security group does not exist" do
lambda {
AWS[:ec2].delete_security_group('fog_not_a_security_group')
}.should raise_error(Excon::Errors::BadRequest)
end
end
end

View File

@ -1,51 +0,0 @@
require File.dirname(__FILE__) + '/../../../spec_helper'
describe 'EC2.describe_security_groups' do
describe 'success' do
before(:each) do
AWS[:ec2].create_security_group('fog_security_group', 'a security group for testing fog')
end
after(:each) do
AWS[:ec2].delete_security_group('fog_security_group')
end
it "should return proper attributes with no params" do
actual = AWS[:ec2].describe_security_groups
actual.body['requestId'].should be_a(String)
actual.body['securityGroupInfo'].should be_an(Array)
security_group = actual.body['securityGroupInfo'].select do |security_group|
security_group['groupName'] == 'fog_security_group'
end.first
security_group['groupDescription'].should be_a(String)
security_group['groupName'].should be_a(String)
security_group['ownerId'].should be_a(String)
security_group['ipPermissions'].should be_an(Array)
end
it "should return proper attributes with params" do
actual = AWS[:ec2].describe_security_groups('fog_security_group')
actual.body['requestId'].should be_a(String)
actual.body['securityGroupInfo'].should be_an(Array)
security_group = actual.body['securityGroupInfo'].select do |security_group|
security_group['groupName'] == 'fog_security_group'
end.first
security_group['groupDescription'].should be_a(String)
security_group['groupName'].should be_a(String)
security_group['ownerId'].should be_a(String)
security_group['ipPermissions'].should be_an(Array)
end
end
describe 'failure' do
it "should raise a BadRequest error if the security group does not exist" do
lambda {
AWS[:ec2].describe_security_groups('not_a_security_group')
}.should raise_error(Excon::Errors::BadRequest)
end
end
end

View File

@ -1,32 +0,0 @@
require File.dirname(__FILE__) + '/../../../spec_helper'
describe 'EC2.revoke_security_group_ingress' do
describe 'success' do
before(:each) do
AWS[:ec2].create_security_group('fog_security_group', 'a security group for testing fog')
AWS[:ec2].authorize_security_group_ingress({
'FromPort' => 80,
'GroupName' => 'fog_security_group',
'IpProtocol' => 'tcp',
'ToPort' => 80
})
end
after(:each) do
AWS[:ec2].delete_security_group('fog_security_group')
end
it "should return proper attributes" do
actual = AWS[:ec2].revoke_security_group_ingress({
'FromPort' => 80,
'GroupName' => 'fog_security_group',
'IpProtocol' => 'tcp',
'ToPort' => 80
})
actual.body['requestId'].should be_a(String)
[false, true].should include(actual.body['return'])
end
end
end

View File

@ -46,6 +46,22 @@ module AWS
'return' => ::Fog::Boolean
}
SECURITY_GROUPS = {
'requestId' => String,
'securityGroupInfo' => [{
'groupDescription' => String,
'groupName' => String,
'ipPermissions' => [{
'fromPort' => Integer,
'groups' => [{ 'groupName' => String, 'userId' => String }],
'ipProtocol' => String,
'ipRanges' => [],
'toPort' => Integer,
}],
'ownerId' => String
}]
}
SNAPSHOT = {
'description' => NilClass,
'ownerId' => String,

View File

@ -0,0 +1,112 @@
Shindo.tests('AWS::EC2 | security group requests', ['aws']) do
@owner_id = AWS[:ec2].describe_security_groups('default').body['securityGroupInfo'].first['ownerId']
tests('success') do
tests("#create_security_group('fog_security_group', 'tests group')").formats(AWS::EC2::Formats::BASIC) do
AWS[:ec2].create_security_group('fog_security_group', 'tests group').body
end
tests("#authorize_security_group_ingress({'FromPort' => 80, 'GroupName' => 'fog_security_group', 'IpProtocol' => 'tcp', 'toPort' => 80})").formats(AWS::EC2::Formats::BASIC) do
AWS[:ec2].authorize_security_group_ingress({
'FromPort' => 80,
'GroupName' => 'fog_security_group',
'IpProtocol' => 'tcp',
'ToPort' => 80,
}).body
end
tests("#authorize_security_group_ingress({'GroupName' => 'fog_security_group', 'SourceSecurityGroupName' => 'fog_security_group', 'SourceSecurityGroupOwnerId' => '#{@owner_id}'})").formats(AWS::EC2::Formats::BASIC) do
AWS[:ec2].authorize_security_group_ingress({
'GroupName' => 'fog_security_group',
'SourceSecurityGroupName' => 'fog_security_group',
'SourceSecurityGroupOwnerId' => @owner_id
}).body
end
tests("#describe_security_groups").formats(AWS::EC2::Formats::SECURITY_GROUPS) do
AWS[:ec2].describe_security_groups.body
end
tests("#describe_security_groups('fog_security_group')").formats(AWS::EC2::Formats::SECURITY_GROUPS) do
AWS[:ec2].describe_security_groups('fog_security_group').body
end
tests("#revoke_security_group_ingress({'FromPort' => 80, 'GroupName' => 'fog_security_group', 'IpProtocol' => 'tcp', 'toPort' => 80})").formats(AWS::EC2::Formats::BASIC) do
AWS[:ec2].revoke_security_group_ingress({
'FromPort' => 80,
'GroupName' => 'fog_security_group',
'IpProtocol' => 'tcp',
'ToPort' => 80,
}).body
end
tests("#revoke_security_group_ingress({'GroupName' => 'fog_security_group', 'SourceSecurityGroupName' => 'fog_security_group', 'SourceSecurityGroupOwnerId' => '#{@owner_id}'})").formats(AWS::EC2::Formats::BASIC) do
AWS[:ec2].revoke_security_group_ingress({
'GroupName' => 'fog_security_group',
'SourceSecurityGroupName' => 'fog_security_group',
'SourceSecurityGroupOwnerId' => @owner_id
}).body
end
tests("#delete_security_group('fog_security_group')").formats(AWS::EC2::Formats::BASIC) do
AWS[:ec2].delete_security_group('fog_security_group').body
end
end
tests('failure') do
@security_group = AWS[:ec2].security_groups.create(:description => 'tests group', :name => 'fog_security_group')
tests("duplicate #create_security_group(#{@security_group.name}, #{@security_group.description})").raises(Excon::Errors::BadRequest) do
AWS[:ec2].create_security_group(@security_group.name, @security_group.description)
end
tests("#authorize_security_group_ingress({'FromPort' => 80, 'GroupName' => 'not_a_group_name', 'IpProtocol' => 'tcp', 'toPort' => 80})").raises(Excon::Errors::BadRequest) do
AWS[:ec2].authorize_security_group_ingress({
'FromPort' => 80,
'GroupName' => 'not_a_group_name',
'IpProtocol' => 'tcp',
'ToPort' => 80,
})
end
tests("#authorize_security_group_ingress({'GroupName' => 'not_a_group_name', 'SourceSecurityGroupName' => 'not_a_group_name', 'SourceSecurityGroupOwnerId' => '#{@owner_id}'})").raises(Excon::Errors::BadRequest) do
AWS[:ec2].authorize_security_group_ingress({
'GroupName' => 'not_a_group_name',
'SourceSecurityGroupName' => 'not_a_group_name',
'SourceSecurityGroupOwnerId' => @owner_id
})
end
tests("#describe_security_group('not_a_group_name)").raises(Excon::Errors::BadRequest) do
AWS[:ec2].describe_security_groups('not_a_group_name')
end
tests("#revoke_security_group_ingress({'FromPort' => 80, 'GroupName' => 'not_a_group_name', 'IpProtocol' => 'tcp', 'toPort' => 80})").raises(Excon::Errors::BadRequest) do
AWS[:ec2].revoke_security_group_ingress({
'FromPort' => 80,
'GroupName' => 'not_a_group_name',
'IpProtocol' => 'tcp',
'ToPort' => 80,
})
end
tests("#revoke_security_group_ingress({'GroupName' => 'not_a_group_name', 'SourceSecurityGroupName' => 'not_a_group_name', 'SourceSecurityGroupOwnerId' => '#{@owner_id}'})").raises(Excon::Errors::BadRequest) do
AWS[:ec2].revoke_security_group_ingress({
'GroupName' => 'not_a_group_name',
'SourceSecurityGroupName' => 'not_a_group_name',
'SourceSecurityGroupOwnerId' => @owner_id
})
end
tests("#delete_security_group('not_a_group_name')").raises(Excon::Errors::BadRequest) do
AWS[:ec2].delete_security_group('not_a_group_name')
end
@security_group.destroy
end
end