aws-int-test-rspec-helper 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 18cfb8f5bdd33b5ecfaa572e2afef3a4918fa37f
4
+ data.tar.gz: bfee8357072e8c882915e3ae0e262b9498b3eac8
5
+ SHA512:
6
+ metadata.gz: a938fa30a7e6cd510b4393a41e5e694166bb3471b5141befe6522c484a55d2fb3344da0022e236766619a14ff326751df9233cb2c87798d3454a20ed96138f65
7
+ data.tar.gz: 9189c28207c04103d2ef45f8f044be601ff205c000bb20552144afe9305e056ec355a41fa340e6b5d4df7c1d61ba9c831a6c0d5ffeb662ef5294f62ab39a8db1
@@ -0,0 +1,56 @@
1
+ require 'aws-sdk'
2
+ require 'cfndsl'
3
+ require 'rspec'
4
+
5
+ module AwsIntTestRspecHelper
6
+
7
+ def cleanup(cloudformation_stack_name)
8
+ Aws::CloudFormation::Client.new.delete_stack(stack_name: cloudformation_stack_name)
9
+ end
10
+
11
+ def stack(stack_name:,
12
+ path_to_stack:,
13
+ bindings: nil)
14
+
15
+ full_stack_name = "#{stack_name}#{Time.now.to_i}"
16
+
17
+ extras = []
18
+ unless bindings.nil?
19
+ temp_file = Tempfile.new('cfnstackfortesting')
20
+ temp_file.write bindings.to_yaml
21
+ temp_file.close
22
+
23
+ extras << [:yaml,File.expand_path(temp_file)]
24
+ end
25
+
26
+ verbose = false
27
+ model = CfnDsl::eval_file_with_extras(File.expand_path(path_to_stack),
28
+ extras,
29
+ verbose)
30
+
31
+ resource = Aws::CloudFormation::Resource.new
32
+ created_stack = resource.create_stack(stack_name: full_stack_name,
33
+ template_body: model.to_json,
34
+ disable_rollback: true,
35
+ capabilities: %w{CAPABILITY_IAM})
36
+
37
+ #need to provide more details to the waiter - or deal with more stack outcomes?
38
+ created_stack.wait_until(max_attempts:100, delay:15) {|stack| stack.stack_status == 'CREATE_COMPLETE' }
39
+
40
+ @stack_outputs = created_stack.outputs.inject({}) do |hash, output|
41
+ hash[output.output_key] = output.output_value
42
+ hash
43
+ end
44
+
45
+ full_stack_name
46
+ end
47
+
48
+
49
+ def stack_outputs
50
+ @stack_outputs
51
+ end
52
+ end
53
+
54
+ RSpec.configure do |c|
55
+ c.include AwsIntTestRspecHelper
56
+ end
metadata ADDED
@@ -0,0 +1,85 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: aws-int-test-rspec-helper
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - someguy
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-02-18 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: aws-sdk
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '='
18
+ - !ruby/object:Gem::Version
19
+ version: 2.2.17
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '='
25
+ - !ruby/object:Gem::Version
26
+ version: 2.2.17
27
+ - !ruby/object:Gem::Dependency
28
+ name: cfndsl
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '='
32
+ - !ruby/object:Gem::Version
33
+ version: 0.4.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '='
39
+ - !ruby/object:Gem::Version
40
+ version: 0.4.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '='
46
+ - !ruby/object:Gem::Version
47
+ version: 3.4.0
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '='
53
+ - !ruby/object:Gem::Version
54
+ version: 3.4.0
55
+ description: RSpec helper to make integration testing in AWS a small bit more convenient
56
+ email:
57
+ executables: []
58
+ extensions: []
59
+ extra_rdoc_files: []
60
+ files:
61
+ - lib/aws-int-test-rspec-helper.rb
62
+ homepage:
63
+ licenses: []
64
+ metadata: {}
65
+ post_install_message:
66
+ rdoc_options: []
67
+ require_paths:
68
+ - lib
69
+ required_ruby_version: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: '0'
74
+ required_rubygems_version: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ requirements: []
80
+ rubyforge_project:
81
+ rubygems_version: 2.5.1
82
+ signing_key:
83
+ specification_version: 4
84
+ summary: aws-int-test-rspec-helper
85
+ test_files: []