cheffish 4.0.0 → 4.1.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.
Files changed (63) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +8 -8
  3. data/Rakefile +24 -12
  4. data/cheffish.gemspec +15 -15
  5. data/lib/chef/resource/chef_acl.rb +63 -63
  6. data/lib/chef/resource/chef_client.rb +9 -9
  7. data/lib/chef/resource/chef_container.rb +9 -9
  8. data/lib/chef/resource/chef_data_bag.rb +9 -9
  9. data/lib/chef/resource/chef_data_bag_item.rb +27 -27
  10. data/lib/chef/resource/chef_environment.rb +21 -22
  11. data/lib/chef/resource/chef_group.rb +19 -19
  12. data/lib/chef/resource/chef_mirror.rb +32 -17
  13. data/lib/chef/resource/chef_node.rb +14 -14
  14. data/lib/chef/resource/chef_organization.rb +29 -30
  15. data/lib/chef/resource/chef_resolved_cookbooks.rb +7 -7
  16. data/lib/chef/resource/chef_role.rb +25 -22
  17. data/lib/chef/resource/chef_user.rb +13 -14
  18. data/lib/chef/resource/private_key.rb +24 -25
  19. data/lib/chef/resource/public_key.rb +6 -7
  20. data/lib/cheffish.rb +17 -17
  21. data/lib/cheffish/array_property.rb +2 -2
  22. data/lib/cheffish/base_properties.rb +3 -3
  23. data/lib/cheffish/base_resource.rb +8 -8
  24. data/lib/cheffish/basic_chef_client.rb +17 -17
  25. data/lib/cheffish/chef_actor_base.rb +8 -8
  26. data/lib/cheffish/chef_run.rb +7 -2
  27. data/lib/cheffish/chef_run_data.rb +2 -2
  28. data/lib/cheffish/chef_run_listener.rb +1 -1
  29. data/lib/cheffish/key_formatter.rb +16 -18
  30. data/lib/cheffish/merged_config.rb +5 -3
  31. data/lib/cheffish/node_properties.rb +11 -7
  32. data/lib/cheffish/recipe_dsl.rb +33 -34
  33. data/lib/cheffish/rspec.rb +3 -3
  34. data/lib/cheffish/rspec/chef_run_support.rb +13 -13
  35. data/lib/cheffish/rspec/matchers.rb +4 -4
  36. data/lib/cheffish/rspec/matchers/be_idempotent.rb +3 -3
  37. data/lib/cheffish/rspec/matchers/emit_no_warnings_or_errors.rb +3 -3
  38. data/lib/cheffish/rspec/matchers/have_updated.rb +3 -3
  39. data/lib/cheffish/rspec/recipe_run_wrapper.rb +8 -7
  40. data/lib/cheffish/rspec/repository_support.rb +6 -6
  41. data/lib/cheffish/server_api.rb +11 -11
  42. data/lib/cheffish/version.rb +1 -1
  43. data/spec/functional/fingerprint_spec.rb +12 -12
  44. data/spec/functional/merged_config_spec.rb +46 -6
  45. data/spec/functional/server_api_spec.rb +3 -3
  46. data/spec/integration/chef_acl_spec.rb +489 -489
  47. data/spec/integration/chef_client_spec.rb +39 -39
  48. data/spec/integration/chef_container_spec.rb +14 -14
  49. data/spec/integration/chef_data_bag_item_spec.rb +9 -9
  50. data/spec/integration/chef_group_spec.rb +219 -219
  51. data/spec/integration/chef_mirror_spec.rb +228 -228
  52. data/spec/integration/chef_node_spec.rb +511 -511
  53. data/spec/integration/chef_organization_spec.rb +126 -126
  54. data/spec/integration/chef_role_spec.rb +33 -33
  55. data/spec/integration/chef_user_spec.rb +37 -37
  56. data/spec/integration/private_key_spec.rb +154 -154
  57. data/spec/integration/recipe_dsl_spec.rb +10 -10
  58. data/spec/integration/rspec/converge_spec.rb +49 -49
  59. data/spec/support/key_support.rb +6 -6
  60. data/spec/support/spec_support.rb +3 -3
  61. data/spec/unit/get_private_key_spec.rb +19 -19
  62. data/spec/unit/recipe_run_wrapper_spec.rb +4 -4
  63. metadata +3 -3
