rspec-terraform 0.1.0.pre.47 → 0.1.0.pre.49

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: 81533be8b2db5deed030c7d321cf443d1703b7c8e71d7379c70463fab9a9d3f6
4
- data.tar.gz: 77b1e6c0b70fc4fd4a258f0a3d6db4c8aa1e404e6059c2eed81ef0163b59509e
3
+ metadata.gz: 71e9d6c1dcc91011ceaaf7e50cb2f449453ed10157afa51675e644404df114cb
4
+ data.tar.gz: c7efffc268030aedb282fb8e72dfb2d7d1ee9ae97c8fe0896f08e3817aeb8a42
5
5
  SHA512:
6
- metadata.gz: c53f5bfe578e18b842e0d509c582fca0c06cb106c10d8fcde12c20361fd2c53b546e3b62dd60109af3bbcb71116c39d4ffcac29703cfa6399b3187da26ab5b58
7
- data.tar.gz: 294f50f7e73613ade97534b6706d5df40c6194d50746509826c92f7692484f7cab267e34741257bada91fb1ff92e5e3b5fc7699a506cd6c1870d200f6ba719fb
6
+ metadata.gz: a57bb3067903397d0378278b20a4e1f91ff1e5fde1576a8e156221279d33d64a316d3704b6f5cbad2317e000e80a12ec4c152f7b7fcda731f1956516c7363f62
7
+ data.tar.gz: '094cc08b00bf0209439809d707636a1a4bcf112865bc6f6ce9a90b0d558719e11fcb18ad318bf4f81a08fed2938ce71057463cdf44a4f5abfc645c6ebbd7bd9a'
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rspec-terraform (0.1.0.pre.47)
4
+ rspec-terraform (0.1.0.pre.49)
5
5
  confidante (>= 0.27)
6
6
  rspec (>= 3.0)
7
7
  ruby-terraform (= 1.7.0.pre.17)
data/README.md CHANGED
@@ -1,6 +1,11 @@
1
1
  # RSpec::Terraform
2
2
 
3
- RSpec support for testing Terraform configurations.
3
+ An RSpec extension for verifying Terraform configurations, with support for:
4
+
5
+ * unit testing;
6
+ * integration testing;
7
+ * end-to-end testing; and
8
+ * change auditing.
4
9
 
5
10
  ## Installation
6
11
 
@@ -20,19 +25,167 @@ Or install it yourself as:
20
25
 
21
26
  ## Usage
22
27
 
