rspec-terraform 0.1.0.pre.46 → 0.1.0.pre.48

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
  SHA256:
3
- metadata.gz: 2595a9e060198c8472a6a91148d1d0e8c11532efee15fef65d9c732605b17a8d
4
- data.tar.gz: e63395a9eb9228904cf3641b27e8f98d383757e1f2caa32a4249db296de99162
3
+ metadata.gz: c565d7154d7321b3b6b9452592201b5230bbba63e30a3603e233f9ebd8f5bc9d
4
+ data.tar.gz: d9a59fe476ba65bd885da0386e3696e9e41daaf71b98d48f4c89a6dbcc7d56ba
5
5
  SHA512:
6
- metadata.gz: a8cf7c02682147df95b9229c8fbf923b0cb1d35fc2b3b104452b560bbc5f0ee796d0fac397bc24ce188d7293ec7bc49bbed9782846d3e381aac20be9d2e89d94
7
- data.tar.gz: 531a6420c69096768cb72f8593bea6e8e1d347ebe0182cc58e7a8c9b2ca76cfc67ec89b67c47bf1579712978a5d76a38bc850683cfe192adead3ca1e7d8e9368
6
+ metadata.gz: 05d52e392f0a08c5d4e1cd1eefccba1d11782f628c88426815e1ae5665e1aaf024f8119d2be4de264487670471bdb52bc8636e52be9c61249491180b433ad8ca
7
+ data.tar.gz: 7d5f89bd7ca96606e89104b4541f9ccde0b89619b0bbcedad2c95b63e5b82ac87ae31a05eaf2dafaf758131970d34be8576123a0f791bd3aff8921b0e13d5338
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rspec-terraform (0.1.0.pre.46)
4
+ rspec-terraform (0.1.0.pre.48)
5
5
  confidante (>= 0.27)
6
6
  rspec (>= 3.0)
7
7
  ruby-terraform (= 1.7.0.pre.17)
