Skip to content

Commit

Permalink
Add command awspec generate directconnect
Browse files Browse the repository at this point in the history
  • Loading branch information
k1LoW committed Nov 18, 2015
1 parent 5033d96 commit d888966
Show file tree
Hide file tree
Showing 5 changed files with 63 additions and 1 deletion.
2 changes: 1 addition & 1 deletion lib/awspec/command/generate.rb
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ def route53_hosted_zone(hosted_zone)
end

types_for_generate_all = %w(
iam_policy cloudwatch_alarm
iam_policy cloudwatch_alarm directconnect
)

types_for_generate_all.each do |type|
Expand Down
1 change: 1 addition & 0 deletions lib/awspec/generator.rb
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
require 'awspec/generator/spec/network_acl'
require 'awspec/generator/spec/route_table'
require 'awspec/generator/spec/subnet'
require 'awspec/generator/spec/directconnect'

# Doc
require 'awspec/generator/doc/type'
Expand Down
33 changes: 33 additions & 0 deletions lib/awspec/generator/spec/directconnect.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
module Awspec::Generator
module Spec
class Directconnect
include Awspec::Helper::Finder
def generate_all
generate_virtual_interface_all
end

def generate_virtual_interface_all
virtual_interfaces = select_virtual_interfaces
virtual_interfaces.empty? && fail('Not Found virtual_interfaces')
ERB.new(virtual_interface_spec_template, nil, '-').result(binding).chomp
end

def virtual_interface_spec_template
template = <<-'EOF'
<% virtual_interfaces.each do |interface| %>
describe directconnect_virtual_interface('<%= interface.virtual_interface_name %>') do
it { should exist }
it { should be_<%= interface.virtual_interface_state %> }
its(:connection_id) { should eq '<%= interface.connection_id %>' }
its(:virtual_interface_id) { should eq '<%= interface.virtual_interface_id %>' }
its(:amazon_address) { should eq '<%= interface.amazon_address %>' }
its(:customer_address) { should eq '<%= interface.customer_address %>' }
its(:virtual_gateway_id) { should eq '<%= interface.virtual_gateway_id %>' }
end
<% end %>
EOF
template
end
end
end
end
5 changes: 5 additions & 0 deletions lib/awspec/helper/finder/directconnect.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,11 @@ def find_virtual_interface(virtual_interface_id)
end
return ret.first if ret.count == 1
end

def select_virtual_interfaces
res = @directconnect_client.describe_virtual_interfaces
res.virtual_interfaces
end
end
end
end
23 changes: 23 additions & 0 deletions spec/generator/spec/directconnect_virtual_interface_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
require 'spec_helper'

describe 'Awspec::Generator::Spec::Directconnect' do
before do
Awspec::Stub.load 'directconnect_virtual_interface'
end
let(:directconnect) { Awspec::Generator::Spec::Directconnect.new }
it 'generate_by_vpc_id generate spec' do
spec = <<-'EOF'
describe directconnect_virtual_interface('my-directconnect-virtual-interface') do
it { should exist }
it { should be_available }
its(:connection_id) { should eq 'dxcon-abcd5fgh' }
its(:virtual_interface_id) { should eq 'dxvif-aabbccdd' }
its(:amazon_address) { should eq '170.252.252.1/30' }
its(:customer_address) { should eq '123.456.789.2/30' }
its(:virtual_gateway_id) { should eq 'vgw-d234e5f6' }
end
EOF
expect(directconnect.generate_all.to_s.gsub(/\n/, "\n")).to eq spec
end
end

0 comments on commit d888966

Please sign in to comment.