knife-essentials 0.9.8 → 1.0.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
@@ -50,14 +50,14 @@ EOM
50
50
  when_the_repository 'has a node with no environment or run_list' do
51
51
  file 'nodes/mort.json', {}
52
52
  it 'knife deps reports just the node' do
53
- knife('deps --repo-mode=everything /nodes/mort.json').should_succeed "/nodes/mort.json\n"
53
+ knife('deps /nodes/mort.json').should_succeed "/nodes/mort.json\n"
54
54
  end
55
55
  end
56
56
  when_the_repository 'has a node with an environment' do
57
57
  file 'environments/desert.json', {}
58
58
  file 'nodes/mort.json', { 'chef_environment' => 'desert' }
59
59
  it 'knife deps reports just the node' do
60
- knife('deps --repo-mode=everything /nodes/mort.json').should_succeed "/environments/desert.json\n/nodes/mort.json\n"
60
+ knife('deps /nodes/mort.json').should_succeed "/environments/desert.json\n/nodes/mort.json\n"
61
61
  end
62
62
  end
63
63
  when_the_repository 'has a node with roles and recipes in its run_list' do
@@ -68,7 +68,7 @@ EOM
68
68
  file 'cookbooks/soup/recipes/chicken.rb', ''
69
69
  file 'nodes/mort.json', { 'run_list' => %w(role[minor] recipe[quiche] recipe[soup::chicken]) }
70
70
  it 'knife deps reports just the node' do
71
- knife('deps --repo-mode=everything /nodes/mort.json').should_succeed <<EOM
71
+ knife('deps /nodes/mort.json').should_succeed <<EOM
72
72
  /roles/minor.json
73
73
  /cookbooks/quiche
74
74
  /cookbooks/soup
@@ -115,7 +115,7 @@ EOM
115
115
  file 'nodes/bart.json', { 'run_list' => [ 'role[minor]' ] }
116
116
 
117
117
  it 'knife deps reports all dependencies' do
118
- knife('deps --repo-mode=everything /nodes/mort.json').should_succeed <<EOM
118
+ knife('deps /nodes/mort.json').should_succeed <<EOM
119
119
  /environments/desert.json
120
120
  /roles/minor.json
121
121
  /cookbooks/quiche
@@ -125,7 +125,7 @@ EOM
125
125
  EOM
126
126
  end
127
127
  it 'knife deps * reports all dependencies of all things' do
128
- knife('deps --repo-mode=everything /nodes/*').should_succeed <<EOM
128
+ knife('deps /nodes/*').should_succeed <<EOM
129
129
  /roles/minor.json
130
130
  /nodes/bart.json
131
131
  /environments/desert.json
@@ -136,7 +136,7 @@ EOM
136
136
  EOM
137
137
  end
138
138
  it 'knife deps a b reports all dependencies of a and b' do
139
- knife('deps --repo-mode=everything /nodes/bart.json /nodes/mort.json').should_succeed <<EOM
139
+ knife('deps /nodes/bart.json /nodes/mort.json').should_succeed <<EOM
140
140
  /roles/minor.json
141
141
  /nodes/bart.json
142
142
  /environments/desert.json
@@ -147,7 +147,7 @@ EOM
147
147
  EOM
148
148
  end
149
149
  it 'knife deps --tree /* shows dependencies in a tree' do
150
- knife('deps --tree --repo-mode=everything /nodes/*').should_succeed <<EOM
150
+ knife('deps --tree /nodes/*').should_succeed <<EOM
151
151
  /nodes/bart.json
152
152
  /roles/minor.json
153
153
  /nodes/mort.json
@@ -159,7 +159,7 @@ EOM
159
159
  EOM
160
160
  end
161
161
  it 'knife deps --tree --no-recurse shows only the first level of dependencies' do
162
- knife('deps --tree --no-recurse --repo-mode=everything /nodes/*').should_succeed <<EOM
162
+ knife('deps --tree --no-recurse /nodes/*').should_succeed <<EOM
163
163
  /nodes/bart.json
164
164
  /roles/minor.json
165
165
  /nodes/mort.json
@@ -233,7 +233,7 @@ EOM
233
233
  )
234
234
  end
235
235
  it 'knife deps /nodes/x.json reports an error' do
