[ec2] consolidate security group tests
This commit is contained in:
parent
fb7555bfe5
commit
881e7254e6
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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,
|
||||
|
|
|
@ -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
|
Loading…
Reference in New Issue