@@ -1,8 +1,8 @@
1
- require 'support/spec_support'
2
- require 'cheffish/rspec/chef_run_support'
3
- require 'support/key_support'
1
+ require "support/spec_support"
2
+ require "cheffish/rspec/chef_run_support"
3
+ require "support/key_support"
4
4
 
5
- repo_path = Dir.mktmpdir('chef_repo')
5
+ repo_path = Dir.mktmpdir("chef_repo")
6
6
 
7
7
  describe Chef::Resource::PrivateKey do
8
8
  extend Cheffish::RSpec::ChefRunSupport
@@ -12,12 +12,12 @@ describe Chef::Resource::PrivateKey do
12
12
  Dir.mkdir(repo_path)
13
13
  end
14
14
 
15
- context 'with a recipe with a private_key' do
16
- it 'the private_key is created in pem format' do
17
- expect_recipe {
15
+ context "with a recipe with a private_key" do
16
+ it "the private_key is created in pem format" do
17
+ expect_recipe do
18
18
  private_key "#{repo_path}/blah"
19
- }.to have_updated "private_key[#{repo_path}/blah]", :create
20
- expect(IO.read("#{repo_path}/blah")).to start_with('-----BEGIN')
19
+ end.to have_updated "private_key[#{repo_path}/blah]", :create
20
+ expect(IO.read("#{repo_path}/blah")).to start_with("-----BEGIN")
21
21
  expect(OpenSSL::PKey.read(IO.read("#{repo_path}/blah"))).to be_kind_of(OpenSSL::PKey::RSA)
22
22
  end
23
23
  end
@@ -28,26 +28,26 @@ describe Chef::Resource::PrivateKey do
28
28
  Chef::Config.private_key_paths = [ repo_path, "#{repo_path}/other_keys" ]
29
29
  end
30
30
 
31
- it 'the private key is created in the private_key_write_path' do
32
- expect_recipe {
33
- private_key 'blah'
34
- }.to have_updated "private_key[blah]", :create
31
+ it "the private key is created in the private_key_write_path" do
32
+ expect_recipe do
33
+ private_key "blah"
34
+ end.to have_updated "private_key[blah]", :create
35
35
  expect(Chef::Config.private_key_write_path).to eq(repo_path)
36
36
  expect(File.exist?("#{repo_path}/blah")).to be true
37
37
  expect(File.exist?("#{repo_path}/other_keys/blah")).to be false
38
38
  expect(OpenSSL::PKey.read(IO.read("#{repo_path}/blah"))).to be_kind_of(OpenSSL::PKey::RSA)
39
- expect(OpenSSL::PKey.read(Cheffish.get_private_key('blah'))).to be_kind_of(OpenSSL::PKey::RSA)
39
+ expect(OpenSSL::PKey.read(Cheffish.get_private_key("blah"))).to be_kind_of(OpenSSL::PKey::RSA)
40
40
  end
41
41
 
42
- context 'and the private key already exists somewhere not in the write path' do
42
+ context "and the private key already exists somewhere not in the write path" do
43
43
  before :each do
44
44
  recipe { private_key "#{repo_path}/other_keys/blah" }.converge
45
45
  end
46
46
 
47
- it 'the private expect(key).to not update' do
48
- expect_recipe {
49
- private_key 'blah'
50
- }.not_to have_updated "private_key[blah]", :create
47
+ it "the private expect(key).to not update" do
48
+ expect_recipe do
49
+ private_key "blah"
50
+ end.not_to have_updated "private_key[blah]", :create
51
51
 
52
52
  expect(File.exist?("#{repo_path}/blah")).to be false
53
53
  expect(File.exist?("#{repo_path}/other_keys/blah")).to be true
@@ -55,68 +55,68 @@ describe Chef::Resource::PrivateKey do
55
55
  end
56
56
  end
57
57
 
58
- context 'with a private key' do
58
+ context "with a private key" do
59
59
  before :each do
60
60
  Cheffish::BasicChefClient.converge_block do