@@ -0,0 +1,78 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'ruby_terraform'
4
+
5
+ require_relative './command_instantiation'
6
+
7
+ module RSpec
8
+ module Terraform
9
+ module Helpers
10
+ module Actions
11
+ module Apply
12
+ include CommandInstantiation
13
+
14
+ def apply(parameters)
15
+ parameters = apply_parameters(parameters)
16
+
17
+ log_apply_starting(parameters)
18
+ log_apply_using_parameters(parameters)
19
+
20
+ apply_command.execute(parameters)
21
+
22
+ log_apply_complete
23
+ end
24
+
25
+ private
26
+
27
+ def log_apply_starting(parameters)
28
+ logger&.info(
29
+ 'Applying for configuration in directory: ' \
30
+ "'#{parameters[:chdir]}'..."
31
+ )
32
+ end
33
+
34
+ def log_apply_using_parameters(parameters)
35
+ logger&.debug("Applying using parameters: #{parameters}...")
36
+ end
37
+
38
+ def log_apply_complete
39
+ logger&.info('Apply complete.')
40
+ end
41
+
42
+ def apply_command
43
+ instantiate_command(RubyTerraform::Commands::Apply)
44
+ end
45
+
46
+ def apply_parameters(parameters)
47
+ with_apply_state_file_parameters(
48
+ with_apply_standard_parameters(parameters)
49
+ )
50
+ end
51
+
52
+ def with_apply_standard_parameters(parameters)
53
+ configuration_directory = parameters[:configuration_directory]
54
+
55
+ parameters
56
+ .except(:configuration_directory)
57
+ .merge(
58
+ chdir: configuration_directory,
59
+ input: false,
60
+ auto_approve: true
61
+ )
62
+ end
63
+
64
+ def with_apply_state_file_parameters(parameters)
65
+ state_file = parameters[:state_file]
66
+ if state_file
67
+ return parameters
68
+ .except(:state_file)
69
+ .merge(state: state_file)
70
+ end
71
+
72
+ parameters
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RSpec
4
+ module Terraform
5
+ module Helpers
6
+ module Actions
7
+ module Clean
8
+ def clean(parameters)
9
+ return unless execution_mode == :isolated
10
+
11
+ configuration_directory = parameters[:configuration_directory]
12
+
13
+ log_clean_starting(configuration_directory)
14
+
15
+ FileUtils.rm_rf(configuration_directory)
16
+ FileUtils.mkdir_p(configuration_directory)
17
+
18
+ log_clean_complete
19
+ end
20
+
21
+ private
22
+
23
+ def log_clean_starting(configuration_directory)
24
+ logger&.info(
25
+ 'Cleaning configuration directory: ' \
26
+ "'#{configuration_directory}'..."
27
+ )
28
+ end
29
+
30
+ def log_clean_complete
31
+ logger&.info('Clean complete.')
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RSpec
4
+ module Terraform
5
+ module Helpers
6
+ module Actions
7
+ module CommandInstantiation
8
+ def instantiate_command(klass, opts = {})
9
+ klass.new(command_options.merge(opts))
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,78 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'ruby_terraform'
4
+
5
+ require_relative './command_instantiation'
6
+
7
+ module RSpec
8
+ module Terraform
9
+ module Helpers
10
+ module Actions
11
+ module Destroy
12
+ include CommandInstantiation
13
+
14
+ def destroy(parameters)
15
+ parameters = destroy_parameters(parameters)
16
+
17
+ log_destroy_starting(parameters)
18
+ log_destroy_using_parameters(parameters)
19
+
20
+ destroy_command.execute(parameters)
21
+
22
+ log_destroy_complete
23
+ end
24
+
25
+ private
26
+
27
+ def log_destroy_starting(parameters)
28
+ logger&.info(
29
+ 'Destroying for configuration in directory: ' \
30
+ "'#{parameters[:chdir]}'..."
31
+ )
32
+ end
33
+
34
+ def log_destroy_using_parameters(parameters)
35
+ logger&.debug("Destroying using parameters: #{parameters}...")
36
+ end
37
+
38
+ def log_destroy_complete
39
+ logger&.info('Destroy complete.')
40
+ end
41
+
42
+ def destroy_command
43
+ instantiate_command(RubyTerraform::Commands::Destroy)
44
+ end
45
+
46
+ def destroy_parameters(parameters)
47
+ with_destroy_state_file_parameters(
48
+ with_destroy_standard_parameters(parameters)
49
+ )
50
+ end
51
+
52
+ def with_destroy_standard_parameters(parameters)
53
+ configuration_directory = parameters[:configuration_directory]
54
+
55
+ parameters
56
+ .except(:configuration_directory)
57
+ .merge(
58
+ chdir: configuration_directory,
59
+ input: false,
60
+ auto_approve: true
61
+ )
62
+ end
63
+
64
+ def with_destroy_state_file_parameters(parameters)
65
+ state_file = parameters[:state_file]
66
+ if state_file
67
+ return parameters
68
+ .except(:state_file)
69
+ .merge(state: state_file)
70
+ end
71
+
72
+ parameters
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RSpec
4
+ module Terraform
5
+ module Helpers
6
+ module Actions
7
+ module ExecuteIfRequired
8
+ def execute_if_required(name, parameters, &block)
9
+ log_execute_if_required_starting(name)
10
+
11
+ if should_execute(parameters)
12
+ log_execute_if_required_continuing
13
+ block.call
14
+ else
15
+ log_execute_if_required_skipping
16
+ end
17
+ end
18
+
19
+ private
20
+
21
+ def should_execute(parameters)
22
+ only_if = parameters[:only_if]
23
+ only_if_args = only_if ? [parameters].slice(0, only_if.arity) : []
24
+ only_if ? only_if.call(*only_if_args) : true
25
+ end
26
+
27
+ def log_execute_if_required_starting(name)
28
+ logger&.info("Checking if execution of #{name} required...")
29
+ end
30
+
31
+ def log_execute_if_required_continuing
32
+ logger&.info('Execution required. Continuing...')
33
+ end
34
+
35
+ def log_execute_if_required_skipping
36
+ logger&.info('Execution not required. Skipping...')
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,77 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'ruby_terraform'
4
+
5
+ require_relative './command_instantiation'
6
+
7
+ module RSpec
8
+ module Terraform
9
+ module Helpers
10
+ module Actions
11
+ module Init
12
+ include CommandInstantiation
13
+
14
+ def init(parameters)
15
+ parameters = init_parameters(parameters)
16
+
17
+ log_init_starting(parameters)
18
+ log_init_using_parameters(parameters)
19
+
20
+ init_command.execute(parameters)
21
+
22
+ log_init_complete
23
+ end
24
+
25
+ private
26
+
27
+ def log_init_starting(parameters)
28
+ logger&.info(
29
+ 'Initing for configuration in directory: ' \
30
+ "'#{parameters[:chdir]}'..."
31
+ )
32
+ end
33
+
34
+ def log_init_using_parameters(parameters)
35
+ logger&.debug("Initing using parameters: #{parameters}...")
36
+ end
37
+
38
+ def log_init_complete
39
+ logger&.info('Init complete.')
40
+ end
41
+
42
+ def init_command
43
+ instantiate_command(RubyTerraform::Commands::Init)
44
+ end
45
+
46
+ def init_parameters(parameters)
47
+ with_init_execution_mode_parameters(
48
+ with_init_standard_parameters(parameters)
49
+ )
50
+ end
51
+
52
+ def with_init_standard_parameters(parameters)
53
+ configuration_directory = parameters[:configuration_directory]
54
+
55
+ parameters
56
+ .except(:configuration_directory)
57
+ .merge(
58
+ chdir: configuration_directory,
59
+ input: false
60
+ )
61
+ end
62
+
63
+ def with_init_execution_mode_parameters(parameters)
64
+ source_directory = parameters[:source_directory]
65
+ parameters = parameters.except(:source_directory)
66
+
67
+ if execution_mode == :isolated
68
+ return parameters.merge(from_module: source_directory)
69
+ end
70
+
71
+ parameters
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,81 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'ruby_terraform'
4
+ require 'stringio'
5
+
6
+ require_relative './command_instantiation'
7
+
8
+ module RSpec
9
+ module Terraform
10
+ module Helpers
11
+ module Actions
12
+ module Output
13
+ include CommandInstantiation
14
+
15
+ def output(parameters)
16
+ stdout = StringIO.new
17
+ parameters = output_parameters(parameters)
18
+
19
+ log_output_starting(parameters)
20
+ log_output_using_parameters(parameters)
21
+
22
+ output_command(stdout: stdout)
23
+ .execute(parameters)
24
+
25
+ log_output_complete
26
+
27
+ stdout.string
28
+ end
29
+
30
+ private
31
+
32
+ def log_output_starting(parameters)
33
+ logger&.info(
34
+ 'Outputting for configuration in directory: ' \
35
+ "'#{parameters[:chdir]}'..."
36
+ )
37
+ end
38
+
39
+ def log_output_using_parameters(parameters)
40
+ logger&.debug("Outputting using parameters: #{parameters}...")
41
+ end
42
+
43
+ def log_output_complete
44
+ logger&.info('Output complete.')
45
+ end
46
+
47
+ def output_command(opts = {})
48
+ instantiate_command(RubyTerraform::Commands::Output, opts)
49
+ end
50
+
51
+ def output_parameters(parameters)
52
+ with_output_state_file_parameters(
53
+ with_output_standard_parameters(parameters)
54
+ )
55
+ end
56
+
57
+ def with_output_standard_parameters(parameters)
58
+ configuration_directory = parameters[:configuration_directory]
59
+
60
+ parameters
61
+ .except(:configuration_directory)
62
+ .merge(
63
+ chdir: configuration_directory
64
+ )
65
+ end
66
+
67
+ def with_output_state_file_parameters(parameters)
68
+ state_file = parameters[:state_file]
69
+ if state_file
70
+ return parameters
71
+ .except(:state_file)
72
+ .merge(state: state_file)
73
+ end
74
+
75
+ parameters
76
+ end
77
+ end
78
+ end
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,90 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'ruby_terraform'
4
+ require 'securerandom'
5
+
6
+ require_relative './command_instantiation'
7
+
8
+ module RSpec
9
+ module Terraform
10
+ module Helpers
11
+ module Actions
12
+ module Plan
13
+ include CommandInstantiation
14
+
15
+ def plan(parameters)
16
+ parameters = plan_parameters(parameters)
17
+
18
+ log_plan_starting(parameters)
19
+ log_plan_using_parameters(parameters)
20
+
21
+ plan_command.execute(parameters)
22
+
23
+ log_plan_complete
24
+
25
+ parameters[:out]
26
+ end
27
+
28
+ private
29
+
30
+ def log_plan_starting(parameters)
31
+ logger&.info(
32
+ 'Planning for configuration in directory: ' \
33
+ "'#{parameters[:chdir]}'..."
34
+ )
35
+ end
36
+
37
+ def log_plan_using_parameters(parameters)
38
+ logger&.debug("Planning using parameters: #{parameters}...")
39
+ end
40
+
41
+ def log_plan_complete
42
+ logger&.info('Plan complete.')
43
+ end
44
+
45
+ def plan_command
46
+ instantiate_command(RubyTerraform::Commands::Plan)
47
+ end
48
+
49
+ def plan_parameters(parameters)
50
+ with_plan_state_file_parameters(
51
+ with_plan_standard_parameters(parameters)
52
+ )
53
+ end
54
+
55
+ def with_plan_standard_parameters(parameters)
56
+ configuration_directory = parameters[:configuration_directory]
57
+ plan_file_name = resolve_plan_file_name(parameters)
58
+
59
+ parameters
60
+ .except(:configuration_directory, :plan_file_name)
61
+ .merge(
62
+ chdir: configuration_directory,
63
+ out: plan_file_name,
64
+ input: false
65
+ )
66
+ end
67
+
68
+ def resolve_plan_file_name(parameters)
69
+ parameters[:plan_file_name] || random_plan_file_name
70
+ end
71
+
72
+ def random_plan_file_name
73
+ "#{SecureRandom.hex[0, 10]}.tfplan"
74
+ end
75
+
76
+ def with_plan_state_file_parameters(parameters)
77
+ state_file = parameters[:state_file]
78
+ if state_file
79
+ return parameters
80
+ .except(:state_file)
81
+ .merge(state: state_file)
82
+ end
83
+
84
+ parameters
85
+ end
86
+ end
87
+ end
88
+ end
89
+ end
90
+ end
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'fileutils'
4
+
5
+ module RSpec
6
+ module Terraform
7
+ module Helpers
8
+ module Actions
9
+ module Remove
10
+ def remove(parameters, file)
11
+ configuration_directory = parameters[:configuration_directory]
12
+
13
+ log_remove_starting(configuration_directory, file)
14
+
15
+ FileUtils.rm_f(
16
+ File.join(configuration_directory, file)
17
+ )
18
+
19
+ log_remove_complete
20
+ end
21
+
22
+ private
23
+
24
+ def log_remove_starting(configuration_directory, file)
25
+ logger&.info(
26
+ "Removing file: '#{file}' in configuration directory: " \
27
+ "'#{configuration_directory}'..."
28
+ )
29
+ end
30
+
31
+ def log_remove_complete
32
+ logger&.info('Remove complete.')
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,79 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'ruby_terraform'
4
+ require 'stringio'
5
+
6
+ require_relative './command_instantiation'
7
+
8
+ module RSpec
9
+ module Terraform
10
+ module Helpers
11
+ module Actions
12
+ module Show
13
+ include CommandInstantiation
14
+
15
+ def show(parameters, plan_file)
16
+ parameters = show_parameters(parameters, plan_file)
17
+
18
+ log_show_starting(parameters, plan_file)
19
+ log_show_using_parameters(parameters)
20
+
21
+ stdout = StringIO.new
22
+ show_command(stdout: stdout)
23
+ .execute(parameters)
24
+
25
+ log_show_complete
26
+
27
+ stdout.string
28
+ end
29
+
30
+ private
31
+
32
+ def log_show_starting(parameters, plan_file)
33
+ logger&.info(
34
+ "Showing file: '#{plan_file}' in configuration directory: " \
35
+ "'#{parameters[:chdir]}'..."
36
+ )
37
+ end
38
+
39
+ def log_show_using_parameters(parameters)
40
+ logger&.debug("Showing using parameters: #{parameters}...")
41
+ end
42
+
43
+ def log_show_complete
44
+ logger&.info('Show complete.')
45
+ end
46
+
47
+ def show_command(opts = {})
48
+ instantiate_command(RubyTerraform::Commands::Show, opts)
49
+ end
50
+
51
+ def show_parameters(parameters, plan_file)
52
+ with_show_plan_file_parameters(
53
+ with_show_standard_parameters(parameters),
54
+ plan_file
55
+ )
56
+ end
57
+
58
+ def with_show_standard_parameters(parameters)
59
+ configuration_directory = parameters[:configuration_directory]
60
+
61
+ parameters
62
+ .except(:configuration_directory)
63
+ .merge(
64
+ chdir: configuration_directory,
65
+ no_color: true,
66
+ json: true
67
+ )
68
+ end
69
+
70
+ def with_show_plan_file_parameters(parameters, plan_file)
71
+ parameters.merge(
72
+ path: plan_file
73
+ )
74
+ end
75
+ end
76
+ end
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,68 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RSpec
4
+ module Terraform
5
+ module Helpers
6
+ module Actions
7
+ module Validate
8
+ def validate(parameters)
9
+ required = required_parameters(execution_mode)
10
+
11
+ log_validate_starting(required)
12
+ log_validate_using_parameters(parameters)
13
+
14
+ missing = determine_missing(parameters, required)
15
+
16
+ handle_result(missing)
17
+ end
18
+
19
+ private
20
+
21
+ def determine_missing(parameters, required)
22
+ required.filter { |parameter| parameters[parameter].nil? }
23
+ end
24
+
25
+ def handle_result(missing)
26
+ if missing.empty?
27
+ log_validate_successful
28
+ else
29
+ log_validate_failed(missing)
30
+ raise_missing_parameters(missing)
31
+ end
32
+ end
33
+
34
+ def log_validate_starting(required)
35
+ logger&.info(
36
+ "Validating required parameters: #{required} present..."
37
+ )
38
+ end
39
+
40
+ def log_validate_using_parameters(parameters)
41
+ logger&.debug("Validating parameters: #{parameters}...")
42
+ end
43
+
44
+ def log_validate_successful
45
+ logger&.info('Validate successful.')
46
+ end
47
+
48
+ def log_validate_failed(missing)
49
+ logger&.error("Validate failed. Parameters: #{missing} missing.")
50
+ end
51
+
52
+ def raise_missing_parameters(parameters)
53
+ parameters = parameters.collect { |parameter| "`:#{parameter}`" }
54
+ if parameters.count == 1
55
+ raise StandardError,
56
+ "Required parameter: #{parameters[0]} missing."
57
+ else
58
+ parameters =
59
+ "#{parameters[..-2].join(', ')} and #{parameters[-1]}"
60
+ raise StandardError,
61
+ "Required parameters: #{parameters} missing."
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end
@@ -1,209 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative '../configuration/var_captor'
4
-
5
- module RSpec
6
- module Terraform
7
- module Helpers
8
- # rubocop:disable Metrics/ModuleLength
9
- module Actions
10
- def execute_if_required(parameters, &block)
11
- only_if = parameters[:only_if]
12
- only_if_args = only_if ? [parameters].slice(0, only_if.arity) : []
13
- should_execute = only_if ? only_if.call(*only_if_args) : true
14
-
15
- block.call if should_execute
16
- end
17
-
18
- def clean(parameters)
19
- return unless execution_mode == :isolated
20
-
21
- FileUtils.rm_rf(parameters[:configuration_directory])
22
- FileUtils.mkdir_p(parameters[:configuration_directory])
23
- end
24
-
25
- def remove(parameters, file)
26
- FileUtils.rm_f(
27
- File.join(parameters[:configuration_directory], file)
28
- )
29
- end
30
-
31
- def validate(parameters)
32
- missing_parameters =
33
- required_parameters(execution_mode)
34
- .filter { |parameter| parameters[parameter].nil? }
35
-
36
- return if missing_parameters.empty?
37
-
38
- raise_missing_parameters(missing_parameters)
39
- end
40
-
41
- def init(parameters)
42
- init_command.execute(init_parameters(parameters))
43
- end
44
-
45
- def apply(parameters)
46
- apply_command.execute(apply_parameters(parameters))
47
- end
48
-
49
- def destroy(parameters)
50
- destroy_command.execute(destroy_parameters(parameters))
51
- end
52
-
53
- def plan(parameters)
54
- plan_parameters = plan_parameters(parameters)
55
- plan_command.execute(plan_parameters)
56
- plan_parameters[:out]
57
- end
58
-
59
- def show(parameters, plan_file)
60
- stdout = StringIO.new
61
- show_command(stdout: stdout)
62
- .execute(show_parameters(parameters, plan_file))
63
- stdout.string
64
- end
65
-
66
- def output(parameters)
67
- stdout = StringIO.new
68
- output_command(stdout: stdout)
69
- .execute(output_parameters(parameters))
70
- stdout.string
71
- end
72
-
73
- private
74
-
75
- def raise_missing_parameters(parameters)
76
- parameters = parameters.collect { |parameter| "`:#{parameter}`" }
77
- if parameters.count == 1
78
- raise StandardError,
79
- "Required parameter: #{parameters[0]} missing."
80
- else
81
- parameters = "#{parameters[..-2].join(', ')} and #{parameters[-1]}"
82
- raise StandardError,
83
- "Required parameters: #{parameters} missing."
84
- end
85
- end
86
-
87
- def instantiate_command(klass, opts = {})
88
- klass.new(command_options.merge(opts))
89
- end
90
-
91
- def init_command
92
- instantiate_command(RubyTerraform::Commands::Init)
93
- end
94
-
95
- def apply_command
96
- instantiate_command(RubyTerraform::Commands::Apply)
97
- end
98
-
99
- def destroy_command
100
- instantiate_command(RubyTerraform::Commands::Destroy)
101
- end
102
-
103
- def plan_command
104
- instantiate_command(RubyTerraform::Commands::Plan)
105
- end
106
-
107
- def show_command(opts = {})
108
- instantiate_command(RubyTerraform::Commands::Show, opts)
109
- end
110
-
111
- def output_command(opts = {})
112
- instantiate_command(RubyTerraform::Commands::Output, opts)
113
- end
114
-
115
- def init_parameters(parameters)
116
- init_parameters = parameters.merge(
117
- chdir: parameters[:configuration_directory],
118
- input: false
119
- )
120
- if execution_mode == :isolated
121
- init_parameters =
122
- init_parameters.merge(from_module: parameters[:source_directory])
123
- end
124
-
125
- init_parameters
126
- end
127
-
128
- # rubocop:disable Metrics/MethodLength
129
- def apply_parameters(parameters)
130
- apply_parameters =
131
- parameters.merge(
132
- chdir: parameters[:configuration_directory],
133
- input: false,
134
- auto_approve: true
135
- )
136
-
137
- if parameters[:state_file]
138
- apply_parameters =
139
- apply_parameters.merge(state: parameters[:state_file])
140
- end
141
-
142
- apply_parameters
143
- end
144
- # rubocop:enable Metrics/MethodLength
145
-
146
- # rubocop:disable Metrics/MethodLength
147
- def destroy_parameters(parameters)
148
- destroy_parameters =
149
- parameters.merge(
150
- chdir: parameters[:configuration_directory],
151
- input: false,
152
- auto_approve: true
153
- )
154
-
155
- if parameters[:state_file]
156
- destroy_parameters =
157
- destroy_parameters.merge(state: parameters[:state_file])
158
- end
159
-
160
- destroy_parameters
161
- end
162
- # rubocop:enable Metrics/MethodLength
163
-
164
- # rubocop:disable Metrics/MethodLength
165
- def plan_parameters(parameters)
166
- plan_parameters =
167
- parameters.merge(
168
- chdir: parameters[:configuration_directory],
169
- out: parameters[:plan_file_name] ||
170
- "#{SecureRandom.hex[0, 10]}.tfplan",
171
- input: false
172
- )
173
-
174
- if parameters[:state_file]
175
- plan_parameters =
176
- plan_parameters.merge(state: parameters[:state_file])
177
- end
178
-
179
- plan_parameters
180
- end
181
- # rubocop:enable Metrics/MethodLength
182
-
183
- def show_parameters(parameters, plan_file)
184
- parameters.merge(
185
- chdir: parameters[:configuration_directory],
186
- path: plan_file,
187
- no_color: true,
188
- json: true
189
- )
190
- end
191
-
192
- def output_parameters(parameters)
193
- output_parameters =
194
- parameters.merge(
195
- chdir: parameters[:configuration_directory]
196
- )
197
-
198
- if parameters[:state_file]
199
- output_parameters =
200
- output_parameters.merge(state: parameters[:state_file])
201
- end
202
-
203
- output_parameters
204
- end
205
- end
206
- # rubocop:enable Metrics/ModuleLength
207
- end
208
- end
209
- end
3
+ require_relative './actions/clean'
4
+ require_relative './actions/validate'
5
+ require_relative './actions/init'
6
+ require_relative './actions/apply'
7
+ require_relative './actions/destroy'
8
+ require_relative './actions/plan'
9
+ require_relative './actions/output'
10
+ require_relative './actions/show'
11
+ require_relative './actions/remove'
12
+ require_relative './actions/execute_if_required'
@@ -3,15 +3,22 @@
3
3
  require 'ruby_terraform'