23
- TODO: Write docs.
28
+ To use RSpec::Terraform, require it in your `spec_helper.rb` file:
29
+
30
+ ```ruby
31
+ require 'rspec/terraform'
32
+ ```
33
+
34
+ When required, RSpec::Terraform automatically configures itself against
35
+ RSpec by:
36
+
37
+ * adding helper methods to interact with Terraform;
38
+ * adding matchers to verify Terraform plans; and
39
+ * adding settings to control RSpec::Terraform's behaviour.
40
+
41
+ The sections below provide further details on each of these additions.
42
+
43
+ ### Helper methods
44
+
45
+ RSpec::Terraform adds helper methods to the RSpec DSL for planning, applying,
46
+ and destroying Terraform configurations, as well as accessing variables to and
47
+ outputs from Terraform configurations.
48
+
49
+ Each helper method takes a hash of parameters used to identify the configuration
50
+ against which to act and to provide as options to the Terraform command being
51
+ executed. Additionally, RSpec::Terraform includes a flexible approach to
52
+ resolving these parameters allowing them to be sourced from a variety of
53
+ locations. See the [Configuration Providers](#configuration-providers) section
54
+ for more details.
55
+
56
+ When executing helper methods, RSpec::Terraform provides two execution modes,
57
+ `:in_place` and `:isolated`. By default, RSpec::Terraform works against a
58
+ Terraform configuration _in place_, i.e., it executes commands against the
59
+ Terraform configuration directly, in the location specified. RSpec::Terraform
60
+ can also operate in an _isolated_ manner, wherein it initialises the
61
+ configuration into an isolated directory before executing commands. See the
62
+ [Execution Mode](#execution-mode) section for more details.
63
+
64
+ #### `plan`
65
+
66
+ The `plan` helper produces a Terraform plan for a configuration, reads it
67
+ into a Ruby representation and returns it.
68
+
69
+ `plan` requires a `:configuration_directory` parameter, representing the path
70
+ to the configuration to plan and is typically invoked in a `before(:context)`
71
+ hook, with the resulting plan stored for use in expectations:
72
+
73
+ ```ruby
74
+ before(:context) do
75
+ @plan = plan(
76
+ configuration_directory: 'path/to/configuration/directory'
77
+ )
78
+ end
79
+ ```
80
+
81
+ If the configuration has input variables, a `:vars` parameter can be provided
82
+ as a hash:
83
+
84
+ ```ruby
85
+ before(:context) do
86
+ @plan = plan(
87
+ configuration_directory: 'path/to/configuration/directory',
88
+ vars: {
89
+ region: 'uk',
90
+ zones: ['uk-a', 'uk-b'],
91
+ tags: {
92
+ name: 'important-thing',
93
+ role: 'persistence'
94
+ }
95
+ }
96
+ )
97
+ end
98
+ ```
99
+
100
+ or within a block:
101
+
102
+ ```ruby
103
+ before(:context) do
104
+ @plan = plan(
105
+ configuration_directory: 'path/to/configuration/directory'
106
+ ) do |vars|
107
+ vars.region = 'uk'
108
+ vars.zones = ['uk-a', 'uk-b']
109
+ vars.tags = {
110
+ name: 'important-thing',
111
+ role: 'persistence'
112
+ }
113
+ end
114
+ end
115
+ ```
116
+
117
+ `plan` accepts an optional `:state_file` parameter with the path to where the
118
+ current state file for the configuration is located, useful when checking the
119
+ incremental change that applying the configuration would have after a previous
120
+ apply.
121
+
122
+ Internally, `plan`:
123
+ * calls `terraform init` to initialise the configuration directory;
124
+ * calls `terraform plan` to produce a plan file;
125
+ * calls `terraform show` to read the contents of the plan file into a Ruby
126
+ representation; and
127
+ * deletes the plan file.
128
+
129
+ Any additional parameters passed to `plan` are passed on to the underlying
130
+ Terraform invocations.
131
+
132
+ #### `apply`
133
+
134
+ #### `destroy`
135
+
136
+ #### `output`
137
+
138
+ #### `var`
139
+
140
+ ### Plan Matchers
141
+
142
+ ### Settings
143
+
144
+ #### Binary Location
145
+
146
+ #### Logging and Standard Streams
147
+
148
+ #### Execution Mode
149
+
150
+ The benefit of isolated execution is that nothing is carried over between test
151
+ runs and providers and modules are fetched into a clean configuration directory
152
+ every time. The downside is additional test run time.
153
+
154
+ #### Configuration Providers
155
+
156
+ ### Frequently Asked Questions
24
157
 
25
158
  ## Development
26
159
 
27
- After checking out the repo, run `bin/setup` to install dependencies. Then, run
28
- `rake spec` to run the tests. You can also run `bin/console` for an interactive
29
- prompt that will allow you to experiment.
160
+ To install dependencies and run the build, run the pre-commit build:
161
+
162
+ ```shell
163
+ ./go
164
+ ```
165
+
166
+ This runs all unit tests and other checks including coverage and code linting /
167
+ formatting.
168
+
169
+ To run only the unit tests, including coverage:
170
+
171
+ ```shell
172
+ ./go test:unit
173
+ ```
174
+
175
+ To attempt to fix any code linting / formatting issues:
176
+
177
+ ```shell
178
+ ./go library:fix
179
+ ```
180
+
181
+ To check for code linting / formatting issues without fixing:
182
+
183
+ ```shell
184
+ ./go library:check
185
+ ```
30
186
 
31
- To install this gem onto your local machine, run `bundle exec rake install`. To
32
- release a new version, update the version number in `version.rb`, and then run
33
- `bundle exec rake release`, which will create a git tag for the version, push
34
- git commits and tags, and push the `.gem` file to
35
- [rubygems.org](https://rubygems.org).
187
+ You can also run `bin/console` for an interactive prompt that will allow you to
188
+ experiment.
36
189
 
37
190
  ### Managing CircleCI keys
38
191
 
@@ -12,11 +12,33 @@ module RSpec
12
12
  include CommandInstantiation
13
13
 
14
14
  def apply(parameters)
15
- apply_command.execute(apply_parameters(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
16
23
  end
17
24
 
18
25
  private
19
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
+
20
42
  def apply_command
21
43
  instantiate_command(RubyTerraform::Commands::Apply)
22
44
  end
@@ -28,16 +50,23 @@ module RSpec
28
50
  end
29
51
 
30
52
  def with_apply_standard_parameters(parameters)
31
- parameters.merge(
32
- chdir: parameters[:configuration_directory],
33
- input: false,
34
- auto_approve: true
35
- )
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
+ )
36
62
  end
37
63
 
38
64
  def with_apply_state_file_parameters(parameters)
39
- if parameters[:state_file]
40
- return parameters.merge(state: parameters[:state_file])
65
+ state_file = parameters[:state_file]
66
+ if state_file
67
+ return parameters
68
+ .except(:state_file)
69
+ .merge(state: state_file)
41
70
  end
42
71
 
43
72
  parameters
@@ -8,8 +8,27 @@ module RSpec
8
8
  def clean(parameters)
9
9
  return unless execution_mode == :isolated
10
10
 
11
- FileUtils.rm_rf(parameters[:configuration_directory])
12
- FileUtils.mkdir_p(parameters[:configuration_directory])
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.')
13
32
  end
14
33
  end
15
34
  end
@@ -12,11 +12,33 @@ module RSpec
12
12
  include CommandInstantiation
13
13
 
14
14
  def destroy(parameters)
15
- destroy_command.execute(destroy_parameters(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
16
23
  end
17
24
 
18
25
  private
19
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
+
20
42
  def destroy_command
21
43
  instantiate_command(RubyTerraform::Commands::Destroy)
22
44
  end
@@ -28,16 +50,23 @@ module RSpec
28
50
  end
29
51
 
30
52
  def with_destroy_standard_parameters(parameters)
31
- parameters.merge(
32
- chdir: parameters[:configuration_directory],
33
- input: false,
34
- auto_approve: true
35
- )
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
+ )
36
62
  end
37
63
 
38
64
  def with_destroy_state_file_parameters(parameters)
39
- if parameters[:state_file]
40
- return parameters.merge(state: parameters[:state_file])
65
+ state_file = parameters[:state_file]
66
+ if state_file
67
+ return parameters
68
+ .except(:state_file)
69
+ .merge(state: state_file)
41
70
  end
42
71
 
43
72
  parameters
@@ -5,12 +5,35 @@ module RSpec
5
5
  module Helpers
6
6
  module Actions
7
7
  module ExecuteIfRequired
8
- def execute_if_required(parameters, &block)
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)
9
22
  only_if = parameters[:only_if]
10
23
  only_if_args = only_if ? [parameters].slice(0, only_if.arity) : []
11
- should_execute = only_if ? only_if.call(*only_if_args) : true
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
12
34
 
13
- block.call if should_execute
35
+ def log_execute_if_required_skipping
36
+ logger&.info('Execution not required. Skipping...')
14
37
  end
15
38
  end
16
39
  end
@@ -12,11 +12,33 @@ module RSpec
12
12
  include CommandInstantiation
13
13
 
14
14
  def init(parameters)
15
- init_command.execute(init_parameters(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
16
23
  end
17
24
 
18
25
  private
19
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
+
20
42
  def init_command
21
43
  instantiate_command(RubyTerraform::Commands::Init)
22
44
  end
@@ -28,17 +50,22 @@ module RSpec
28
50
  end
29
51
 
30
52
  def with_init_standard_parameters(parameters)
31
- parameters.merge(
32
- chdir: parameters[:configuration_directory],
33
- input: false
34
- )
53
+ configuration_directory = parameters[:configuration_directory]
54
+
55
+ parameters
56
+ .except(:configuration_directory)
57
+ .merge(
58
+ chdir: configuration_directory,
59
+ input: false
60
+ )
35
61
  end
36
62
 
37
63
  def with_init_execution_mode_parameters(parameters)
64
+ source_directory = parameters[:source_directory]
65
+ parameters = parameters.except(:source_directory)
66
+
38
67
  if execution_mode == :isolated
39
- return parameters.merge(
40
- from_module: parameters[:source_directory]
41
- )
68
+ return parameters.merge(from_module: source_directory)
42
69
  end
43
70
 
44
71
  parameters
@@ -14,13 +14,36 @@ module RSpec
14
14
 
15
15
  def output(parameters)
16
16
  stdout = StringIO.new
17
+ parameters = output_parameters(parameters)
18
+
19
+ log_output_starting(parameters)
20
+ log_output_using_parameters(parameters)
21
+
17
22
  output_command(stdout: stdout)
18
- .execute(output_parameters(parameters))
23
+ .execute(parameters)
24
+
25
+ log_output_complete
26
+
19
27
  stdout.string
20
28
  end
21
29
 
22
30
  private
23
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
+
24
47
  def output_command(opts = {})
25
48
  instantiate_command(RubyTerraform::Commands::Output, opts)
26
49
  end
@@ -32,14 +55,21 @@ module RSpec
32
55
  end
33
56
 
34
57
  def with_output_standard_parameters(parameters)
35
- parameters.merge(
36
- chdir: parameters[:configuration_directory]
37
- )
58
+ configuration_directory = parameters[:configuration_directory]
59
+
60
+ parameters
61
+ .except(:configuration_directory)
62
+ .merge(
63
+ chdir: configuration_directory
64
+ )
38
65
  end
39
66
 
40
67
  def with_output_state_file_parameters(parameters)
41
- if parameters[:state_file]
42
- return parameters.merge(state: parameters[:state_file])
68
+ state_file = parameters[:state_file]
69
+ if state_file
70
+ return parameters
71
+ .except(:state_file)
72
+ .merge(state: state_file)
43
73
  end
44
74
 
45
75
  parameters
@@ -13,13 +13,35 @@ module RSpec
13
13
  include CommandInstantiation
14
14
 
15
15
  def plan(parameters)
16
- plan_parameters = plan_parameters(parameters)
17
- plan_command.execute(plan_parameters)
18
- plan_parameters[:out]
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]
19
26
  end
20
27
 
21
28
  private
22
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
+
23
45
  def plan_command
24
46
  instantiate_command(RubyTerraform::Commands::Plan)
25
47
  end
@@ -31,17 +53,32 @@ module RSpec
31
53
  end
32
54
 
33
55
  def with_plan_standard_parameters(parameters)
34
- parameters.merge(
35
- chdir: parameters[:configuration_directory],
36
- out: parameters[:plan_file_name] ||
37
- "#{SecureRandom.hex[0, 10]}.tfplan",
38
- input: false
39
- )
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"
40
74
  end
41
75
 
42
76
  def with_plan_state_file_parameters(parameters)
43
- if parameters[:state_file]
44
- return parameters.merge(state: parameters[:state_file])
77
+ state_file = parameters[:state_file]
78
+ if state_file
79
+ return parameters
80
+ .except(:state_file)
81
+ .merge(state: state_file)
45
82
  end
46
83
 
47
84
  parameters
@@ -8,9 +8,28 @@ module RSpec
8
8
  module Actions
9
9
  module Remove
10
10
  def remove(parameters, file)
11
+ configuration_directory = parameters[:configuration_directory]
12
+
13
+ log_remove_starting(configuration_directory, file)
14
+
11
15
  FileUtils.rm_f(
12
- File.join(parameters[:configuration_directory], file)
16
+ File.join(configuration_directory, file)
13
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.')
14
33
  end
15
34
  end
16
35
  end
@@ -13,14 +13,37 @@ module RSpec
13
13
  include CommandInstantiation
14
14
 
15
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
+
16
21
  stdout = StringIO.new
17
22
  show_command(stdout: stdout)
18
- .execute(show_parameters(parameters, plan_file))
23
+ .execute(parameters)
24
+
25
+ log_show_complete
26
+
19
27
  stdout.string
20
28
  end
21
29
 
22
30
  private
23
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
+
24
47
  def show_command(opts = {})
25
48
  instantiate_command(RubyTerraform::Commands::Show, opts)
26
49
  end
@@ -33,11 +56,15 @@ module RSpec
33
56
  end
34
57
 
35
58
  def with_show_standard_parameters(parameters)
36
- parameters.merge(
37
- chdir: parameters[:configuration_directory],
38
- no_color: true,
39
- json: true
40
- )
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
+ )
41
68
  end
42
69
 
43
70
  def with_show_plan_file_parameters(parameters, plan_file)
@@ -6,17 +6,49 @@ module RSpec
6
6
  module Actions
7
7
  module Validate
8
8
  def validate(parameters)
9
- missing_parameters =
10
- required_parameters(execution_mode)
11
- .filter { |parameter| parameters[parameter].nil? }
9
+ required = required_parameters(execution_mode)
12
10
 
13
- return if missing_parameters.empty?
11
+ log_validate_starting(required)
12
+ log_validate_using_parameters(parameters)
14
13
 
15
- raise_missing_parameters(missing_parameters)
14
+ missing = determine_missing(parameters, required)
15
+
16
+ handle_result(missing)
16
17
  end
17
18
 
18
19
  private
19
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
+
20
52
  def raise_missing_parameters(parameters)
21
53
  parameters = parameters.collect { |parameter| "`:#{parameter}`" }
22
54
  if parameters.count == 1
@@ -18,7 +18,7 @@ module RSpec
18
18
  def execute(overrides = {}, &block)
19
19
  parameters = resolve_parameters(overrides, &block)
20
20
 
21
- execute_if_required(parameters) do
21
+ execute_if_required(:apply, parameters) do
22
22
  validate(parameters)
23
23
  clean(parameters)
24
24
  init(parameters)
@@ -18,7 +18,7 @@ module RSpec
18
18
  def execute(overrides = {}, &block)
19
19
  parameters = resolve_parameters(overrides, &block)
20
20
 
21
- execute_if_required(parameters) do
21
+ execute_if_required(:destroy, parameters) do
22
22
  validate(parameters)
23
23
  clean(parameters)
24
24
  init(parameters)
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RSpec
4
4
  module Terraform
5
- VERSION = '0.1.0.pre.47'
5
+ VERSION = '0.1.0.pre.49'
6
6
  end
7
7
  end
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.47
4
+ version: 0.1.0.pre.49
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-25 00:00:00.000000000 Z
11
+ date: 2022-10-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: confidante