61
61
  private_key "#{repo_path}/blah"
62
62
  end
63
63
  end
64
64
 
65
- context 'and a private_key that copies it in der format' do
66
- it 'the private_key is copied in der format and is identical' do
67
- expect_recipe {
65
+ context "and a private_key that copies it in der format" do
66
+ it "the private_key is copied in der format and is identical" do
67
+ expect_recipe do
68
68
  private_key "#{repo_path}/blah.der" do
69
69
  source_key_path "#{repo_path}/blah"
70
70
  format :der
71
71
  end
72
- }.to have_updated "private_key[#{repo_path}/blah.der]", :create
72
+ end.to have_updated "private_key[#{repo_path}/blah.der]", :create
73
73
  key_str = IO.read("#{repo_path}/blah.der")
74
- expect(key_str).not_to start_with('-----BEGIN')
75
- expect(key_str).not_to start_with('ssh-')
74
+ expect(key_str).not_to start_with("-----BEGIN")
75
+ expect(key_str).not_to start_with("ssh-")
76
76
  expect("#{repo_path}/blah.der").to match_private_key("#{repo_path}/blah")
77
77
  end
78
78
  end
79
79
 
80
- it 'a private_key that copies it from in-memory as a string succeeds' do
81
- expect_recipe {
80
+ it "a private_key that copies it from in-memory as a string succeeds" do
81
+ expect_recipe do
82
82
  private_key "#{repo_path}/blah.der" do
83
83
  source_key IO.read("#{repo_path}/blah")
84
84
  format :der
85
85
  end
86
- }.to have_updated "private_key[#{repo_path}/blah.der]", :create
86
+ end.to have_updated "private_key[#{repo_path}/blah.der]", :create
87
87
  key_str = IO.read("#{repo_path}/blah.der")
88
- expect(key_str).not_to start_with('-----BEGIN')
89
- expect(key_str).not_to start_with('ssh-')
88
+ expect(key_str).not_to start_with("-----BEGIN")
89
+ expect(key_str).not_to start_with("ssh-")
90
90
  expect("#{repo_path}/blah.der").to match_private_key("#{repo_path}/blah")
91
91
  end
92
92
 
93
- it 'a private_key that copies it from in-memory as a key succeeds' do
93
+ it "a private_key that copies it from in-memory as a key succeeds" do
94
94
  key = OpenSSL::PKey.read(IO.read("#{repo_path}/blah"))
95
- expect_recipe {
95
+ expect_recipe do
96
96
  private_key "#{repo_path}/blah.der" do
97
97
  source_key key
98
98
  format :der
99
99
  end
100
- }.to have_updated "private_key[#{repo_path}/blah.der]", :create
100
+ end.to have_updated "private_key[#{repo_path}/blah.der]", :create
101
101
  key_str = IO.read("#{repo_path}/blah.der")
102
- expect(key_str).not_to start_with('-----BEGIN')
103
- expect(key_str).not_to start_with('ssh-')
102
+ expect(key_str).not_to start_with("-----BEGIN")
103
+ expect(key_str).not_to start_with("ssh-")
104
104
  expect("#{repo_path}/blah.der").to match_private_key("#{repo_path}/blah")
105
105
  end
106
106
 
107
- context 'and a public_key recipe' do
108
- it 'the public_key is created' do
109
- expect_recipe {
107
+ context "and a public_key recipe" do
108
+ it "the public_key is created" do
109
+ expect_recipe do
110
110
  public_key "#{repo_path}/blah.pub" do
111
111
  source_key_path "#{repo_path}/blah"
112
112
  end
113
- }.to have_updated "public_key[#{repo_path}/blah.pub]", :create
114
- expect(IO.read("#{repo_path}/blah.pub")).to start_with('ssh-rsa ')
113
+ end.to have_updated "public_key[#{repo_path}/blah.pub]", :create
114
+ expect(IO.read("#{repo_path}/blah.pub")).to start_with("ssh-rsa ")
115
115
  expect("#{repo_path}/blah.pub").to be_public_key_for "#{repo_path}/blah"
116
116
  end
117
117
  end
118
118
 
119
- context 'and a public key' do
119
+ context "and a public key" do
120
120
  before :each do
