From efa6a5b5ef0f4da33eb9df460ac11bd578ddb957 Mon Sep 17 00:00:00 2001 From: "geemus (Wesley Beary)" Date: Tue, 16 Mar 2010 17:34:06 -0700 Subject: [PATCH] [ec2] add specs/mocks for named ingresses --- .../ec2/authorize_security_group_ingress.rb | 35 +++++++++++-------- .../authorize_security_group_ingress_spec.rb | 12 ++++++- 2 files changed, 32 insertions(+), 15 deletions(-) diff --git a/lib/fog/aws/requests/ec2/authorize_security_group_ingress.rb b/lib/fog/aws/requests/ec2/authorize_security_group_ingress.rb index bfdee4216..648e716e7 100644 --- a/lib/fog/aws/requests/ec2/authorize_security_group_ingress.rb +++ b/lib/fog/aws/requests/ec2/authorize_security_group_ingress.rb @@ -35,15 +35,23 @@ module Fog class Mock - # TODO: handle the GroupName/Source/Source case def authorize_security_group_ingress(options = {}) - if options['GroupName'] && options['SourceSecurityGroupName'] && options['SourceSecurityGroupOwnerId'] - raise MockNotImplemented.new("Contributions welcome!") - else - response = Excon::Response.new - group = @data[:security_groups][options['GroupName']] + response = Excon::Response.new + group = @data[:security_groups][options['GroupName']] + group['ipPermissions'] ||= [] - group['ipPermissions'] ||= [] + if options['GroupName'] && options['SourceSecurityGroupName'] && options['SourceSecurityGroupOwnerId'] + owner = Fog::AWS::Mock.owner_id + ['icmp', 'tcp', 'udp'].each do |protocol| + group['ipPermissions'] << { + 'groups' => [{'groupName' => options['GroupName'], 'userId' => owner}], + 'fromPort' => 1, + 'ipRanges' => [], + 'ipProtocol' => protocol, + 'toPort' => 65535 + } + end + else group['ipPermissions'] << { 'groups' => [], 'fromPort' => options['FromPort'], @@ -51,14 +59,13 @@ module Fog 'ipProtocol' => options['IpProtocol'], 'toPort' => options['ToPort'] } - - response.status = 200 - response.body = { - 'requestId' => Fog::AWS::Mock.request_id, - 'return' => true - } - response end + response.status = 200 + response.body = { + 'requestId' => Fog::AWS::Mock.request_id, + 'return' => true + } + response end end diff --git a/spec/aws/requests/ec2/authorize_security_group_ingress_spec.rb b/spec/aws/requests/ec2/authorize_security_group_ingress_spec.rb index 94c627883..05900ddca 100644 --- a/spec/aws/requests/ec2/authorize_security_group_ingress_spec.rb +++ b/spec/aws/requests/ec2/authorize_security_group_ingress_spec.rb @@ -11,7 +11,7 @@ describe 'EC2.authorize_security_group_ingress' do AWS[:ec2].delete_security_group('fog_security_group') end - it "should return proper attributes" do + it "should return proper attributes for port based ingress" do actual = AWS[:ec2].authorize_security_group_ingress({ 'FromPort' => 80, 'GroupName' => 'fog_security_group', @@ -22,5 +22,15 @@ describe 'EC2.authorize_security_group_ingress' do [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