4
4
 
5
5
  require_relative './base'
6
+ require_relative './actions'
6
7
 
7
8
  module RSpec
8
9
  module Terraform
9
10
  module Helpers
10
11
  class Apply < Base
12
+ include Actions::ExecuteIfRequired
13
+ include Actions::Validate
14
+ include Actions::Clean
15
+ include Actions::Init
16
+ include Actions::Apply
17
+
11
18
  def execute(overrides = {}, &block)
12
19
  parameters = resolve_parameters(overrides, &block)
13
20
 
14
- execute_if_required(parameters) do
21
+ execute_if_required(:apply, parameters) do
15
22
  validate(parameters)
16
23
  clean(parameters)
17
24
  init(parameters)
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative './actions'
4
3
  require_relative './parameters'
5
4
 
6
5
  module RSpec
@@ -8,7 +7,6 @@ module RSpec
8
7
  module Helpers
9
8
  class Base
10
9
  include Parameters
11
- include Actions
12
10
 
13
11
  attr_reader(
14
12
  :configuration_provider,
@@ -3,15 +3,22 @@
3
3
  require 'ruby_terraform'
4
4
 
5
5
  require_relative './base'
6
+ require_relative './actions'
6
7
 
7
8
  module RSpec
8
9
  module Terraform
9
10
  module Helpers
10
11
  class Destroy < Base
12
+ include Actions::ExecuteIfRequired
13
+ include Actions::Validate
14
+ include Actions::Clean
15
+ include Actions::Init
16
+ include Actions::Destroy
17
+
11
18
  def execute(overrides = {}, &block)
12
19
  parameters = resolve_parameters(overrides, &block)
13
20
 
14
- execute_if_required(parameters) do
21
+ execute_if_required(:destroy, parameters) do
15
22
  validate(parameters)
16
23
  clean(parameters)
17
24
  init(parameters)
@@ -3,11 +3,17 @@
3
3
  require 'ruby_terraform'
4
4
 
5
5
  require_relative './base'
6
+ require_relative './actions'
6
7
 
7
8
  module RSpec
8
9
  module Terraform
9
10
  module Helpers
10
11
  class Output < Base
12
+ include Actions::Validate
13
+ include Actions::Clean
14
+ include Actions::Init
15
+ include Actions::Output
16
+
11
17
  def execute(overrides = {})
12
18
  parameters = resolve_parameters(overrides)
13
19
 
@@ -1,15 +1,19 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'ruby_terraform'
4
- require 'securerandom'
5
- require 'stringio'
6
-
7
3
  require_relative './base'
4
+ require_relative './actions'
8
5
 
9
6
  module RSpec
10
7
  module Terraform
11
8
  module Helpers
12
9
  class Plan < Base
10
+ include Actions::Validate
11
+ include Actions::Clean
12
+ include Actions::Init
13
+ include Actions::Plan
14
+ include Actions::Show
15
+ include Actions::Remove
16
+
13
17
  def execute(overrides = {}, &block)
14
18
  parameters = resolve_parameters(overrides, &block)
15
19
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RSpec
4
4
  module Terraform
5
- VERSION = '0.1.0.pre.46'
5
+ VERSION = '0.1.0.pre.48'
6
6
  end
7
7
  end
@@ -13,7 +13,6 @@ require_relative 'terraform/logging'
13
13
  # TODO
14
14
  # ====
15
15
  #
16
- # * Test session
17
16
  # * Before support in matchers
18
17
  # * Reference support in matchers
19
18
  # * Sensitive support in matchers
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-terraform
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0.pre.46
4
+ version: 0.1.0.pre.48
5
5
  platform: ruby
6
6
  authors:
7
7
  - InfraBlocks Maintainers
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-09-24 00:00:00.000000000 Z
11
+ date: 2022-09-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: confidante
@@ -305,6 +305,17 @@ files:
305
305
  - lib/rspec/terraform/configuration/var_captor.rb
306
306
  - lib/rspec/terraform/helpers.rb
307
307
  - lib/rspec/terraform/helpers/actions.rb
308
+ - lib/rspec/terraform/helpers/actions/apply.rb
309
+ - lib/rspec/terraform/helpers/actions/clean.rb
310
+ - lib/rspec/terraform/helpers/actions/command_instantiation.rb
311
+ - lib/rspec/terraform/helpers/actions/destroy.rb
312
+ - lib/rspec/terraform/helpers/actions/execute_if_required.rb
313
+ - lib/rspec/terraform/helpers/actions/init.rb
314
+ - lib/rspec/terraform/helpers/actions/output.rb
315
+ - lib/rspec/terraform/helpers/actions/plan.rb
316
+ - lib/rspec/terraform/helpers/actions/remove.rb
317
+ - lib/rspec/terraform/helpers/actions/show.rb
318
+ - lib/rspec/terraform/helpers/actions/validate.rb
308
319
  - lib/rspec/terraform/helpers/apply.rb
309
320
  - lib/rspec/terraform/helpers/base.rb
310
321
  - lib/rspec/terraform/helpers/destroy.rb