121
121
  Cheffish::BasicChefClient.converge_block do
122
122
  public_key "#{repo_path}/blah.pub" do
@@ -125,110 +125,110 @@ describe Chef::Resource::PrivateKey do
125
125
  end
126
126
  end
127
127
 
128
- context 'and public_key resource based off the public key file' do
129
- it 'the second public_key is created' do
130
- expect_recipe {
128
+ context "and public_key resource based off the public key file" do
129
+ it "the second public_key is created" do
130
+ expect_recipe do
131
131
  public_key "#{repo_path}/blah.pub2" do
132
132
  source_key_path "#{repo_path}/blah.pub"
133
133
  end
134
- }.to have_updated "public_key[#{repo_path}/blah.pub2]", :create
135
- expect(IO.read("#{repo_path}/blah.pub")).to start_with('ssh-rsa ')
134
+ end.to have_updated "public_key[#{repo_path}/blah.pub2]", :create
135
+ expect(IO.read("#{repo_path}/blah.pub")).to start_with("ssh-rsa ")
136
136
  expect("#{repo_path}/blah.pub").to be_public_key_for "#{repo_path}/blah"
137
137
  end
138
138
  end
139
139
 
140
- context 'and another public_key based off the first public_key in-memory in a string' do
141
- it 'the second public_key is created' do
142
- expect_recipe {
140
+ context "and another public_key based off the first public_key in-memory in a string" do
141
+ it "the second public_key is created" do
142
+ expect_recipe do
143
143
  public_key "#{repo_path}/blah.pub2" do
144
144
  source_key IO.read("#{repo_path}/blah.pub")
145
145
  end
146
- }.to have_updated "public_key[#{repo_path}/blah.pub2]", :create
147
- expect(IO.read("#{repo_path}/blah.pub")).to start_with('ssh-rsa ')
146
+ end.to have_updated "public_key[#{repo_path}/blah.pub2]", :create
147
+ expect(IO.read("#{repo_path}/blah.pub")).to start_with("ssh-rsa ")
148
148
  expect("#{repo_path}/blah.pub").to be_public_key_for "#{repo_path}/blah"
149
149
  end
150
150
  end
151
151
 
152
- it 'and another public_key based off the first public_key in-memory in a key, the second public_key is created' do
152
+ it "and another public_key based off the first public_key in-memory in a key, the second public_key is created" do
153
153
  key, format = Cheffish::KeyFormatter.decode(IO.read("#{repo_path}/blah.pub"))
154
154
 
155
- expect_recipe {
155
+ expect_recipe do
156
156
  public_key "#{repo_path}/blah.pub2" do
157
157
  source_key key
158
158
  end
159
- }.to have_updated "public_key[#{repo_path}/blah.pub2]", :create
160
- expect(IO.read("#{repo_path}/blah.pub")).to start_with('ssh-rsa ')
159
+ end.to have_updated "public_key[#{repo_path}/blah.pub2]", :create
160
+ expect(IO.read("#{repo_path}/blah.pub")).to start_with("ssh-rsa ")
161
161
  expect("#{repo_path}/blah.pub").to be_public_key_for "#{repo_path}/blah"
162
162
  end
163
163
 
164
- context 'and another public_key in :pem format based off the first public_key' do
165
- it 'the second public_key is created' do
166
- expect_recipe {
164
+ context "and another public_key in :pem format based off the first public_key" do
165
+ it "the second public_key is created" do
166
+ expect_recipe do
167
167
  public_key "#{repo_path}/blah.pub2" do
168
168
  source_key_path "#{repo_path}/blah.pub"
169
169
  format :pem
170
170
  end
171
- }.to have_updated "public_key[#{repo_path}/blah.pub2]", :create
172
- expect(IO.read("#{repo_path}/blah.pub")).to start_with('ssh-rsa ')
171
+ end.to have_updated "public_key[#{repo_path}/blah.pub2]", :create
172
+ expect(IO.read("#{repo_path}/blah.pub")).to start_with("ssh-rsa ")
173
173
  expect("#{repo_path}/blah.pub").to be_public_key_for "#{repo_path}/blah"
