awspec 0.6.4 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f11f570bd3baccbf168acca89a9c971997a96d66
4
- data.tar.gz: 096afe67126b842e80dbf9f9b9816835c6f3e32c
3
+ metadata.gz: 37bdea5e957ae058dcbe8cd39b0aea104eb7b351
4
+ data.tar.gz: 7aeaef96ed3d595a3b767d36375d5f2ffa7ba61c
5
5
  SHA512:
6
- metadata.gz: de14b836c23172c9eae094c98526c9bf60e3d630ff93f3eb9de814aae716991430cb6db6f1f890736ef59603ff0e7cdbc679eca4e83b4e41bb86e88d44ee9805
7
- data.tar.gz: 59be9e42e0934b1ffcf9b92d592277aeaf2aab25361cfe92e4bcbb3149e435073e0c8d9e4f1db600f2f7a5d9b8fd6d7ccf678640dbd7b41b170197ede1e4c84c
6
+ metadata.gz: e3c16ac71245320c4be9b6007e924bee29843cdebcfa6c5a41438b89ad4d4d8553dc1d1b49ce8df807d2bad614c5f7fa4ee417d04d13200a6122c9a0757f9b48
7
+ data.tar.gz: a83b4e57e8630d812cad45aaa94584cbea73a0b630a7ef103fe7363e9154274d313a10762bb2aff86295b89988f93c9ebf1e7bf278a3edd923c5869e338420cc
data/README.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  RSpec tests for your AWS resources.
4
4
 
5
+ [Resource Types](doc/resource_types.md)
6
+
5
7
  ## Installation
6
8
 
7
9
  Add this line to your application's Gemfile:
@@ -89,6 +91,7 @@ $ awspec generate ec2 vpc-ab123cde >> spec/ec2_spec.rb
89
91
  - [x] RouteTable (`route_table`)
90
92
  - [x] EBS Volume (`ebs`)
91
93
  - [x] ELB (`elb`)
94
+ - [x] Lambda (`lambda`)
92
95
 
93
96
  [Resource Types more infomation here](doc/resource_types.md)
94
97
 
@@ -98,11 +101,6 @@ $ awspec generate ec2 vpc-ab123cde >> spec/ec2_spec.rb
98
101
  - [ ] IAM User
99
102
  - ...
100
103
 
101
- ## TODO
102
-
103
- - [x] Comment format for Document generation
104
- - [x] Spec generate command
105
-
106
104
  ## Contributing
107
105
 
