cheffish 1.1.2 → 1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/cheffish/chef_run.rb +13 -0
- data/lib/cheffish/rspec.rb +8 -0
- data/lib/cheffish/rspec/chef_run_support.rb +19 -52
- data/lib/cheffish/rspec/matchers.rb +4 -81
- data/lib/cheffish/rspec/matchers/be_idempotent.rb +16 -0
- data/lib/cheffish/rspec/matchers/emit_no_warnings_or_errors.rb +15 -0
- data/lib/cheffish/rspec/matchers/have_updated.rb +37 -0
- data/lib/cheffish/rspec/matchers/partially_match.rb +63 -0
- data/lib/cheffish/rspec/recipe_run_wrapper.rb +2 -2
- data/lib/cheffish/rspec/repository_support.rb +1 -1
- data/lib/cheffish/version.rb +1 -1
- data/spec/integration/chef_acl_spec.rb +384 -420
- data/spec/integration/chef_client_spec.rb +18 -24
- data/spec/integration/chef_container_spec.rb +4 -6
- data/spec/integration/chef_group_spec.rb +30 -46
- data/spec/integration/chef_mirror_spec.rb +60 -89
- data/spec/integration/chef_node_spec.rb +96 -124
- data/spec/integration/chef_organization_spec.rb +38 -57
- data/spec/integration/chef_user_spec.rb +16 -22
- data/spec/integration/private_key_spec.rb +120 -168
- data/spec/integration/recipe_dsl_spec.rb +4 -6
- data/spec/support/spec_support.rb +1 -2
- metadata +13 -8
- data/lib/cheffish/rspec/chef_run_wrapper.rb +0 -5
@@ -15,12 +15,10 @@ describe Chef::Resource::ChefNode do
|
|
15
15
|
|
16
16
|
context 'and is empty' do
|
17
17
|
context 'and we run a recipe that creates node "blah"' do
|
18
|
-
with_converge do
|
19
|
-
chef_node 'blah'
|
20
|
-
end
|
21
|
-
|
22
18
|
it 'the node gets created' do
|
23
|
-
|
19
|
+
expect_recipe {
|
20
|
+
chef_node 'blah'
|
21
|
+
}.to have_updated 'chef_node[blah]', :create
|
24
22
|
expect(get('nodes/blah')['name']).to eq('blah')
|
25
23
|
end
|
26
24
|
end
|
@@ -39,13 +37,11 @@ describe Chef::Resource::ChefNode do
|
|
39
37
|
|
40
38
|
context 'and a recipe is run that creates node "blah" on the second chef server using with_chef_server' do
|
41
39
|
|
42
|
-
with_converge do
|
43
|
-
with_chef_server 'http://127.0.0.1:8899'
|
44
|
-
chef_node 'blah'
|
45
|
-
end
|
46
|
-
|
47
40
|
it 'the node is created on the second chef server but not the first' do
|
48
|
-
|
41
|
+
expect_recipe {
|
42
|
+
with_chef_server 'http://127.0.0.1:8899'
|
43
|
+
chef_node 'blah'
|
44
|
+
}.to have_updated 'chef_node[blah]', :create
|
49
45
|
expect { get('nodes/blah') }.to raise_error(Net::HTTPServerException)
|
50
46
|
expect(get('http://127.0.0.1:8899/nodes/blah')['name']).to eq('blah')
|
51
47
|
end
|
@@ -53,14 +49,12 @@ describe Chef::Resource::ChefNode do
|
|
53
49
|
|
54
50
|
context 'and a recipe is run that creates node "blah" on the second chef server using chef_server' do
|
55
51
|
|
56
|
-
with_converge do
|
57
|
-
chef_node 'blah' do
|
58
|
-
chef_server({ :chef_server_url => 'http://127.0.0.1:8899' })
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
52
|
it 'the node is created on the second chef server but not the first' do
|
63
|
-
|
53
|
+
expect_recipe {
|
54
|
+
chef_node 'blah' do
|
55
|
+
chef_server({ :chef_server_url => 'http://127.0.0.1:8899' })
|
56
|
+
end
|
57
|
+
}.to have_updated 'chef_node[blah]', :create
|
64
58
|
expect { get('nodes/blah') }.to raise_error(Net::HTTPServerException)
|
65
59
|
expect(get('http://127.0.0.1:8899/nodes/blah')['name']).to eq('blah')
|
66
60
|
end
|
@@ -71,12 +65,10 @@ describe Chef::Resource::ChefNode do
|
|
71
65
|
context 'and has a node named "blah"' do
|
72
66
|
node 'blah', {}
|
73
67
|
|
74
|
-
with_converge do
|
75
|
-
chef_node 'blah'
|
76
|
-
end
|
77
|
-
|
78
68
|
it 'chef_node "blah" does not get created or updated' do
|
79
|
-
|
69
|
+
expect_recipe {
|
70
|
+
chef_node 'blah'
|
71
|
+
}.not_to have_updated 'chef_node[blah]', :create
|
80
72
|
end
|
81
73
|
end
|
82
74
|
|
@@ -122,9 +114,9 @@ describe Chef::Resource::ChefNode do
|
|
122
114
|
}
|
123
115
|
|
124
116
|
it 'chef_node with no attributes modifies nothing' do
|
125
|
-
|
117
|
+
expect_recipe {
|
126
118
|
chef_node 'blah'
|
127
|
-
|
119
|
+
}.to be_up_to_date
|
128
120
|
expect(get('nodes/blah')).to include(
|
129
121
|
'name' => 'blah',
|
130
122
|
'chef_environment' => 'blah',
|
@@ -137,11 +129,11 @@ describe Chef::Resource::ChefNode do
|
|
137
129
|
end
|
138
130
|
|
139
131
|
it 'chef_node with complete true removes everything except default, automatic and override' do
|
140
|
-
|
132
|
+
expect_recipe {
|
141
133
|
chef_node 'blah' do
|
142
134
|
complete true
|
143
135
|
end
|
144
|
-
|
136
|
+
}.to be_updated
|
145
137
|
expect(get('nodes/blah')).to include(
|
146
138
|
'name' => 'blah',
|
147
139
|
'chef_environment' => '_default',
|
@@ -154,7 +146,7 @@ describe Chef::Resource::ChefNode do
|
|
154
146
|
end
|
155
147
|
|
156
148
|
it 'chef_node with complete true sets the given attributes' do
|
157
|
-
|
149
|
+
expect_recipe {
|
158
150
|
chef_node 'blah' do
|
159
151
|
chef_environment 'x'
|
160
152
|
run_list [ 'recipe[y]' ]
|
@@ -162,7 +154,7 @@ describe Chef::Resource::ChefNode do
|
|
162
154
|
tags 'c', 'd'
|
163
155
|
complete true
|
164
156
|
end
|
165
|
-
|
157
|
+
}.to be_updated
|
166
158
|
expect(get('nodes/blah')).to include(
|
167
159
|
'name' => 'blah',
|
168
160
|
'chef_environment' => 'x',
|
@@ -175,7 +167,7 @@ describe Chef::Resource::ChefNode do
|
|
175
167
|
end
|
176
168
|
|
177
169
|
it 'chef_node with complete true and partial attributes sets the given attributes' do
|
178
|
-
|
170
|
+
expect_recipe {
|
179
171
|
chef_node 'blah' do
|
180
172
|
chef_environment 'x'
|
181
173
|
recipe 'y'
|
@@ -183,7 +175,7 @@ describe Chef::Resource::ChefNode do
|
|
183
175
|
tags 'c', 'd'
|
184
176
|
complete true
|
185
177
|
end
|
186
|
-
|
178
|
+
}.to be_updated
|
187
179
|
expect(get('nodes/blah')).to include(
|
188
180
|
'name' => 'blah',
|
189
181
|
'chef_environment' => 'x',
|
@@ -212,12 +204,11 @@ describe Chef::Resource::ChefNode do
|
|
212
204
|
}
|
213
205
|
|
214
206
|
it 'chef_node with attributes {} removes all normal attributes but leaves tags, automatic and environment alone' do
|
215
|
-
|
207
|
+
expect_recipe {
|
216
208
|
chef_node 'blah' do
|
217
209
|
attributes({})
|
218
210
|
end
|
219
|
-
|
220
|
-
expect(chef_run).to have_updated('chef_node[blah]', :create)
|
211
|
+
}.to have_updated('chef_node[blah]', :create)
|
221
212
|
expect(get('nodes/blah')).to include(
|
222
213
|
'normal' => { 'tags' => [ 'a', 'b' ] },
|
223
214
|
'automatic' => { 'x' => 'y' },
|
@@ -226,12 +217,11 @@ describe Chef::Resource::ChefNode do
|
|
226
217
|
end
|
227
218
|
|
228
219
|
it 'chef_node with attributes { c => d } replaces normal but not tags/automatic/environment' do
|
229
|
-
|
220
|
+
expect_recipe {
|
230
221
|
chef_node 'blah' do
|
231
222
|
attributes 'c' => 'd'
|
232
223
|
end
|
233
|
-
|
234
|
-
expect(chef_run).to have_updated('chef_node[blah]', :create)
|
224
|
+
}.to have_updated('chef_node[blah]', :create)
|
235
225
|
expect(get('nodes/blah')).to include(
|
236
226
|
'normal' => { 'c' => 'd', 'tags' => [ 'a', 'b' ] },
|
237
227
|
'automatic' => { 'x' => 'y' },
|
@@ -240,12 +230,11 @@ describe Chef::Resource::ChefNode do
|
|
240
230
|
end
|
241
231
|
|
242
232
|
it 'chef_node with attributes { c => f => g, y => z } replaces normal but not tags/automatic/environment' do
|
243
|
-
|
233
|
+
expect_recipe {
|
244
234
|
chef_node 'blah' do
|
245
235
|
attributes 'c' => { 'f' => 'g' }, 'y' => 'z'
|
246
236
|
end
|
247
|
-
|
248
|
-
expect(chef_run).to have_updated('chef_node[blah]', :create)
|
237
|
+
}.to have_updated('chef_node[blah]', :create)
|
249
238
|
expect(get('nodes/blah')).to include(
|
250
239
|
'normal' => { 'c' => { 'f' => 'g' }, 'y' => 'z', 'tags' => [ 'a', 'b' ] },
|
251
240
|
'automatic' => { 'x' => 'y' },
|
@@ -254,12 +243,11 @@ describe Chef::Resource::ChefNode do
|
|
254
243
|
end
|
255
244
|
|
256
245
|
it 'chef_node with attributes { tags => [ "x" ] } replaces normal and tags but not automatic/environment' do
|
257
|
-
|
246
|
+
expect_recipe {
|
258
247
|
chef_node 'blah' do
|
259
248
|
attributes 'tags' => [ 'x' ]
|
260
249
|
end
|
261
|
-
|
262
|
-
expect(chef_run).to have_updated('chef_node[blah]', :create)
|
250
|
+
}.to have_updated('chef_node[blah]', :create)
|
263
251
|
expect(get('nodes/blah')).to include(
|
264
252
|
'normal' => { 'tags' => [ 'x' ] },
|
265
253
|
'automatic' => { 'x' => 'y' },
|
@@ -268,13 +256,12 @@ describe Chef::Resource::ChefNode do
|
|
268
256
|
end
|
269
257
|
|
270
258
|
it 'chef_node with tags "x" and attributes { "tags" => [ "y" ] } sets tags to "x"' do
|
271
|
-
|
259
|
+
expect_recipe {
|
272
260
|
chef_node 'blah' do
|
273
261
|
tags 'x'
|
274
262
|
attributes 'tags' => [ 'y' ]
|
275
263
|
end
|
276
|
-
|
277
|
-
expect(chef_run).to have_updated('chef_node[blah]', :create)
|
264
|
+
}.to have_updated('chef_node[blah]', :create)
|
278
265
|
expect(get('nodes/blah')).to include(
|
279
266
|
'normal' => {
|
280
267
|
'tags' => [ 'x' ]
|
@@ -302,10 +289,9 @@ describe Chef::Resource::ChefNode do
|
|
302
289
|
|
303
290
|
context 'basic scenarios' do
|
304
291
|
it 'chef_node with no attributes, leaves it alone' do
|
305
|
-
|
292
|
+
expect_recipe {
|
306
293
|
chef_node 'blah'
|
307
|
-
|
308
|
-
expect(chef_run).not_to have_updated('chef_node[blah]', :create)
|
294
|
+
}.not_to have_updated('chef_node[blah]', :create)
|
309
295
|
expect(get('nodes/blah')).to include(
|
310
296
|
'normal' => {
|
311
297
|
'a' => 'b',
|
@@ -318,12 +304,11 @@ describe Chef::Resource::ChefNode do
|
|
318
304
|
end
|
319
305
|
|
320
306
|
it 'chef_node with attribute d, e adds the attribute' do
|
321
|
-
|
307
|
+
expect_recipe {
|
322
308
|
chef_node 'blah' do
|
323
309
|
attribute 'd', 'e'
|
324
310
|
end
|
325
|
-
|
326
|
-
expect(chef_run).to have_updated('chef_node[blah]', :create)
|
311
|
+
}.to have_updated('chef_node[blah]', :create)
|
327
312
|
expect(get('nodes/blah')).to include(
|
328
313
|
'normal' => {
|
329
314
|
'a' => 'b',
|
@@ -337,12 +322,11 @@ describe Chef::Resource::ChefNode do
|
|
337
322
|
end
|
338
323
|
|
339
324
|
it 'chef_node with attribute tags, [ "x" ] replaces tags' do
|
340
|
-
|
325
|
+
expect_recipe {
|
341
326
|
chef_node 'blah' do
|
342
327
|
attribute 'tags', [ 'x' ]
|
343
328
|
end
|
344
|
-
|
345
|
-
expect(chef_run).to have_updated('chef_node[blah]', :create)
|
329
|
+
}.to have_updated('chef_node[blah]', :create)
|
346
330
|
expect(get('nodes/blah')).to include(
|
347
331
|
'normal' => {
|
348
332
|
'a' => 'b',
|
@@ -355,12 +339,11 @@ describe Chef::Resource::ChefNode do
|
|
355
339
|
end
|
356
340
|
|
357
341
|
it 'chef_node with attribute c, x replaces the attribute' do
|
358
|
-
|
342
|
+
expect_recipe {
|
359
343
|
chef_node 'blah' do
|
360
344
|
attribute 'c', 'x'
|
361
345
|
end
|
362
|
-
|
363
|
-
expect(chef_run).to have_updated('chef_node[blah]', :create)
|
346
|
+
}.to have_updated('chef_node[blah]', :create)
|
364
347
|
expect(get('nodes/blah')).to include(
|
365
348
|
'normal' => {
|
366
349
|
'a' => 'b',
|
@@ -373,12 +356,11 @@ describe Chef::Resource::ChefNode do
|
|
373
356
|
end
|
374
357
|
|
375
358
|
it 'chef_node with attribute c, { d => x } replaces the attribute' do
|
376
|
-
|
359
|
+
expect_recipe {
|
377
360
|
chef_node 'blah' do
|
378
361
|
attribute 'c', { 'd' => 'x' }
|
379
362
|
end
|
380
|
-
|
381
|
-
expect(chef_run).to have_updated('chef_node[blah]', :create)
|
363
|
+
}.to have_updated('chef_node[blah]', :create)
|
382
364
|
expect(get('nodes/blah')).to include(
|
383
365
|
'normal' => {
|
384
366
|
'a' => 'b',
|
@@ -391,12 +373,11 @@ describe Chef::Resource::ChefNode do
|
|
391
373
|
end
|
392
374
|
|
393
375
|
it 'chef_node with attribute [ c, d ], x replaces the attribute' do
|
394
|
-
|
376
|
+
expect_recipe {
|
395
377
|
chef_node 'blah' do
|
396
378
|
attribute [ 'c', 'd' ], 'x'
|
397
379
|
end
|
398
|
-
|
399
|
-
expect(chef_run).to have_updated('chef_node[blah]', :create)
|
380
|
+
}.to have_updated('chef_node[blah]', :create)
|
400
381
|
expect(get('nodes/blah')).to include(
|
401
382
|
'normal' => {
|
402
383
|
'a' => 'b',
|
@@ -409,32 +390,31 @@ describe Chef::Resource::ChefNode do
|
|
409
390
|
end
|
410
391
|
|
411
392
|
it 'chef_node with attribute [ a, b ], x raises an error' do
|
412
|
-
expect
|
413
|
-
|
393
|
+
expect {
|
394
|
+
converge {
|
414
395
|
chef_node 'blah' do
|
415
396
|
attribute [ 'a', 'b' ], 'x'
|
416
397
|
end
|
417
|
-
|
418
|
-
|
398
|
+
}
|
399
|
+
}.to raise_error /Attempt to set \["a", "b"\] to x when \["a"\] is not a hash/
|
419
400
|
end
|
420
401
|
|
421
402
|
it 'chef_node with attribute [ a, b, c ], x raises an error' do
|
422
|
-
expect
|
423
|
-
|
403
|
+
expect {
|
404
|
+
converge {
|
424
405
|
chef_node 'blah' do
|
425
406
|
attribute [ 'a', 'b', 'c' ], 'x'
|
426
407
|
end
|
427
|
-
|
428
|
-
|
408
|
+
}
|
409
|
+
}.to raise_error /Attempt to set \["a", "b", "c"\] to x when \["a"\] is not a hash/
|
429
410
|
end
|
430
411
|
|
431
412
|
it 'chef_node with attribute [ x, y ], z adds a new attribute' do
|
432
|
-
|
413
|
+
expect_recipe {
|
433
414
|
chef_node 'blah' do
|
434
415
|
attribute [ 'x', 'y' ], 'z'
|
435
416
|
end
|
436
|
-
|
437
|
-
expect(chef_run).to have_updated('chef_node[blah]', :create)
|
417
|
+
}.to have_updated('chef_node[blah]', :create)
|
438
418
|
expect(get('nodes/blah')).to include(
|
439
419
|
'normal' => {
|
440
420
|
'a' => 'b',
|
@@ -448,12 +428,11 @@ describe Chef::Resource::ChefNode do
|
|
448
428
|
end
|
449
429
|
|
450
430
|
it 'chef_node with attribute [], {} clears all attributes' do
|
451
|
-
|
431
|
+
expect_recipe {
|
452
432
|
chef_node 'blah' do
|
453
433
|
attribute([], {})
|
454
434
|
end
|
455
|
-
|
456
|
-
expect(chef_run).to have_updated('chef_node[blah]', :create)
|
435
|
+
}.to have_updated('chef_node[blah]', :create)
|
457
436
|
expect(get('nodes/blah')).to include(
|
458
437
|
'normal' => { },
|
459
438
|
'automatic' => { 'x' => 'y' },
|
@@ -464,12 +443,11 @@ describe Chef::Resource::ChefNode do
|
|
464
443
|
|
465
444
|
context 'delete' do
|
466
445
|
it 'chef_node with attribute a, :delete deletes the attribute' do
|
467
|
-
|
446
|
+
expect_recipe {
|
468
447
|
chef_node 'blah' do
|
469
448
|
attribute 'a', :delete
|
470
449
|
end
|
471
|
-
|
472
|
-
expect(chef_run).to have_updated('chef_node[blah]', :create)
|
450
|
+
}.to have_updated('chef_node[blah]', :create)
|
473
451
|
expect(get('nodes/blah')).to include(
|
474
452
|
'normal' => {
|
475
453
|
'c' => { 'd' => 'e' },
|
@@ -481,12 +459,11 @@ describe Chef::Resource::ChefNode do
|
|
481
459
|
end
|
482
460
|
|
483
461
|
it 'chef_node with attribute c, :delete deletes the attribute' do
|
484
|
-
|
462
|
+
expect_recipe {
|
485
463
|
chef_node 'blah' do
|
486
464
|
attribute 'c', :delete
|
487
465
|
end
|
488
|
-
|
489
|
-
expect(chef_run).to have_updated('chef_node[blah]', :create)
|
466
|
+
}.to have_updated('chef_node[blah]', :create)
|
490
467
|
expect(get('nodes/blah')).to include(
|
491
468
|
'normal' => {
|
492
469
|
'a' => 'b',
|
@@ -498,12 +475,11 @@ describe Chef::Resource::ChefNode do
|
|
498
475
|
end
|
499
476
|
|
500
477
|
it 'chef_node with attribute [ c, d ], :delete deletes the attribute' do
|
501
|
-
|
478
|
+
expect_recipe {
|
502
479
|
chef_node 'blah' do
|
503
480
|
attribute [ 'c', 'd' ], :delete
|
504
481
|
end
|
505
|
-
|
506
|
-
expect(chef_run).to have_updated('chef_node[blah]', :create)
|
482
|
+
}.to have_updated('chef_node[blah]', :create)
|
507
483
|
expect(get('nodes/blah')).to include(
|
508
484
|
'normal' => {
|
509
485
|
'a' => 'b',
|
@@ -516,12 +492,11 @@ describe Chef::Resource::ChefNode do
|
|
516
492
|
end
|
517
493
|
|
518
494
|
it 'chef_node with attribute xyz, :delete does nothing' do
|
519
|
-
|
495
|
+
expect_recipe {
|
520
496
|
chef_node 'blah' do
|
521
497
|
attribute 'xyz', :delete
|
522
498
|
end
|
523
|
-
|
524
|
-
expect(chef_run).not_to have_updated('chef_node[blah]', :create)
|
499
|
+
}.not_to have_updated('chef_node[blah]', :create)
|
525
500
|
expect(get('nodes/blah')).to include(
|
526
501
|
'normal' => {
|
527
502
|
'a' => 'b',
|
@@ -534,12 +509,11 @@ describe Chef::Resource::ChefNode do
|
|
534
509
|
end
|
535
510
|
|
536
511
|
it 'chef_node with attribute [ c, x ], :delete does nothing' do
|
537
|
-
|
512
|
+
expect_recipe {
|
538
513
|
chef_node 'blah' do
|
539
514
|
attribute [ 'c', 'x' ], :delete
|
540
515
|
end
|
541
|
-
|
542
|
-
expect(chef_run).not_to have_updated('chef_node[blah]', :create)
|
516
|
+
}.not_to have_updated('chef_node[blah]', :create)
|
543
517
|
expect(get('nodes/blah')).to include(
|
544
518
|
'normal' => {
|
545
519
|
'a' => 'b',
|
@@ -554,11 +528,11 @@ describe Chef::Resource::ChefNode do
|
|
554
528
|
|
555
529
|
context 'types' do
|
556
530
|
it 'chef_node with attribute a, true sets a to true' do
|
557
|
-
|
531
|
+
expect_recipe {
|
558
532
|
chef_node 'blah' do
|
559
533
|
attribute 'a', true
|
560
534
|
end
|
561
|
-
|
535
|
+
}.to be_updated
|
562
536
|
expect(get('nodes/blah')).to include(
|
563
537
|
'normal' => {
|
564
538
|
'a' => true,
|
@@ -571,11 +545,11 @@ describe Chef::Resource::ChefNode do
|
|
571
545
|
end
|
572
546
|
|
573
547
|
it 'chef_node with attribute a, 1 sets a to 1' do
|
574
|
-
|
548
|
+
expect_recipe {
|
575
549
|
chef_node 'blah' do
|
576
550
|
attribute 'a', 1
|
577
551
|
end
|
578
|
-
|
552
|
+
}.to be_updated
|
579
553
|
expect(get('nodes/blah')).to include(
|
580
554
|
'normal' => {
|
581
555
|
'a' => 1,
|
@@ -588,11 +562,11 @@ describe Chef::Resource::ChefNode do
|
|
588
562
|
end
|
589
563
|
|
590
564
|
it 'chef_node with attribute a, "1" sets a to "1"' do
|
591
|
-
|
565
|
+
expect_recipe {
|
592
566
|
chef_node 'blah' do
|
593
567
|
attribute 'a', "1"
|
594
568
|
end
|
595
|
-
|
569
|
+
}.to be_updated
|
596
570
|
expect(get('nodes/blah')).to include(
|
597
571
|
'normal' => {
|
598
572
|
'a' => "1",
|
@@ -605,11 +579,11 @@ describe Chef::Resource::ChefNode do
|
|
605
579
|
end
|
606
580
|
|
607
581
|
it 'chef_node with attribute a, "" sets a to ""' do
|
608
|
-
|
582
|
+
expect_recipe {
|
609
583
|
chef_node 'blah' do
|
610
584
|
attribute 'a', ""
|
611
585
|
end
|
612
|
-
|
586
|
+
}.to be_updated
|
613
587
|
expect(get('nodes/blah')).to include(
|
614
588
|
'normal' => {
|
615
589
|
'a' => "",
|
@@ -622,11 +596,11 @@ describe Chef::Resource::ChefNode do
|
|
622
596
|
end
|
623
597
|
|
624
598
|
it 'chef_node with attribute a, nil sets a to nil' do
|
625
|
-
|
599
|
+
expect_recipe {
|
626
600
|
chef_node 'blah' do
|
627
601
|
attribute 'a', nil
|
628
602
|
end
|
629
|
-
|
603
|
+
}.to be_updated
|
630
604
|
expect(get('nodes/blah')).to include(
|
631
605
|
'normal' => {
|
632
606
|
'a' => nil,
|
@@ -641,12 +615,12 @@ describe Chef::Resource::ChefNode do
|
|
641
615
|
|
642
616
|
context 'multiple attribute definitions' do
|
643
617
|
it 'chef_node with attribute a, x and c, y replaces both attributes' do
|
644
|
-
|
618
|
+
expect_recipe {
|
645
619
|
chef_node 'blah' do
|
646
620
|
attribute 'a', 'x'
|
647
621
|
attribute 'c', 'y'
|
648
622
|
end
|
649
|
-
|
623
|
+
}.to be_updated
|
650
624
|
expect(get('nodes/blah')).to include(
|
651
625
|
'normal' => {
|
652
626
|
'a' => 'x',
|
@@ -659,12 +633,12 @@ describe Chef::Resource::ChefNode do
|
|
659
633
|
end
|
660
634
|
|
661
635
|
it 'chef_node with attribute m, x and n, y adds both attributes' do
|
662
|
-
|
636
|
+
expect_recipe {
|
663
637
|
chef_node 'blah' do
|
664
638
|
attribute 'm', 'x'
|
665
639
|
attribute 'n', 'y'
|
666
640
|
end
|
667
|
-
|
641
|
+
}.to be_updated
|
668
642
|
expect(get('nodes/blah')).to include(
|
669
643
|
'normal' => {
|
670
644
|
'a' => 'b',
|
@@ -679,12 +653,12 @@ describe Chef::Resource::ChefNode do
|
|
679
653
|
end
|
680
654
|
|
681
655
|
it 'chef_node with attribute [x, y], z and [x, yy], zz adds both attributes' do
|
682
|
-
|
656
|
+
expect_recipe {
|
683
657
|
chef_node 'blah' do
|
684
658
|
attribute [ 'x', 'y' ], 'z'
|
685
659
|
attribute [ 'x', 'yy' ], 'zz'
|
686
660
|
end
|
687
|
-
|
661
|
+
}.to be_updated
|
688
662
|
expect(get('nodes/blah')).to include(
|
689
663
|
'normal' => {
|
690
664
|
'a' => 'b',
|
@@ -702,12 +676,12 @@ describe Chef::Resource::ChefNode do
|
|
702
676
|
|
703
677
|
describe 'precedence' do
|
704
678
|
it 'chef_node with attribute a, 1 and a, 2 sets a to 2' do
|
705
|
-
|
679
|
+
expect_recipe {
|
706
680
|
chef_node 'blah' do
|
707
681
|
attribute 'a', 1
|
708
682
|
attribute 'a', 2
|
709
683
|
end
|
710
|
-
|
684
|
+
}.to be_updated
|
711
685
|
expect(get('nodes/blah')).to include(
|
712
686
|
'normal' => {
|
713
687
|
'a' => 2,
|
@@ -720,12 +694,12 @@ describe Chef::Resource::ChefNode do
|
|
720
694
|
end
|
721
695
|
|
722
696
|
it 'chef_node with attribute [ x, y ], 1 and [ x, y ], 2 sets [ x, y ], 2' do
|
723
|
-
|
697
|
+
expect_recipe {
|
724
698
|
chef_node 'blah' do
|
725
699
|
attribute [ 'x', 'y' ], 1
|
726
700
|
attribute [ 'x', 'y' ], 2
|
727
701
|
end
|
728
|
-
|
702
|
+
}.to be_updated
|
729
703
|
expect(get('nodes/blah')).to include(
|
730
704
|
'normal' => {
|
731
705
|
'a' => 'b',
|
@@ -739,12 +713,12 @@ describe Chef::Resource::ChefNode do
|
|
739
713
|
end
|
740
714
|
|
741
715
|
it 'chef_node with attribute [ c, e ], { a => 1 }, [ c, e ], { b => 2 } sets b only' do
|
742
|
-
|
716
|
+
expect_recipe {
|
743
717
|
chef_node 'blah' do
|
744
718
|
attribute [ 'c', 'e' ], { 'a' => 1 }
|
745
719
|
attribute [ 'c', 'e' ], { 'b' => 2 }
|
746
720
|
end
|
747
|
-
|
721
|
+
}.to be_updated
|
748
722
|
expect(get('nodes/blah')).to include(
|
749
723
|
'normal' => {
|
750
724
|
'a' => 'b',
|
@@ -757,12 +731,12 @@ describe Chef::Resource::ChefNode do
|
|
757
731
|
end
|
758
732
|
|
759
733
|
it 'chef_node with attribute [ c, e ], { a => 1 }, [ c, e, b ], 2 sets both' do
|
760
|
-
|
734
|
+
expect_recipe {
|
761
735
|
chef_node 'blah' do
|
762
736
|
attribute [ 'c', 'e' ], { 'a' => 1 }
|
763
737
|
attribute [ 'c', 'e', 'b' ], 2
|
764
738
|
end
|
765
|
-
|
739
|
+
}.to be_updated
|
766
740
|
expect(get('nodes/blah')).to include(
|
767
741
|
'normal' => {
|
768
742
|
'a' => 'b',
|
@@ -775,12 +749,12 @@ describe Chef::Resource::ChefNode do
|
|
775
749
|
end
|
776
750
|
|
777
751
|
it 'chef_node with attribute [ c, e, b ], 2, [ c, e ], { a => 1 } sets a only' do
|
778
|
-
|
752
|
+
expect_recipe {
|
779
753
|
chef_node 'blah' do
|
780
754
|
attribute [ 'c', 'e', 'b' ], 2
|
781
755
|
attribute [ 'c', 'e' ], { 'a' => 1 }
|
782
756
|
end
|
783
|
-
|
757
|
+
}.to be_updated
|
784
758
|
expect(get('nodes/blah')).to include(
|
785
759
|
'normal' => {
|
786
760
|
'a' => 'b',
|
@@ -800,12 +774,10 @@ describe Chef::Resource::ChefNode do
|
|
800
774
|
when_the_chef_server 'is in OSC mode' do
|
801
775
|
context 'and is empty' do
|
802
776
|
context 'and we run a recipe that creates node "blah"' do
|
803
|
-
with_converge do
|
804
|
-
chef_node 'blah'
|
805
|
-
end
|
806
|
-
|
807
777
|
it 'the node gets created' do
|
808
|
-
|
778
|
+
expect_recipe {
|
779
|
+
chef_node 'blah'
|
780
|
+
}.to have_updated 'chef_node[blah]', :create
|
809
781
|
expect(get('nodes/blah')['name']).to eq('blah')
|
810
782
|
end
|
811
783
|
end
|