174
174
  end
175
175
  end
176
176
 
177
- context 'and another public_key in :der format based off the first public_key' do
178
- it 'the second public_key is created' do
179
- expect_recipe {
177
+ context "and another public_key in :der format based off the first public_key" do
178
+ it "the second public_key is created" do
179
+ expect_recipe do
180
180
  public_key "#{repo_path}/blah.pub2" do
181
181
  source_key_path "#{repo_path}/blah.pub"
182
182
  format :pem
183
183
  end
184
- }.to have_updated "public_key[#{repo_path}/blah.pub2]", :create
185
- expect(IO.read("#{repo_path}/blah.pub")).to start_with('ssh-rsa ')
184
+ end.to have_updated "public_key[#{repo_path}/blah.pub2]", :create
185
+ expect(IO.read("#{repo_path}/blah.pub")).to start_with("ssh-rsa ")
186
186
  expect("#{repo_path}/blah.pub").to be_public_key_for "#{repo_path}/blah"
187
187
  end
188
188
  end
189
189
  end
190
190
 
191
- context 'and a public_key resource in pem format' do
192
- it 'the public_key is created' do
193
- expect_recipe {
191
+ context "and a public_key resource in pem format" do
192
+ it "the public_key is created" do
193
+ expect_recipe do
194
194
  public_key "#{repo_path}/blah.pub" do
195
195
  source_key_path "#{repo_path}/blah"
196
196
  format :pem
197
197
  end
198
- }.to have_updated "public_key[#{repo_path}/blah.pub]", :create
199
- expect(IO.read("#{repo_path}/blah.pub")).to start_with('-----BEGIN')
198
+ end.to have_updated "public_key[#{repo_path}/blah.pub]", :create
199
+ expect(IO.read("#{repo_path}/blah.pub")).to start_with("-----BEGIN")
200
200
  expect("#{repo_path}/blah.pub").to be_public_key_for "#{repo_path}/blah"
201
201
  end
202
202
  end
203
203
 
204
- context 'and a public_key resource in der format' do
205
- it 'the public_key is created in openssh format' do
206
- expect_recipe {
204
+ context "and a public_key resource in der format" do
205
+ it "the public_key is created in openssh format" do
206
+ expect_recipe do
207
207
  public_key "#{repo_path}/blah.pub" do
208
208
  source_key_path "#{repo_path}/blah"
209
209
  format :der
210
210
  end
211
- }.to have_updated "public_key[#{repo_path}/blah.pub]", :create
212
- expect(IO.read("#{repo_path}/blah.pub")).not_to start_with('-----BEGIN')
213
- expect(IO.read("#{repo_path}/blah.pub")).not_to start_with('ssh-rsa')
211
+ end.to have_updated "public_key[#{repo_path}/blah.pub]", :create
212
+ expect(IO.read("#{repo_path}/blah.pub")).not_to start_with("-----BEGIN")
213
+ expect(IO.read("#{repo_path}/blah.pub")).not_to start_with("ssh-rsa")
214
214
  expect("#{repo_path}/blah.pub").to be_public_key_for "#{repo_path}/blah"
215
215
  end
216
216
  end
217
217
  end
218
218
 
219
- context 'with a recipe with a private_key in der format' do
220
- it 'the private_key is created' do
221
- expect_recipe {
219
+ context "with a recipe with a private_key in der format" do
220
+ it "the private_key is created" do
221
+ expect_recipe do
222
222
  private_key "#{repo_path}/blah" do
223
223
  format :der
224
224
  end
225
- }.to have_updated "private_key[#{repo_path}/blah]", :create
226
- expect(IO.read("#{repo_path}/blah")).not_to start_with('-----BEGIN')
225
+ end.to have_updated "private_key[#{repo_path}/blah]", :create
226
+ expect(IO.read("#{repo_path}/blah")).not_to start_with("-----BEGIN")
227
227
  expect(OpenSSL::PKey.read(IO.read("#{repo_path}/blah"))).to be_kind_of(OpenSSL::PKey::RSA)
228
228
  end
229
229
  end
230
230
 
231
- context 'with a private key in der format' do
231
+ context "with a private key in der format" do
232
232
  before :each do