236
- knife('deps --repo-mode=everything /nodes/x.json').should_fail(
236
+ knife('deps /nodes/x.json').should_fail(
237
237
  :exit_code => 2,
238
238
  :stdout => "/nodes/x.json\n",
239
239
  :stderr => "ERROR: /nodes/x.json: No such file or directory\n"
@@ -274,7 +274,7 @@ EOM
274
274
  when_the_repository 'is missing a dependent environment' do
275
275
  file 'nodes/mort.json', { 'chef_environment' => 'desert' }
276
276
  it 'knife deps reports the environment, along with an error' do
277
- knife('deps --repo-mode=everything /nodes/mort.json').should_fail(
277
+ knife('deps /nodes/mort.json').should_fail(
278
278
  :exit_code => 2,
279
279
  :stdout => "/environments/desert.json\n/nodes/mort.json\n",
280
280
  :stderr => "ERROR: /environments/desert.json: No such file or directory\n"
@@ -363,14 +363,14 @@ EOM
363
363
  when_the_chef_server 'has a node with no environment or run_list' do
364
364
  node 'mort', {}
365
365
  it 'knife deps reports just the node' do
366
- knife('deps --remote --repo-mode=everything /nodes/mort.json').should_succeed "/nodes/mort.json\n"
366
+ knife('deps --remote /nodes/mort.json').should_succeed "/nodes/mort.json\n"
367
367
  end
368
368
  end
369
369
  when_the_chef_server 'has a node with an environment' do
370
370
  environment 'desert', {}
371
371
  node 'mort', { 'chef_environment' => 'desert' }
372
372
  it 'knife deps reports just the node' do
373
- knife('deps --remote --repo-mode=everything /nodes/mort.json').should_succeed "/environments/desert.json\n/nodes/mort.json\n"
373
+ knife('deps --remote /nodes/mort.json').should_succeed "/environments/desert.json\n/nodes/mort.json\n"
374
374
  end
375
375
  end
376
376
  when_the_chef_server 'has a node with roles and recipes in its run_list' do
@@ -379,7 +379,7 @@ EOM
379
379
  cookbook 'soup', '1.0.0', { 'metadata.rb' => "name 'soup'\nversion '1.0.0'\n", 'recipes' => { 'chicken.rb' => '' } }
380
380
  node 'mort', { 'run_list' => %w(role[minor] recipe[quiche] recipe[soup::chicken]) }
381
381
  it 'knife deps reports just the node' do
382
- knife('deps --remote --repo-mode=everything /nodes/mort.json').should_succeed <<EOM
382
+ knife('deps --remote /nodes/mort.json').should_succeed <<EOM
383
383
  /roles/minor.json
384
384
  /cookbooks/quiche
385
385
  /cookbooks/soup
@@ -422,7 +422,7 @@ EOM
422
422
  node 'bart', { 'run_list' => [ 'role[minor]' ] }
423
423
 
424
424
  it 'knife deps reports all dependencies' do
425
- knife('deps --remote --repo-mode=everything /nodes/mort.json').should_succeed <<EOM
425
+ knife('deps --remote /nodes/mort.json').should_succeed <<EOM
426
426
  /environments/desert.json
427
427
  /roles/minor.json
428
428
  /cookbooks/quiche
@@ -432,7 +432,7 @@ EOM
432
432
  EOM
433
433
  end
434
434
  it 'knife deps * reports all dependencies of all things' do
435
- knife('deps --remote --repo-mode=everything /nodes/*').should_succeed <<EOM
435
+ knife('deps --remote /nodes/*').should_succeed <<EOM
436
436
  /roles/minor.json
437
437
  /nodes/bart.json
438
438
  /environments/desert.json
@@ -443,7 +443,7 @@ EOM
443
443
  EOM
444
444
  end
445
445
  it 'knife deps a b reports all dependencies of a and b' do
446
- knife('deps --remote --repo-mode=everything /nodes/bart.json /nodes/mort.json').should_succeed <<EOM
446
+ knife('deps --remote /nodes/bart.json /nodes/mort.json').should_succeed <<EOM
447
447
  /roles/minor.json
448
448
  /nodes/bart.json
449
449
  /environments/desert.json
@@ -454,7 +454,7 @@ EOM
454
454
  EOM
455
455
  end
456
456
  it 'knife deps --tree /* shows dependencies in a tree' do
457
- knife('deps --remote --tree --repo-mode=everything /nodes/*').should_succeed <<EOM
457
+ knife('deps --remote --tree /nodes/*').should_succeed <<EOM
458
458
  /nodes/bart.json
459
459
  /roles/minor.json
460
460
  /nodes/mort.json
@@ -466,7 +466,7 @@ EOM
466
466
  EOM
467
467
  end
468
468
  it 'knife deps --tree --no-recurse shows only the first level of dependencies' do
469
- knife('deps --remote --tree --no-recurse --repo-mode=everything /nodes/*').should_succeed <<EOM
469
+ knife('deps --remote --tree --no-recurse /nodes/*').should_succeed <<EOM
470
470
  /nodes/bart.json
471
471
  /roles/minor.json
472
472
  /nodes/mort.json
@@ -540,7 +540,7 @@ EOM
540
540
  )
541
541
  end
542
542
  it 'knife deps /nodes/x.json reports an error' do
543
- knife('deps --remote --repo-mode=everything /nodes/x.json').should_fail(
543
+ knife('deps --remote /nodes/x.json').should_fail(
544
544
  :exit_code => 2,
545
545
  :stdout => "/nodes/x.json\n",
546
546
  :stderr => "ERROR: /nodes/x.json: No such file or directory\n"
@@ -581,7 +581,7 @@ EOM
581
581
  when_the_chef_server 'is missing a dependent environment' do
582
582
  node 'mort', { 'chef_environment' => 'desert' }
583
583
  it 'knife deps reports the environment, along with an error' do
584
- knife('deps --remote --repo-mode=everything /nodes/mort.json').should_fail(
584
+ knife('deps --remote /nodes/mort.json').should_fail(
585
585
  :exit_code => 2,
586
586
  :stdout => "/environments/desert.json\n/nodes/mort.json\n",
587
587
  :stderr => "ERROR: /environments/desert.json: No such file or directory\n"
@@ -26,76 +26,34 @@ describe 'knife diff' do
26
26
 
27
27
  it 'knife diff reports everything as deleted' do
28
28
  knife('diff --name-status /').should_succeed <<EOM
29
+ D\t/clients/chef-validator.json
30
+ D\t/clients/chef-webui.json
31
+ D\t/clients/x.json
29
32
  D\t/cookbooks/x
30
33
  D\t/data_bags/x
31
34
  D\t/environments/_default.json
32
35
  D\t/environments/x.json
36
+ D\t/nodes/x.json
33
37
  D\t/roles/x.json
38
+ D\t/users/admin.json
39
+ D\t/users/x.json
34
40
  EOM
35
41
  end
36
42
  end
37
43
 
38
44
  when_the_repository 'has an identical copy of each thing' do
39
- file 'clients/x.json', <<EOM
40
- {}
41
- EOM
45
+
46
+ file 'clients/chef-validator.json', { 'validator' => true, 'public_key' => ChefZero::PUBLIC_KEY }
47
+ file 'clients/chef-webui.json', { 'admin' => true, 'public_key' => ChefZero::PUBLIC_KEY }
48
+ file 'clients/x.json', { 'public_key' => ChefZero::PUBLIC_KEY }
42
49
  file 'cookbooks/x/metadata.rb', 'version "1.0.0"'
43
- file 'data_bags/x/y.json', <<EOM
44
- {
45
- "id": "y"
46
- }
47
- EOM
48
- file 'environments/_default.json', <<EOM
49
- {
50
- "name": "_default",
51
- "description": "The default Chef environment",
52
- "cookbook_versions": {
53
- },
54
- "json_class": "Chef::Environment",
55
- "chef_type": "environment",
56
- "default_attributes": {
57
- },
58
- "override_attributes": {
59
- }
60
- }
61
- EOM
62
- file 'environments/x.json', <<EOM
63
- {
64
- "chef_type": "environment",
65
- "cookbook_versions": {
66
- },
67
- "default_attributes": {
68
- },
69
- "description": "",
70
- "json_class": "Chef::Environment",
71
- "name": "x",
72
- "override_attributes": {
73
- }
74
- }
75
- EOM
76
- file 'nodes/x.json', <<EOM
77
- {}
78
- EOM
79
- file 'roles/x.json', <<EOM
80
- {
81
- "chef_type": "role",
82
- "default_attributes": {
83
- },
84
- "description": "",
85
- "env_run_lists": {
86
- },
87
- "json_class": "Chef::Role",
88
- "name": "x",
89
- "override_attributes": {
90
- },
91
- "run_list": [
92
-
93
- ]
94
- }
95
- EOM
96
- file 'users/x.json', <<EOM
97
- {}
98
- EOM
50
+ file 'data_bags/x/y.json', {}
51
+ file 'environments/_default.json', { "description" => "The default Chef environment" }
52
+ file 'environments/x.json', {}
53
+ file 'nodes/x.json', {}
54
+ file 'roles/x.json', {}
55
+ file 'users/admin.json', { 'admin' => true, 'public_key' => ChefZero::PUBLIC_KEY }
56
+ file 'users/x.json', { 'public_key' => ChefZero::PUBLIC_KEY }
99
57
 
100
58
  it 'knife diff reports no differences' do
101
59
  knife('diff /').should_succeed ''
@@ -123,7 +81,7 @@ EOM
123
81
  end
124
82
 
125
83
  context 'as well as one extra copy of each thing' do
126
- file 'clients/y.json', {}
84
+ file 'clients/y.json', { 'public_key' => ChefZero::PUBLIC_KEY }
127
85
  file 'cookbooks/x/blah.rb', ''
128
86
  file 'cookbooks/y/metadata.rb', 'version "1.0.0"'
129
87
  file 'data_bags/x/z.json', {}
@@ -131,16 +89,19 @@ EOM
131
89
  file 'environments/y.json', {}
132
90
  file 'nodes/y.json', {}
133
91
  file 'roles/y.json', {}
134
- file 'users/y.json', {}
92
+ file 'users/y.json', { 'public_key' => ChefZero::PUBLIC_KEY }
135
93
 
136
94
  it 'knife diff reports the new files as added' do
137
95
  knife('diff --name-status /').should_succeed <<EOM
96
+ A\t/clients/y.json
138
97
  A\t/cookbooks/x/blah.rb
139
98
  A\t/cookbooks/y
140
99
  A\t/data_bags/x/z.json
141
100
  A\t/data_bags/y
142
101
  A\t/environments/y.json
102
+ A\t/nodes/y.json
143
103
  A\t/roles/y.json
104
+ A\t/users/y.json
144
105
  EOM
145
106
  end
146
107
 
@@ -165,10 +126,13 @@ EOM
165
126
  when_the_repository 'is empty' do
166
127
  it 'knife diff reports everything as deleted' do
167
128
  knife('diff --name-status /').should_succeed <<EOM
129
+ D\t/clients
168
130
  D\t/cookbooks
169
131
  D\t/data_bags
170
132
  D\t/environments
133
+ D\t/nodes
171
134
  D\t/roles
135
+ D\t/users
172
136
  EOM
173
137
  end
174
138
  end
@@ -321,76 +285,33 @@ EOM
321
285
 
322
286
  it 'knife diff reports everything as deleted' do
323
287
  knife('diff --name-status /').should_succeed <<EOM
288
+ D\t/clients/chef-validator.json
289
+ D\t/clients/chef-webui.json
290
+ D\t/clients/x.json
324
291
  D\t/cookbooks/x-1.0.0
325
292
  D\t/data_bags/x
326
293
  D\t/environments/_default.json
327
294
  D\t/environments/x.json
295
+ D\t/nodes/x.json
328
296
  D\t/roles/x.json
297
+ D\t/users/admin.json
298
+ D\t/users/x.json
329
299
  EOM
330
300
  end
331
301
  end
332
302
 
333
303
  when_the_repository 'has an identical copy of each thing' do
334
- file 'clients/x.json', <<EOM
335
- {}
336
- EOM
304
+ file 'clients/chef-validator.json', { 'validator' => true, 'public_key' => ChefZero::PUBLIC_KEY }
305
+ file 'clients/chef-webui.json', { 'admin' => true, 'public_key' => ChefZero::PUBLIC_KEY }
306
+ file 'clients/x.json', { 'public_key' => ChefZero::PUBLIC_KEY }
337
307
  file 'cookbooks/x-1.0.0/metadata.rb', 'version "1.0.0"'
338
- file 'data_bags/x/y.json', <<EOM
339
- {
340
- "id": "y"
341
- }
342
- EOM
343
- file 'environments/_default.json', <<EOM
344
- {
345
- "name": "_default",
346
- "description": "The default Chef environment",
347
- "cookbook_versions": {
348
- },
349
- "json_class": "Chef::Environment",
350
- "chef_type": "environment",
351
- "default_attributes": {
352
- },
353
- "override_attributes": {
354
- }
355
- }
356
- EOM
357
- file 'environments/x.json', <<EOM
358
- {
359
- "chef_type": "environment",
360
- "cookbook_versions": {
361
- },
362
- "default_attributes": {
363
- },
364
- "description": "",
365
- "json_class": "Chef::Environment",
366
- "name": "x",
367
- "override_attributes": {
368
- }
369
- }
370
- EOM
371
- file 'nodes/x.json', <<EOM
372
- {}
373
- EOM
374
- file 'roles/x.json', <<EOM
375
- {
376
- "chef_type": "role",
377
- "default_attributes": {
378
- },
379
- "description": "",
380
- "env_run_lists": {
381
- },
382
- "json_class": "Chef::Role",
383
- "name": "x",
384
- "override_attributes": {
385
- },
386
- "run_list": [
387
-
388
- ]
389
- }
390
- EOM
391
- file 'users/x.json', <<EOM
392
- {}
393
- EOM
308
+ file 'data_bags/x/y.json', {}
309
+ file 'environments/_default.json', { "description" => "The default Chef environment" }
310
+ file 'environments/x.json', {}
311
+ file 'nodes/x.json', {}
312
+ file 'roles/x.json', {}
313
+ file 'users/admin.json', { 'admin' => true, 'public_key' => ChefZero::PUBLIC_KEY }
314
+ file 'users/x.json', { 'public_key' => ChefZero::PUBLIC_KEY }
394
315
 
395
316
  it 'knife diff reports no differences' do
396
317
  knife('diff /').should_succeed ''
@@ -431,13 +352,16 @@ EOM
431
352
 
432
353
  it 'knife diff reports the new files as added' do
433
354
  knife('diff --name-status /').should_succeed <<EOM
355
+ A\t/clients/y.json
434
356
  A\t/cookbooks/x-1.0.0/blah.rb
435
357
  A\t/cookbooks/x-2.0.0
436
358
  A\t/cookbooks/y-1.0.0
437
359
  A\t/data_bags/x/z.json
438
360
  A\t/data_bags/y
439
361
  A\t/environments/y.json
362
+ A\t/nodes/y.json
440
363
  A\t/roles/y.json
364
+ A\t/users/y.json
441
365
  EOM
442
366
  end
443
367
 
@@ -462,10 +386,13 @@ EOM
462
386
  when_the_repository 'is empty' do
463
387
  it 'knife diff reports everything as deleted' do
464
388
  knife('diff --name-status /').should_succeed <<EOM
389
+ D\t/clients
465
390
  D\t/cookbooks
466
391
  D\t/data_bags
467
392
  D\t/environments
393
+ D\t/nodes
468
394
  D\t/roles
395
+ D\t/users
469
396
  EOM
470
397
  end
471
398
  end
@@ -8,13 +8,13 @@ describe 'knife download' do
8
8
 
9
9
  context 'without versioned cookbooks' do
10
10
  when_the_chef_server "has one of each thing" do
11
- client 'x', '{}'
11
+ client 'x', {}
12
12
  cookbook 'x', '1.0.0', { 'metadata.rb' => 'version "1.0.0"' }
13
- data_bag 'x', { 'y' => '{}' }
14
- environment 'x', '{}'
15
- node 'x', '{}'
16
- role 'x', '{}'
17
- user 'x', '{}'
13
+ data_bag 'x', { 'y' => {} }
14
+ environment 'x', {}
15
+ node 'x', {}
16
+ role 'x', {}
17
+ user 'x', {}
18
18
 
19
19
  when_the_repository 'has only top-level directories' do
20
20
  directory 'clients'
@@ -27,79 +27,36 @@ describe 'knife download' do
27
27
 
28
28
  it 'knife download downloads everything' do
29
29
  knife('download /').should_succeed <<EOM
30
+ Created /clients/chef-validator.json
31
+ Created /clients/chef-webui.json
32
+ Created /clients/x.json
30
33
  Created /cookbooks/x
31
34
  Created /cookbooks/x/metadata.rb
32
35
  Created /data_bags/x
33
36
  Created /data_bags/x/y.json
34
37
  Created /environments/_default.json
35
38
  Created /environments/x.json
39
+ Created /nodes/x.json
36
40
  Created /roles/x.json
41
+ Created /users/admin.json
42
+ Created /users/x.json
37
43
  EOM
38
44
  knife('diff --name-status /').should_succeed ''
39
45
  end
40
46
  end
41
47
 
42
48
  when_the_repository 'has an identical copy of each thing' do
43
- file 'clients/x.json', <<EOM
44
- {}
45
- EOM
49
+ file 'clients/chef-validator.json', { 'validator' => true, 'public_key' => ChefZero::PUBLIC_KEY }
50
+ file 'clients/chef-webui.json', { 'admin' => true, 'public_key' => ChefZero::PUBLIC_KEY }
51
+ file 'clients/x.json', { 'public_key' => ChefZero::PUBLIC_KEY }
46
52
  file 'cookbooks/x/metadata.rb', 'version "1.0.0"'
47
- file 'data_bags/x/y.json', <<EOM
48
- {
49
- "id": "y"
50
- }
51
- EOM
52
- file 'environments/_default.json', <<EOM
53
- {
54
- "name": "_default",
55
- "description": "The default Chef environment",
56
- "cookbook_versions": {
57
- },
58
- "json_class": "Chef::Environment",
59
- "chef_type": "environment",
60
- "default_attributes": {
61
- },
62
- "override_attributes": {
63
- }
64
- }
65
- EOM
66
- file 'environments/x.json', <<EOM
67
- {
68
- "chef_type": "environment",
69
- "cookbook_versions": {
70
- },
71
- "default_attributes": {
72
- },
73
- "description": "",
74
- "json_class": "Chef::Environment",
75
- "name": "x",
76
- "override_attributes": {
77
- }
78
- }
79
- EOM
80
- file 'nodes/x.json', <<EOM
81
- {}
82
- EOM
83
- file 'roles/x.json', <<EOM
84
- {
85
- "chef_type": "role",
86
- "default_attributes": {
87
- },
88
- "description": "",
89
- "env_run_lists": {
90
- },
91
- "json_class": "Chef::Role",
92
- "name": "x",
93
- "override_attributes": {
94
- },
95
- "run_list": [
96
-
97
- ]
98
- }
99
- EOM
100
- file 'users/x.json', <<EOM
101
- {}
102
- EOM
53
+ file 'data_bags/x/y.json', {}
54
+ file 'environments/_default.json', { "description" => "The default Chef environment" }
55
+ file 'environments/x.json', {}
56
+ file 'nodes/x.json', {}
57
+ file 'roles/x.json', {}
58
+ file 'users/admin.json', { 'admin' => true, 'public_key' => ChefZero::PUBLIC_KEY }
59
+ file 'users/x.json', { 'public_key' => ChefZero::PUBLIC_KEY }
103
60
 
104
61
  it 'knife download makes no changes' do
105
62
  knife('download /').should_succeed ''
@@ -160,73 +117,42 @@ EOM
160
117
  end
161
118
 
162
119
  context 'as well as one extra copy of each thing' do
163
- file 'clients/y.json', { 'name' => 'y' }
120
+ file 'clients/y.json', { 'public_key' => ChefZero::PUBLIC_KEY }
164
121
  file 'cookbooks/x/blah.rb', ''
165
122
  file 'cookbooks/y/metadata.rb', 'version "1.0.0"'
166
- file 'data_bags/x/z.json', <<EOM
167
- {
168
- "id": "z"
169
- }
170
- EOM
171
- file 'data_bags/y/zz.json', <<EOM
172
- {
173
- "id": "zz"
174
- }
175
- EOM
176
- file 'environments/y.json', <<EOM
177
- {
178
- "chef_type": "environment",
179
- "cookbook_versions": {
180
- },
181
- "default_attributes": {
182
- },
183
- "description": "",
184
- "json_class": "Chef::Environment",
185
- "name": "y",
186
- "override_attributes": {
187
- }
188
- }
189
- EOM
190
- file 'nodes/y.json', { 'name' => 'y' }
191
- file 'roles/y.json', <<EOM
192
- {
193
- "chef_type": "role",
194
- "default_attributes": {
195
- },
196
- "description": "",
197
- "env_run_lists": {
198
- },
199
- "json_class": "Chef::Role",
200
- "name": "y",
201
- "override_attributes": {
202
- },
203
- "run_list": [
204
-
205
- ]
206
- }
207
- EOM
208
- file 'users/y.json', { 'name' => 'y' }
123
+ file 'data_bags/x/z.json', {}
124
+ file 'data_bags/y/zz.json', {}
125
+ file 'environments/y.json', {}
126
+ file 'nodes/y.json', {}
127
+ file 'roles/y.json', {}
128
+ file 'users/y.json', { 'public_key' => ChefZero::PUBLIC_KEY }
209
129
 
210
130
  it 'knife download does nothing' do
211
131
  knife('download /').should_succeed ''
212
132
  knife('diff --name-status /').should_succeed <<EOM
133
+ A\t/clients/y.json
213
134
  A\t/cookbooks/x/blah.rb
214
135
  A\t/cookbooks/y
215
136
  A\t/data_bags/x/z.json
216
137
  A\t/data_bags/y
217
138
  A\t/environments/y.json
139
+ A\t/nodes/y.json
218
140
  A\t/roles/y.json
141
+ A\t/users/y.json
219
142
  EOM
220
143
  end
221
144
 
222
145
  it 'knife download --purge deletes the extra files' do
223
146
  knife('download --purge /').should_succeed <<EOM
147
+ Deleted extra entry /clients/y.json (purge is on)
224
148
  Deleted extra entry /cookbooks/x/blah.rb (purge is on)
225
149
  Deleted extra entry /cookbooks/y (purge is on)
226
150
  Deleted extra entry /data_bags/x/z.json (purge is on)
227
151
  Deleted extra entry /data_bags/y (purge is on)
228
152
  Deleted extra entry /environments/y.json (purge is on)
153
+ Deleted extra entry /nodes/y.json (purge is on)
229
154
  Deleted extra entry /roles/y.json (purge is on)
155
+ Deleted extra entry /users/y.json (purge is on)
230
156
  EOM
231
157
  knife('diff --name-status /').should_succeed ''
232
158
  end
@@ -236,6 +162,10 @@ EOM
236
162
  when_the_repository 'is empty' do
237
163
  it 'knife download creates the extra files' do
238
164
  knife('download /').should_succeed <<EOM
165
+ Created /clients
166
+ Created /clients/chef-validator.json
167
+ Created /clients/chef-webui.json
168
+ Created /clients/x.json
239
169
  Created /cookbooks
240
170
  Created /cookbooks/x
241
171
  Created /cookbooks/x/metadata.rb
@@ -245,8 +175,13 @@ Created /data_bags/x/y.json
245
175
  Created /environments
246
176
  Created /environments/_default.json
247
177
  Created /environments/x.json
178
+ Created /nodes
179
+ Created /nodes/x.json
248
180
  Created /roles
249
181
  Created /roles/x.json
182
+ Created /users
183
+ Created /users/admin.json
184
+ Created /users/x.json
250
185
  EOM
251
186
  knife('diff --name-status /').should_succeed ''
252
187
  end
@@ -529,13 +464,13 @@ EOM
529
464
 
530
465
  with_versioned_cookbooks do
531
466
  when_the_chef_server "has one of each thing" do
532
- client 'x', '{}'
467
+ client 'x', {}
533
468
  cookbook 'x', '1.0.0', { 'metadata.rb' => 'version "1.0.0"' }
534
- data_bag 'x', { 'y' => '{}' }
535
- environment 'x', '{}'
536
- node 'x', '{}'
537
- role 'x', '{}'
538
- user 'x', '{}'
469
+ data_bag 'x', { 'y' => {} }
470
+ environment 'x', {}
471
+ node 'x', {}
472
+ role 'x', {}
473
+ user 'x', {}
539
474
 
540
475
  when_the_repository 'has only top-level directories' do
541
476
  directory 'clients'
@@ -548,79 +483,36 @@ EOM
548
483
 
549
484
  it 'knife download downloads everything' do
550
485
  knife('download /').should_succeed <<EOM
486
+ Created /clients/chef-validator.json
487
+ Created /clients/chef-webui.json
488
+ Created /clients/x.json
551
489
  Created /cookbooks/x-1.0.0
552
490
  Created /cookbooks/x-1.0.0/metadata.rb
553
491
  Created /data_bags/x
554
492
  Created /data_bags/x/y.json
555
493
  Created /environments/_default.json
556
494
  Created /environments/x.json
495
+ Created /nodes/x.json
557
496
  Created /roles/x.json
497
+ Created /users/admin.json
498
+ Created /users/x.json
558
499
  EOM
559
500
  knife('diff --name-status /').should_succeed ''
560
501
  end
561
502
  end
562
503
 
563
504
  when_the_repository 'has an identical copy of each thing' do
564
- file 'clients/x.json', <<EOM
565
- {}
566
- EOM
505
+ file 'clients/chef-validator.json', { 'validator' => true, 'public_key' => ChefZero::PUBLIC_KEY }
506
+ file 'clients/chef-webui.json', { 'admin' => true, 'public_key' => ChefZero::PUBLIC_KEY }
507
+ file 'clients/x.json', { 'public_key' => ChefZero::PUBLIC_KEY }
567
508
  file 'cookbooks/x-1.0.0/metadata.rb', 'version "1.0.0"'
568
- file 'data_bags/x/y.json', <<EOM
569
- {
570
- "id": "y"
571
- }
572
- EOM
573
- file 'environments/_default.json', <<EOM
574
- {
575
- "name": "_default",
576
- "description": "The default Chef environment",
577
- "cookbook_versions": {
578
- },
579
- "json_class": "Chef::Environment",
580
- "chef_type": "environment",
581
- "default_attributes": {
582
- },
583
- "override_attributes": {
584
- }
585
- }
586
- EOM
587
- file 'environments/x.json', <<EOM
588
- {
589
- "chef_type": "environment",
590
- "cookbook_versions": {
591
- },
592
- "default_attributes": {
593
- },
594
- "description": "",
595
- "json_class": "Chef::Environment",
596
- "name": "x",
597
- "override_attributes": {
598
- }
599
- }
600
- EOM
601
- file 'nodes/x.json', <<EOM
602
- {}
603
- EOM
604
- file 'roles/x.json', <<EOM
605
- {
606
- "chef_type": "role",
607
- "default_attributes": {
608
- },
609
- "description": "",
610
- "env_run_lists": {
611
- },
612
- "json_class": "Chef::Role",
613
- "name": "x",
614
- "override_attributes": {
615
- },
616
- "run_list": [
617
-
618
- ]
619
- }
620
- EOM
621
- file 'users/x.json', <<EOM
622
- {}
623
- EOM
509
+ file 'data_bags/x/y.json', {}
510
+ file 'environments/_default.json', { "description" => "The default Chef environment" }
511
+ file 'environments/x.json', {}
512
+ file 'nodes/x.json', {}
513
+ file 'roles/x.json', {}
514
+ file 'users/admin.json', { 'admin' => true, 'public_key' => ChefZero::PUBLIC_KEY }
515
+ file 'users/x.json', { 'public_key' => ChefZero::PUBLIC_KEY }
624
516
 
625
517
  it 'knife download makes no changes' do
626
518
  knife('download /').should_succeed ''
@@ -633,23 +525,8 @@ EOM
633
525
  end
634
526
 
635
527
  context 'except the role file' do
636
- file 'roles/x.json', <<EOM
637
- {
638
- "chef_type": "role",
639
- "default_attributes": {
640
- },
641
- "description": "blarghle",
642
- "env_run_lists": {
643
- },
644
- "json_class": "Chef::Role",
645
- "name": "x",
646
- "override_attributes": {
647
- },
648
- "run_list": [
528
+ file 'roles/x.json', { "description" => "blarghle" }
649
529
 
650
- ]
651
- }
652
- EOM
653
530
  it 'knife download changes the role' do
654
531
  knife('download /').should_succeed "Updated /roles/x.json\n"
655
532
  knife('diff --name-status /').should_succeed ''
@@ -658,8 +535,8 @@ EOM
658
535
 
659
536
  context 'except the role file is textually different, but not ACTUALLY different' do
660
537
  file 'roles/x.json', <<EOM
661
- {
662
- "chef_type": "role",
538
+ {
539
+ "chef_type": "role" ,
663
540
  "default_attributes": {
664
541
  },
665
542
  "env_run_lists": {
@@ -670,7 +547,7 @@ EOM
670
547
  "override_attributes": {
671
548
  },
672
549
  "run_list": [
673
-
550
+
674
551
  ]
675
552
  }
676
553
  EOM
@@ -681,76 +558,45 @@ EOM
681
558
  end
682
559
 
683
560
  context 'as well as one extra copy of each thing' do
684
- file 'clients/y.json', { 'name' => 'y' }
561
+ file 'clients/y.json', { 'public_key' => ChefZero::PUBLIC_KEY }
685
562
  file 'cookbooks/x-1.0.0/blah.rb', ''
686
563
  file 'cookbooks/x-2.0.0/metadata.rb', 'version "2.0.0"'
687
564
  file 'cookbooks/y-1.0.0/metadata.rb', 'version "1.0.0"'
688
- file 'data_bags/x/z.json', <<EOM
689
- {
690
- "id": "z"
691
- }
692
- EOM
693
- file 'data_bags/y/zz.json', <<EOM
694
- {
695
- "id": "zz"
696
- }
697
- EOM
698
- file 'environments/y.json', <<EOM
699
- {
700
- "chef_type": "environment",
701
- "cookbook_versions": {
702
- },
703
- "default_attributes": {
704
- },
705
- "description": "",
706
- "json_class": "Chef::Environment",
707
- "name": "y",
708
- "override_attributes": {
709
- }
710
- }
711
- EOM
712
- file 'nodes/y.json', { 'name' => 'y' }
713
- file 'roles/y.json', <<EOM
714
- {
715
- "chef_type": "role",
716
- "default_attributes": {
717
- },
718
- "description": "",
719
- "env_run_lists": {
720
- },
721
- "json_class": "Chef::Role",
722
- "name": "y",
723
- "override_attributes": {
724
- },
725
- "run_list": [
726
-
727
- ]
728
- }
729
- EOM
730
- file 'users/y.json', { 'name' => 'y' }
565
+ file 'data_bags/x/z.json', {}
566
+ file 'data_bags/y/zz.json', {}
567
+ file 'environments/y.json', {}
568
+ file 'nodes/y.json', {}
569
+ file 'roles/y.json', {}
570
+ file 'users/y.json', { 'public_key' => ChefZero::PUBLIC_KEY }
731
571
 
732
572
  it 'knife download does nothing' do
733
573
  knife('download /').should_succeed ''
734
574
  knife('diff --name-status /').should_succeed <<EOM
575
+ A\t/clients/y.json
735
576
  A\t/cookbooks/x-1.0.0/blah.rb
736
577
  A\t/cookbooks/x-2.0.0
737
578
  A\t/cookbooks/y-1.0.0
738
579
  A\t/data_bags/x/z.json
739
580
  A\t/data_bags/y
740
581
  A\t/environments/y.json
582
+ A\t/nodes/y.json
741
583
  A\t/roles/y.json
584
+ A\t/users/y.json
742
585
  EOM
743
586
  end
744
587
 
745
588
  it 'knife download --purge deletes the extra files' do
746
589
  knife('download --purge /').should_succeed <<EOM
590
+ Deleted extra entry /clients/y.json (purge is on)
747
591
  Deleted extra entry /cookbooks/x-1.0.0/blah.rb (purge is on)
748
592
  Deleted extra entry /cookbooks/x-2.0.0 (purge is on)
749
593
  Deleted extra entry /cookbooks/y-1.0.0 (purge is on)
750
594
  Deleted extra entry /data_bags/x/z.json (purge is on)
751
595
  Deleted extra entry /data_bags/y (purge is on)
752
596
  Deleted extra entry /environments/y.json (purge is on)
597
+ Deleted extra entry /nodes/y.json (purge is on)
753
598
  Deleted extra entry /roles/y.json (purge is on)
599
+ Deleted extra entry /users/y.json (purge is on)
754
600
  EOM
755
601
  knife('diff --name-status /').should_succeed ''
756
602
  end
@@ -760,6 +606,10 @@ EOM
760
606
  when_the_repository 'is empty' do
761
607
  it 'knife download creates the extra files' do
762
608
  knife('download /').should_succeed <<EOM
609
+ Created /clients
610
+ Created /clients/chef-validator.json
611
+ Created /clients/chef-webui.json
612
+ Created /clients/x.json
763
613
  Created /cookbooks
764
614
  Created /cookbooks/x-1.0.0
765
615
  Created /cookbooks/x-1.0.0/metadata.rb
@@ -769,8 +619,13 @@ Created /data_bags/x/y.json
769
619
  Created /environments
770
620
  Created /environments/_default.json
771
621
  Created /environments/x.json
622
+ Created /nodes
623
+ Created /nodes/x.json
772
624
  Created /roles
773
625
  Created /roles/x.json
626
+ Created /users
627
+ Created /users/admin.json
628
+ Created /users/x.json
774
629
  EOM
775
630
  knife('diff --name-status /').should_succeed ''
776
631
  end