108
106
  1. Fork it ( https://github.com/k1LoW/awspec/fork )
@@ -114,9 +112,9 @@ $ awspec generate ec2 vpc-ab123cde >> spec/ec2_spec.rb
114
112
  ### How to add new resource type (ex. Redshift resource)
115
113
 
116
114
  1. Create your feature branch (`git checkout -b add-type-redshift`)
117
- 2. Generate template files (`bundle exec awspec/bin/toolbox template redshift`)
115
+ 2. Generate template files (`bundle exec ./lib/awspec/bin/toolbox template redshift`)
118
116
  3. Fill files with code.
119
- 4. Generate [doc/resource_types.md](doc/resource_types.md) (`bundle exec awspec/bin/toolbox docgen > doc/resource_type.md`)
117
+ 4. Generate [doc/resource_types.md](doc/resource_types.md) (`bundle exec ./lib/awspec/bin/toolbox docgen > doc/resource_type.md`)
120
118
  5. Run test (`bundle exec rake spec`)
121
119
  6. Push to the branch (`git push origin add-type-redshift`)
122
120
  7. Create a new Pull Request
@@ -0,0 +1,3 @@
1
+ ### have_event_source
2
+
3
+ This matcher does not support Amazon S3 event sources. ( [See SDK doc](http://docs.aws.amazon.com/sdkforruby/api/Aws/Lambda/Client.html#list_event_source_mappings-instance_method) )
@@ -12,6 +12,7 @@
12
12
  | [route_table](#route_table)
13
13
  | [ebs](#ebs)
14
14
  | [elb](#elb)
15
+ | [lambda](#lambda)
15
16
 
16
17
  ## <a name="ec2">ec2</a>
17
18
 
@@ -256,3 +257,14 @@ end
256
257
  ### belong_to_vpc
257
258
 
258
259
  #### its(:health_check_target), its(:health_check_interval), its(:health_check_timeout), its(:health_check_unhealthy_threshold), its(:health_check_healthy_threshold), its(:load_balancer_name), its(:dns_name), its(:canonical_hosted_zone_name), its(:canonical_hosted_zone_name_id), its(:vpc_id), its(:created_time), its(:scheme)
260
+ ## <a name="lambda">lambda</a>
261
+
262
+ Lambda resource type.
263
+
264
+ ### exist
265
+
266
+ ### have_event_source
267
+
268
+ This matcher does not support Amazon S3 event sources. ( [See SDK doc](http://docs.aws.amazon.com/sdkforruby/api/Aws/Lambda/Client.html#list_event_source_mappings-instance_method) )
269
+
270
+ #### its(:function_name), its(:function_arn), its(:runtime), its(:role), its(:handler), its(:code_size), its(:description), its(:timeout), its(:memory_size), its(:last_modified)
@@ -0,0 +1,17 @@
1
+ module Awspec::Generator
2
+ module Doc
3
+ module Type
4
+ class Lambda < Base
5
+ def initialize
6
+ super
7
+ @type_name = 'Lambda'
8
+ @type = Awspec::Type::Lambda.new('my-lambda-function-name')
9
+ @ret = @type.function
10
+ @matchers = []
11
+ @ignore_matchers = []
12
+ @describes = []
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -8,6 +8,7 @@ require 'awspec/helper/finder/s3'
8
8
  require 'awspec/helper/finder/auto_scaling'
9
9
  require 'awspec/helper/finder/ebs'
10
10
  require 'awspec/helper/finder/elb'
11
+ require 'awspec/helper/finder/lambda'
11
12
 
12
13
  module Awspec::Helper
13
14
  module Finder
@@ -21,6 +22,7 @@ module Awspec::Helper
21
22
  include Awspec::Helper::Finder::AutoScaling
22
23
  include Awspec::Helper::Finder::Ebs
23
24
  include Awspec::Helper::Finder::Elb
25
+ include Awspec::Helper::Finder::Lambda
24
26
 
25
27
  # rubocop:disable all
26
28
  def initialize(id = nil)
@@ -30,6 +32,7 @@ module Awspec::Helper
30
32
  @s3_client = Aws::S3::Client.new
31
33
  @auto_scaling_client = Aws::AutoScaling::Client.new
32
34
  @elb_client = Aws::ElasticLoadBalancing::Client.new
35
+ @lambda_client = Aws::Lambda::Client.new
33
36
  end
34
37
  end
35
38
  end
@@ -0,0 +1,31 @@
1
+ module Awspec::Helper
2
+ module Finder
3
+ module Lambda
4
+ def find_lambda(id)
5
+ functions = []
6
+ marker = nil
7
+ loop do
8
+ res = @lambda_client.list_functions(
9
+ marker: marker
10
+ )
11
+ marker = res.next_marker
12
+ break if res.functions.empty?
13
+ res.functions.each do |function|
14
+ if function.function_name == id || function.function_arn == id
15
+ functions.push(function)
16
+ end
17
+ end
18
+ break unless marker
19
+ end
20
+ return functions[0] if functions.count == 1
21
+ end
22
+
23
+ def select_event_source_by_function_arn(function_arn)
24
+ res = @lambda_client.list_event_source_mappings({
25
+ function_name: function_arn
26
+ })
27
+ res[:event_source_mappings]
28
+ end
29
+ end
30
+ end
31
+ end
@@ -4,7 +4,7 @@ module Awspec
4
4
  TYPES = %w(
5
5
  base ec2 rds rds_db_parameter_group security_group
6
6
  vpc s3 route53_hosted_zone auto_scaling_group subnet
7
- route_table ebs elb
7
+ route_table ebs elb lambda
8
8
  )
9
9
 
10
10
  TYPES.each do |type|
@@ -0,0 +1,18 @@
1
+ Aws.config[:lambda] = {
2
+ stub_responses: {
3
+ list_functions: {
4
+ functions: [
5
+ {
6
+ function_name: 'my-lambda-function-name',
7
+ function_arn: 'arn:aws:lambda:us-east-1:123456789012:function:my-lambda-function-name',
8
+ runtime: 'nodejs',
9
+ timeout: 5,
10
+ memory_size: 256
11
+ }
12
+ ]
13
+ },
14
+ list_event_source_mappings: {
15
+ # @todo
16
+ }
17
+ }
18
+ }
@@ -0,0 +1,31 @@
1
+ module Awspec::Type
2
+ class Lambda < Base
3
+ attr_reader :function
4
+
5
+ def initialize(id)
6
+ super
7
+ @function = find_lambda(id)
8
+ @id = @function[:function_arn] if @function
9
+ end
10
+
11
+ def method_missing(name)
12
+ describe = name.to_sym
13
+ if @function.members.include?(describe)
14
+ @function[describe]
15
+ else
16
+ super
17
+ end
18
+ end
19
+
20
+ def timeout
21
+ @function[:timeout]
22
+ end
23
+
24
+ def has_event_source?(event_source_arn)
25
+ sources = select_event_source_by_function_arn(@id)
26
+ sources.find do |source|
27
+ source.event_source_arn == event_source_arn
28
+ end
29
+ end
30
+ end
31
+ end
@@ -1,3 +1,3 @@
1
1
  module Awspec
2
- VERSION = '0.6.4'
2
+ VERSION = '0.7.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: awspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.4
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - k1LoW
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-24 00:00:00.000000000 Z
11
+ date: 2015-08-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -142,6 +142,7 @@ files:
142
142
  - bin/awspec
143
143
  - doc/_resource_types/ec2.md
144
144
  - doc/_resource_types/elb.md
145
+ - doc/_resource_types/lambda.md
145
146
  - doc/_resource_types/rds_db_parameter_group.md
146
147
  - doc/_resource_types/security_group.md
147
148
  - doc/resource_types.md
@@ -159,6 +160,7 @@ files:
159
160
  - lib/awspec/generator/doc/type/ebs.rb
160
161
  - lib/awspec/generator/doc/type/ec2.rb
161
162
  - lib/awspec/generator/doc/type/elb.rb
163
+ - lib/awspec/generator/doc/type/lambda.rb
162
164
  - lib/awspec/generator/doc/type/rds.rb
163
165
  - lib/awspec/generator/doc/type/rds_db_parameter_group.rb
164
166
  - lib/awspec/generator/doc/type/route53_hosted_zone.rb
@@ -180,6 +182,7 @@ files:
180
182
  - lib/awspec/helper/finder/ebs.rb
181
183
  - lib/awspec/helper/finder/ec2.rb
182
184
  - lib/awspec/helper/finder/elb.rb
185
+ - lib/awspec/helper/finder/lambda.rb
183
186
  - lib/awspec/helper/finder/rds.rb
184
187
  - lib/awspec/helper/finder/route53.rb
185
188
  - lib/awspec/helper/finder/s3.rb
@@ -199,6 +202,7 @@ files:
199
202
  - lib/awspec/stub/ebs.rb
200
203
  - lib/awspec/stub/ec2.rb
201
204
  - lib/awspec/stub/elb.rb
205
+ - lib/awspec/stub/lambda.rb
202
206
  - lib/awspec/stub/rds.rb
203
207
  - lib/awspec/stub/rds_db_parameter_group.rb
204
208
  - lib/awspec/stub/route53_hosted_zone.rb
@@ -213,6 +217,7 @@ files:
213
217
  - lib/awspec/type/ebs.rb
214
218
  - lib/awspec/type/ec2.rb
215
219
  - lib/awspec/type/elb.rb
220
+ - lib/awspec/type/lambda.rb
216
221
  - lib/awspec/type/rds.rb
217
222
  - lib/awspec/type/rds_db_parameter_group.rb
218
223
  - lib/awspec/type/route53_hosted_zone.rb