233
233
  Cheffish::BasicChefClient.converge_block do
234
234
  private_key "#{repo_path}/blah" do
@@ -237,157 +237,157 @@ describe Chef::Resource::PrivateKey do
237
237
  end
238
238
  end
239
239
 
240
- context 'and a public_key' do
241
- it 'the public_key is created in openssh format' do
242
- expect_recipe {
240
+ context "and a public_key" do
241
+ it "the public_key is created in openssh format" do
242
+ expect_recipe do
243
243
  public_key "#{repo_path}/blah.pub" do
244
244
  source_key_path "#{repo_path}/blah"
245
245
  end
246
- }.to have_updated "public_key[#{repo_path}/blah.pub]", :create
247
- expect(IO.read("#{repo_path}/blah.pub")).to start_with('ssh-rsa ')
246
+ end.to have_updated "public_key[#{repo_path}/blah.pub]", :create
247
+ expect(IO.read("#{repo_path}/blah.pub")).to start_with("ssh-rsa ")
248
248
  expect("#{repo_path}/blah.pub").to be_public_key_for "#{repo_path}/blah"
249
249
  end
250
250
  end
251
251
  end
252
252
 
253
- context 'with a recipe with a private_key with a pass_phrase' do
254
- it 'the private_key is created' do
255
- expect_recipe {
253
+ context "with a recipe with a private_key with a pass_phrase" do
254
+ it "the private_key is created" do
255
+ expect_recipe do
256
256
  private_key "#{repo_path}/blah" do
257
- pass_phrase 'hello'
257
+ pass_phrase "hello"
258
258
  end
259
- }.to have_updated "private_key[#{repo_path}/blah]", :create
260
- expect(IO.read("#{repo_path}/blah")).to start_with('-----BEGIN')
261
- expect(OpenSSL::PKey.read(IO.read("#{repo_path}/blah"), 'hello')).to be_kind_of(OpenSSL::PKey::RSA)
259
+ end.to have_updated "private_key[#{repo_path}/blah]", :create
260
+ expect(IO.read("#{repo_path}/blah")).to start_with("-----BEGIN")
261
+ expect(OpenSSL::PKey.read(IO.read("#{repo_path}/blah"), "hello")).to be_kind_of(OpenSSL::PKey::RSA)
262
262
  end
263
263
  end
264
264
 
265
- context 'with a private key with a pass phrase' do
265
+ context "with a private key with a pass phrase" do
266
266
  before :each do
267
267
  Cheffish::BasicChefClient.converge_block do
268
268
  private_key "#{repo_path}/blah" do
269
- pass_phrase 'hello'
269
+ pass_phrase "hello"
270
270
  end
271
271
  end
272
272
  end
273
273
 
274
- context 'and a private_key that copies it in der format' do
275
- it 'the private_key is copied in der format and is identical' do
276
- expect_recipe {
274
+ context "and a private_key that copies it in der format" do
275
+ it "the private_key is copied in der format and is identical" do
276
+ expect_recipe do
277
277
  private_key "#{repo_path}/blah.der" do
278
278
  source_key_path "#{repo_path}/blah"
279
- source_key_pass_phrase 'hello'
279
+ source_key_pass_phrase "hello"
280
280
  format :der
281
281
  end
282
- }.to have_updated "private_key[#{repo_path}/blah.der]", :create
282
+ end.to have_updated "private_key[#{repo_path}/blah.der]", :create
283
283
  key_str = IO.read("#{repo_path}/blah.der")
284
- expect(key_str).not_to start_with('-----BEGIN')
285
- expect(key_str).not_to start_with('ssh-')
286
- expect("#{repo_path}/blah.der").to match_private_key("#{repo_path}/blah", 'hello')
284
+ expect(key_str).not_to start_with("-----BEGIN")
285
+ expect(key_str).not_to start_with("ssh-")
286
+ expect("#{repo_path}/blah.der").to match_private_key("#{repo_path}/blah", "hello")
287
287
  end
288
288
  end
289
289
 
290
- context 'and a private_key resource pointing at it without a pass_phrase' do
291
- it 'the run fails with an exception' do
292
- expect {
293
- converge {
290
+ context "and a private_key resource pointing at it without a pass_phrase" do
291
+ it "the run fails with an exception" do
292
+ expect do
293
+ converge do
294
294
  private_key "#{repo_path}/blah"
295
- }
296
- }.to raise_error /missing pass phrase?/
295
+ end
296
+ end.to raise_error /missing pass phrase?/
297
297
  end
298
298
  end
299
299
 
300
- context 'and a private_key resource with no pass phrase and regenerate_if_different' do
301
- it 'the private_key is regenerated' do
302
- expect_recipe {
300
+ context "and a private_key resource with no pass phrase and regenerate_if_different" do
301
+ it "the private_key is regenerated" do
302
+ expect_recipe do
303
303
  private_key "#{repo_path}/blah" do
304
304
  regenerate_if_different true
305
305
  end
306
- }.to have_updated "private_key[#{repo_path}/blah]", :create
307
- expect(IO.read("#{repo_path}/blah")).to start_with('-----BEGIN')
306
+ end.to have_updated "private_key[#{repo_path}/blah]", :create
307
+ expect(IO.read("#{repo_path}/blah")).to start_with("-----BEGIN")
308
308
  expect(OpenSSL::PKey.read(IO.read("#{repo_path}/blah"))).to be_kind_of(OpenSSL::PKey::RSA)
309
309
  end
310
310
  end
311
311
 
312
- it 'a private_key resource that copies it from in-memory as a string succeeds' do
313
- expect_recipe {
312
+ it "a private_key resource that copies it from in-memory as a string succeeds" do
313
+ expect_recipe do
314
314
  private_key "#{repo_path}/blah.der" do
315
315
  source_key IO.read("#{repo_path}/blah")
316
- source_key_pass_phrase 'hello'
316
+ source_key_pass_phrase "hello"
317
317
  format :der
318
318
  end
319
- }.to have_updated "private_key[#{repo_path}/blah.der]", :create
319
+ end.to have_updated "private_key[#{repo_path}/blah.der]", :create
320
320
  key_str = IO.read("#{repo_path}/blah.der")
321
- expect(key_str).not_to start_with('-----BEGIN')
322
- expect(key_str).not_to start_with('ssh-')
323
- expect("#{repo_path}/blah.der").to match_private_key("#{repo_path}/blah", 'hello')
321
+ expect(key_str).not_to start_with("-----BEGIN")
322
+ expect(key_str).not_to start_with("ssh-")
323
+ expect("#{repo_path}/blah.der").to match_private_key("#{repo_path}/blah", "hello")
324
324
  end
325
325
 
326
- context 'and a public_key' do
327
- it 'the public_key is created in openssh format' do
328
- expect_recipe {
326
+ context "and a public_key" do
327
+ it "the public_key is created in openssh format" do
328
+ expect_recipe do
329
329
  public_key "#{repo_path}/blah.pub" do
330
330
  source_key_path "#{repo_path}/blah"
331
- source_key_pass_phrase 'hello'
331
+ source_key_pass_phrase "hello"
332
332
  end
333
- }.to have_updated "public_key[#{repo_path}/blah.pub]", :create
334
- expect(IO.read("#{repo_path}/blah.pub")).to start_with('ssh-rsa ')
335
- expect("#{repo_path}/blah.pub").to be_public_key_for "#{repo_path}/blah", 'hello'
333
+ end.to have_updated "public_key[#{repo_path}/blah.pub]", :create
334
+ expect(IO.read("#{repo_path}/blah.pub")).to start_with("ssh-rsa ")
335
+ expect("#{repo_path}/blah.pub").to be_public_key_for "#{repo_path}/blah", "hello"
336
336
  end
337
337
  end
338
338
 
339
- context 'and a public_key derived from the private key in an in-memory string' do
340
- it 'the public_key is created in openssh format' do
341
- expect_recipe {
339
+ context "and a public_key derived from the private key in an in-memory string" do
340
+ it "the public_key is created in openssh format" do
341
+ expect_recipe do
342
342
  public_key "#{repo_path}/blah.pub" do
343
343
  source_key IO.read("#{repo_path}/blah")
344
- source_key_pass_phrase 'hello'
344
+ source_key_pass_phrase "hello"
345
345
  end
346
- }.to have_updated "public_key[#{repo_path}/blah.pub]", :create
347
- expect(IO.read("#{repo_path}/blah.pub")).to start_with('ssh-rsa ')
348
- expect("#{repo_path}/blah.pub").to be_public_key_for "#{repo_path}/blah", 'hello'
346
+ end.to have_updated "public_key[#{repo_path}/blah.pub]", :create
347
+ expect(IO.read("#{repo_path}/blah.pub")).to start_with("ssh-rsa ")
348
+ expect("#{repo_path}/blah.pub").to be_public_key_for "#{repo_path}/blah", "hello"
349
349
  end
350
350
  end
351
351
  end
352
352
 
353
- context 'with a recipe with a private_key and public_key_path' do
354
- it 'the private_key and public_key are created' do
355
- expect_recipe {
353
+ context "with a recipe with a private_key and public_key_path" do
354
+ it "the private_key and public_key are created" do
355
+ expect_recipe do
356
356
  private_key "#{repo_path}/blah" do
357
357
  public_key_path "#{repo_path}/blah.pub"
358
358
  end
359
- }.to have_updated "private_key[#{repo_path}/blah]", :create
360
- expect(IO.read("#{repo_path}/blah")).to start_with('-----BEGIN')
359
+ end.to have_updated "private_key[#{repo_path}/blah]", :create
360
+ expect(IO.read("#{repo_path}/blah")).to start_with("-----BEGIN")
361
361
  expect(OpenSSL::PKey.read(IO.read("#{repo_path}/blah"))).to be_kind_of(OpenSSL::PKey::RSA)
362
- expect(IO.read("#{repo_path}/blah.pub")).to start_with('ssh-rsa ')
362
+ expect(IO.read("#{repo_path}/blah.pub")).to start_with("ssh-rsa ")
363
363
  expect("#{repo_path}/blah.pub").to be_public_key_for("#{repo_path}/blah")
364
364
  end
365
365
  end
366
366
 
367
- context 'with a recipe with a private_key and public_key_path and public_key_format' do
368
- it 'the private_key and public_key are created' do
369
- expect_recipe {
367
+ context "with a recipe with a private_key and public_key_path and public_key_format" do
368
+ it "the private_key and public_key are created" do
369
+ expect_recipe do
370
370
  private_key "#{repo_path}/blah" do
371
371
  public_key_path "#{repo_path}/blah.pub.der"
372
372
  public_key_format :der
373
373
  end
374
- }.to have_updated "private_key[#{repo_path}/blah]", :create
375
- expect(IO.read("#{repo_path}/blah")).to start_with('-----BEGIN')
374
+ end.to have_updated "private_key[#{repo_path}/blah]", :create
375
+ expect(IO.read("#{repo_path}/blah")).to start_with("-----BEGIN")
376
376
  expect(OpenSSL::PKey.read(IO.read("#{repo_path}/blah"))).to be_kind_of(OpenSSL::PKey::RSA)
377
- expect(IO.read("#{repo_path}/blah.pub.der")).not_to start_with('ssh-rsa ')
377
+ expect(IO.read("#{repo_path}/blah.pub.der")).not_to start_with("ssh-rsa ")
378
378
  expect("#{repo_path}/blah.pub.der").to be_public_key_for("#{repo_path}/blah")
379
379
  end
380
380
  end
381
381
 
382
- context 'with a recipe with a private_key with path :none' do
383
- it 'the private_key is created' do
382
+ context "with a recipe with a private_key with path :none" do
383
+ it "the private_key is created" do
384
384
  got_private_key = nil
385
- expect_recipe {
386
- private_key 'in_memory' do
385
+ expect_recipe do
386
+ private_key "in_memory" do
387
387
  path :none
388
388
  after { |resource, private_key| got_private_key = private_key }
389
389
  end
390
- }.to have_updated "private_key[in_memory]", :create
390
+ end.to have_updated "private_key[in_memory]", :create
391
391
  expect(got_private_key).to be_kind_of(OpenSSL::PKey::RSA)
392
392
  end
393
393
  end