knife 18.8.68 → 19.0.102
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 +4 -4
- data/Gemfile +30 -9
- data/LICENSE +201 -201
- data/Rakefile +23 -0
- data/knife.gemspec +9 -15
- data/lib/chef/application/knife.rb +3 -5
- data/lib/chef/chef_fs/knife.rb +1 -1
- data/lib/chef/knife/acl_base.rb +1 -1
- data/lib/chef/knife/acl_bulk_add.rb +0 -1
- data/lib/chef/knife/acl_bulk_remove.rb +0 -1
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +24 -5
- data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +121 -4
- data/lib/chef/knife/bootstrap.rb +25 -29
- data/lib/chef/knife/config_get.rb +1 -1
- data/lib/chef/knife/config_get_profile.rb +1 -1
- data/lib/chef/knife/config_list_profiles.rb +1 -1
- data/lib/chef/knife/config_show.rb +1 -1
- data/lib/chef/knife/config_use_profile.rb +3 -3
- data/lib/chef/knife/configure_client.rb +1 -1
- data/lib/chef/knife/cookbook_bulk_delete.rb +1 -1
- data/lib/chef/knife/cookbook_delete.rb +1 -1
- data/lib/chef/knife/cookbook_download.rb +1 -1
- data/lib/chef/knife/cookbook_upload.rb +1 -1
- data/lib/chef/knife/core/bootstrap_context.rb +36 -6
- data/lib/chef/knife/core/cookbook_scm_repo.rb +2 -2
- data/lib/chef/knife/core/cookbook_site_streaming_uploader.rb +1 -6
- data/lib/chef/knife/core/gem_glob_loader.rb +4 -4
- data/lib/chef/knife/core/object_loader.rb +1 -1
- data/lib/chef/knife/core/status_presenter.rb +1 -1
- data/lib/chef/knife/core/subcommand_loader.rb +1 -1
- data/lib/chef/knife/core/text_formatter.rb +0 -1
- data/lib/chef/knife/core/windows_bootstrap_context.rb +103 -37
- data/lib/chef/knife/data_bag_secret_options.rb +1 -1
- data/lib/chef/knife/download.rb +1 -1
- data/lib/chef/knife/environment_compare.rb +2 -3
- data/lib/chef/knife/key_create.rb +1 -5
- data/lib/chef/knife/key_edit.rb +1 -5
- data/lib/chef/knife/license.rb +6 -2
- data/lib/chef/knife/list.rb +1 -1
- data/lib/chef/knife/node_edit.rb +1 -1
- data/lib/chef/knife/raw.rb +1 -2
- data/lib/chef/knife/recipe_list.rb +1 -1
- data/lib/chef/knife/search.rb +2 -2
- data/lib/chef/knife/ssh.rb +5 -5
- data/lib/chef/knife/ssl_fetch.rb +1 -1
- data/lib/chef/knife/supermarket_share.rb +3 -2
- data/lib/chef/knife/upload.rb +1 -1
- data/lib/chef/knife/user_create.rb +11 -21
- data/lib/chef/knife/user_list.rb +3 -3
- data/lib/chef/knife/version.rb +1 -3
- data/lib/chef/knife/xargs.rb +0 -1
- data/lib/chef/knife.rb +4 -1
- data/lib/chef/utils/licensing_config.rb +0 -1
- data/lib/chef/utils/licensing_handler.rb +18 -28
- data/spec/data/apt/chef-integration-test-1.0/debian/rules +0 -0
- data/spec/data/apt/chef-integration-test-1.1/debian/rules +0 -0
- data/spec/data/apt/chef-integration-test2-1.0/debian/rules +0 -0
- data/spec/data/cookbooks/openldap/templates/default/all_windows_line_endings.erb +4 -4
- data/spec/data/cookbooks/openldap/templates/default/some_windows_line_endings.erb +2 -2
- data/spec/functional/cookbook_delete_spec.rb +4 -4
- data/spec/functional/version_spec.rb +2 -3
- data/spec/integration/config_use_spec.rb +8 -8
- data/spec/integration/cookbook_api_ipv6_spec.rb +2 -2
- data/spec/integration/node_environment_set_spec.rb +1 -1
- data/spec/integration/node_run_list_set_spec.rb +1 -1
- data/spec/knife_spec_helper.rb +0 -5
- data/spec/support/platforms/prof/gc.rb +1 -1
- data/spec/support/shared/integration/integration_helper.rb +1 -1
- data/spec/tiny_server.rb +2 -2
- data/spec/unit/knife/bootstrap/templates/windows_presigned_url_spec.rb +183 -0
- data/spec/unit/knife/bootstrap_chef19_spec.rb +122 -0
- data/spec/unit/knife/bootstrap_spec.rb +121 -7
- data/spec/unit/knife/configure_spec.rb +3 -3
- data/spec/unit/knife/cookbook_list_spec.rb +1 -1
- data/spec/unit/knife/core/bootstrap_context_spec.rb +137 -0
- data/spec/unit/knife/core/windows_bootstrap_context_chef19_spec.rb +82 -0
- data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +51 -64
- data/spec/unit/knife/license_spec.rb +1 -1
- data/spec/unit/knife/search_spec.rb +3 -3
- data/spec/unit/knife/supermarket_install_spec.rb +4 -5
- data/spec/unit/knife/utils/licensing_handler_chef19_spec.rb +144 -0
- metadata +61 -100
- data/spec/data/gems/chef-integration-test-0.1.0.gem +0 -0
- data/spec/data/nodes/default.rb +0 -15
- data/spec/data/nodes/test.example.com.rb +0 -17
- data/spec/data/nodes/test.rb +0 -15
- data/spec/unit/utils/licensing_handler_spec.rb +0 -140
metadata
CHANGED
|
@@ -1,97 +1,47 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: knife
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 19.0.102
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Adam Jacob
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2026-04-07 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
|
-
name:
|
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
|
16
|
-
requirements:
|
|
17
|
-
- - "~>"
|
|
18
|
-
- !ruby/object:Gem::Version
|
|
19
|
-
version: '18.0'
|
|
20
|
-
type: :runtime
|
|
21
|
-
prerelease: false
|
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
-
requirements:
|
|
24
|
-
- - "~>"
|
|
25
|
-
- !ruby/object:Gem::Version
|
|
26
|
-
version: '18.0'
|
|
27
|
-
- !ruby/object:Gem::Dependency
|
|
28
|
-
name: chef-utils
|
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
|
30
|
-
requirements:
|
|
31
|
-
- - "~>"
|
|
32
|
-
- !ruby/object:Gem::Version
|
|
33
|
-
version: '18.0'
|
|
34
|
-
type: :runtime
|
|
35
|
-
prerelease: false
|
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
-
requirements:
|
|
38
|
-
- - "~>"
|
|
39
|
-
- !ruby/object:Gem::Version
|
|
40
|
-
version: '18.0'
|
|
41
|
-
- !ruby/object:Gem::Dependency
|
|
42
|
-
name: chef
|
|
14
|
+
name: train-core
|
|
43
15
|
requirement: !ruby/object:Gem::Requirement
|
|
44
16
|
requirements:
|
|
45
17
|
- - "~>"
|
|
46
18
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: '
|
|
48
|
-
|
|
49
|
-
prerelease: false
|
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
-
requirements:
|
|
52
|
-
- - "~>"
|
|
53
|
-
- !ruby/object:Gem::Version
|
|
54
|
-
version: '18.0'
|
|
55
|
-
- !ruby/object:Gem::Dependency
|
|
56
|
-
name: chef-bin
|
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
|
58
|
-
requirements:
|
|
59
|
-
- - "~>"
|
|
19
|
+
version: '3.13'
|
|
20
|
+
- - ">="
|
|
60
21
|
- !ruby/object:Gem::Version
|
|
61
|
-
version:
|
|
22
|
+
version: 3.13.4
|
|
62
23
|
type: :runtime
|
|
63
24
|
prerelease: false
|
|
64
25
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
26
|
requirements:
|
|
66
27
|
- - "~>"
|
|
67
28
|
- !ruby/object:Gem::Version
|
|
68
|
-
version: '
|
|
69
|
-
-
|
|
70
|
-
name: train-core
|
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
|
72
|
-
requirements:
|
|
73
|
-
- - "~>"
|
|
74
|
-
- !ruby/object:Gem::Version
|
|
75
|
-
version: '3.10'
|
|
76
|
-
type: :runtime
|
|
77
|
-
prerelease: false
|
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
-
requirements:
|
|
80
|
-
- - "~>"
|
|
29
|
+
version: '3.13'
|
|
30
|
+
- - ">="
|
|
81
31
|
- !ruby/object:Gem::Version
|
|
82
|
-
version:
|
|
32
|
+
version: 3.13.4
|
|
83
33
|
- !ruby/object:Gem::Dependency
|
|
84
34
|
name: train-winrm
|
|
85
35
|
requirement: !ruby/object:Gem::Requirement
|
|
86
36
|
requirements:
|
|
87
|
-
- - "
|
|
37
|
+
- - ">="
|
|
88
38
|
- !ruby/object:Gem::Version
|
|
89
39
|
version: 0.2.17
|
|
90
40
|
type: :runtime
|
|
91
41
|
prerelease: false
|
|
92
42
|
version_requirements: !ruby/object:Gem::Requirement
|
|
93
43
|
requirements:
|
|
94
|
-
- - "
|
|
44
|
+
- - ">="
|
|
95
45
|
- !ruby/object:Gem::Version
|
|
96
46
|
version: 0.2.17
|
|
97
47
|
- !ruby/object:Gem::Dependency
|
|
@@ -154,20 +104,6 @@ dependencies:
|
|
|
154
104
|
- - "<"
|
|
155
105
|
- !ruby/object:Gem::Version
|
|
156
106
|
version: '2.0'
|
|
157
|
-
- !ruby/object:Gem::Dependency
|
|
158
|
-
name: ohai
|
|
159
|
-
requirement: !ruby/object:Gem::Requirement
|
|
160
|
-
requirements:
|
|
161
|
-
- - "~>"
|
|
162
|
-
- !ruby/object:Gem::Version
|
|
163
|
-
version: '18.0'
|
|
164
|
-
type: :runtime
|
|
165
|
-
prerelease: false
|
|
166
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
167
|
-
requirements:
|
|
168
|
-
- - "~>"
|
|
169
|
-
- !ruby/object:Gem::Version
|
|
170
|
-
version: '18.0'
|
|
171
107
|
- !ruby/object:Gem::Dependency
|
|
172
108
|
name: ffi
|
|
173
109
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -175,6 +111,9 @@ dependencies:
|
|
|
175
111
|
- - ">="
|
|
176
112
|
- !ruby/object:Gem::Version
|
|
177
113
|
version: '1.15'
|
|
114
|
+
- - "<"
|
|
115
|
+
- !ruby/object:Gem::Version
|
|
116
|
+
version: 1.18.0
|
|
178
117
|
type: :runtime
|
|
179
118
|
prerelease: false
|
|
180
119
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -182,6 +121,9 @@ dependencies:
|
|
|
182
121
|
- - ">="
|
|
183
122
|
- !ruby/object:Gem::Version
|
|
184
123
|
version: '1.15'
|
|
124
|
+
- - "<"
|
|
125
|
+
- !ruby/object:Gem::Version
|
|
126
|
+
version: 1.18.0
|
|
185
127
|
- !ruby/object:Gem::Dependency
|
|
186
128
|
name: ffi-yajl
|
|
187
129
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -250,6 +192,26 @@ dependencies:
|
|
|
250
192
|
- - "~>"
|
|
251
193
|
- !ruby/object:Gem::Version
|
|
252
194
|
version: '1.1'
|
|
195
|
+
- !ruby/object:Gem::Dependency
|
|
196
|
+
name: ed25519
|
|
197
|
+
requirement: !ruby/object:Gem::Requirement
|
|
198
|
+
requirements:
|
|
199
|
+
- - ">="
|
|
200
|
+
- !ruby/object:Gem::Version
|
|
201
|
+
version: '1.2'
|
|
202
|
+
- - "<"
|
|
203
|
+
- !ruby/object:Gem::Version
|
|
204
|
+
version: '2.0'
|
|
205
|
+
type: :runtime
|
|
206
|
+
prerelease: false
|
|
207
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
208
|
+
requirements:
|
|
209
|
+
- - ">="
|
|
210
|
+
- !ruby/object:Gem::Version
|
|
211
|
+
version: '1.2'
|
|
212
|
+
- - "<"
|
|
213
|
+
- !ruby/object:Gem::Version
|
|
214
|
+
version: '2.0'
|
|
253
215
|
- !ruby/object:Gem::Dependency
|
|
254
216
|
name: highline
|
|
255
217
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -270,6 +232,20 @@ dependencies:
|
|
|
270
232
|
- - "<"
|
|
271
233
|
- !ruby/object:Gem::Version
|
|
272
234
|
version: '3'
|
|
235
|
+
- !ruby/object:Gem::Dependency
|
|
236
|
+
name: abbrev
|
|
237
|
+
requirement: !ruby/object:Gem::Requirement
|
|
238
|
+
requirements:
|
|
239
|
+
- - ">="
|
|
240
|
+
- !ruby/object:Gem::Version
|
|
241
|
+
version: '0'
|
|
242
|
+
type: :runtime
|
|
243
|
+
prerelease: false
|
|
244
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
245
|
+
requirements:
|
|
246
|
+
- - ">="
|
|
247
|
+
- !ruby/object:Gem::Version
|
|
248
|
+
version: '0'
|
|
273
249
|
- !ruby/object:Gem::Dependency
|
|
274
250
|
name: tty-prompt
|
|
275
251
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -355,19 +331,19 @@ dependencies:
|
|
|
355
331
|
- !ruby/object:Gem::Version
|
|
356
332
|
version: '0'
|
|
357
333
|
- !ruby/object:Gem::Dependency
|
|
358
|
-
name:
|
|
334
|
+
name: cookstyle
|
|
359
335
|
requirement: !ruby/object:Gem::Requirement
|
|
360
336
|
requirements:
|
|
361
337
|
- - ">="
|
|
362
338
|
- !ruby/object:Gem::Version
|
|
363
|
-
version:
|
|
339
|
+
version: 7.32.8
|
|
364
340
|
type: :development
|
|
365
341
|
prerelease: false
|
|
366
342
|
version_requirements: !ruby/object:Gem::Requirement
|
|
367
343
|
requirements:
|
|
368
344
|
- - ">="
|
|
369
345
|
- !ruby/object:Gem::Version
|
|
370
|
-
version:
|
|
346
|
+
version: 7.32.8
|
|
371
347
|
- !ruby/object:Gem::Dependency
|
|
372
348
|
name: proxifier2
|
|
373
349
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -388,28 +364,14 @@ dependencies:
|
|
|
388
364
|
requirements:
|
|
389
365
|
- - "~>"
|
|
390
366
|
- !ruby/object:Gem::Version
|
|
391
|
-
version: '1.
|
|
392
|
-
type: :runtime
|
|
393
|
-
prerelease: false
|
|
394
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
395
|
-
requirements:
|
|
396
|
-
- - "~>"
|
|
397
|
-
- !ruby/object:Gem::Version
|
|
398
|
-
version: '1.0'
|
|
399
|
-
- !ruby/object:Gem::Dependency
|
|
400
|
-
name: chef-zero
|
|
401
|
-
requirement: !ruby/object:Gem::Requirement
|
|
402
|
-
requirements:
|
|
403
|
-
- - "~>"
|
|
404
|
-
- !ruby/object:Gem::Version
|
|
405
|
-
version: 15.0.21
|
|
367
|
+
version: '1.2'
|
|
406
368
|
type: :runtime
|
|
407
369
|
prerelease: false
|
|
408
370
|
version_requirements: !ruby/object:Gem::Requirement
|
|
409
371
|
requirements:
|
|
410
372
|
- - "~>"
|
|
411
373
|
- !ruby/object:Gem::Version
|
|
412
|
-
version:
|
|
374
|
+
version: '1.2'
|
|
413
375
|
description: The knife CLI for Chef Infra.
|
|
414
376
|
email: adam@chef.io
|
|
415
377
|
executables:
|
|
@@ -769,7 +731,6 @@ files:
|
|
|
769
731
|
- spec/data/file-providers-method-snapshot-chef-11-4.json
|
|
770
732
|
- spec/data/fileedit/blank
|
|
771
733
|
- spec/data/fileedit/hosts
|
|
772
|
-
- spec/data/gems/chef-integration-test-0.1.0.gem
|
|
773
734
|
- spec/data/git_bundles/example-repo.gitbundle
|
|
774
735
|
- spec/data/git_bundles/sinatra-test-app-with-callback-files.gitbundle
|
|
775
736
|
- spec/data/git_bundles/sinatra-test-app-with-symlinks.gitbundle
|
|
@@ -820,9 +781,6 @@ files:
|
|
|
820
781
|
- spec/data/mixin/invalid_data.rb
|
|
821
782
|
- spec/data/mixin/real_data.rb
|
|
822
783
|
- spec/data/nested.json
|
|
823
|
-
- spec/data/nodes/default.rb
|
|
824
|
-
- spec/data/nodes/test.example.com.rb
|
|
825
|
-
- spec/data/nodes/test.rb
|
|
826
784
|
- spec/data/null_config.rb
|
|
827
785
|
- spec/data/object_loader/environments/test.json
|
|
828
786
|
- spec/data/object_loader/environments/test.rb
|
|
@@ -1060,7 +1018,9 @@ files:
|
|
|
1060
1018
|
- spec/unit/application/knife_spec.rb
|
|
1061
1019
|
- spec/unit/knife/bootstrap/chef_vault_handler_spec.rb
|
|
1062
1020
|
- spec/unit/knife/bootstrap/client_builder_spec.rb
|
|
1021
|
+
- spec/unit/knife/bootstrap/templates/windows_presigned_url_spec.rb
|
|
1063
1022
|
- spec/unit/knife/bootstrap/train_connector_spec.rb
|
|
1023
|
+
- spec/unit/knife/bootstrap_chef19_spec.rb
|
|
1064
1024
|
- spec/unit/knife/bootstrap_spec.rb
|
|
1065
1025
|
- spec/unit/knife/client_bulk_delete_spec.rb
|
|
1066
1026
|
- spec/unit/knife/client_create_spec.rb
|
|
@@ -1089,6 +1049,7 @@ files:
|
|
|
1089
1049
|
- spec/unit/knife/core/status_presenter_spec.rb
|
|
1090
1050
|
- spec/unit/knife/core/subcommand_loader_spec.rb
|
|
1091
1051
|
- spec/unit/knife/core/ui_spec.rb
|
|
1052
|
+
- spec/unit/knife/core/windows_bootstrap_context_chef19_spec.rb
|
|
1092
1053
|
- spec/unit/knife/core/windows_bootstrap_context_spec.rb
|
|
1093
1054
|
- spec/unit/knife/data_bag_create_spec.rb
|
|
1094
1055
|
- spec/unit/knife/data_bag_edit_spec.rb
|
|
@@ -1165,8 +1126,8 @@ files:
|
|
|
1165
1126
|
- spec/unit/knife/user_password_spec.rb
|
|
1166
1127
|
- spec/unit/knife/user_reregister_spec.rb
|
|
1167
1128
|
- spec/unit/knife/user_show_spec.rb
|
|
1129
|
+
- spec/unit/knife/utils/licensing_handler_chef19_spec.rb
|
|
1168
1130
|
- spec/unit/knife_spec.rb
|
|
1169
|
-
- spec/unit/utils/licensing_handler_spec.rb
|
|
1170
1131
|
homepage: https://www.chef.io
|
|
1171
1132
|
licenses:
|
|
1172
1133
|
- Apache-2.0
|
|
@@ -1185,7 +1146,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
1185
1146
|
requirements:
|
|
1186
1147
|
- - ">="
|
|
1187
1148
|
- !ruby/object:Gem::Version
|
|
1188
|
-
version: 3.1
|
|
1149
|
+
version: '3.1'
|
|
1189
1150
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
1190
1151
|
requirements:
|
|
1191
1152
|
- - ">="
|
|
Binary file
|
data/spec/data/nodes/default.rb
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
##
|
|
2
|
-
# Nodes should have a unique name
|
|
3
|
-
##
|
|
4
|
-
name "test.example.com-default"
|
|
5
|
-
|
|
6
|
-
##
|
|
7
|
-
# Nodes can set arbitrary arguments
|
|
8
|
-
##
|
|
9
|
-
default[:sunshine] = "in"
|
|
10
|
-
default[:something] = "else"
|
|
11
|
-
|
|
12
|
-
##
|
|
13
|
-
# Nodes should have recipes
|
|
14
|
-
##
|
|
15
|
-
run_list "operations-master", "operations-monitoring"
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
##
|
|
2
|
-
# Nodes should have a unique name
|
|
3
|
-
##
|
|
4
|
-
name "test.example.com"
|
|
5
|
-
|
|
6
|
-
##
|
|
7
|
-
# Nodes can set arbitrary arguments
|
|
8
|
-
##
|
|
9
|
-
normal[:sunshine] = "in"
|
|
10
|
-
normal[:something] = "else"
|
|
11
|
-
|
|
12
|
-
##
|
|
13
|
-
# Nodes should have recipes
|
|
14
|
-
##
|
|
15
|
-
run_list "operations-master", "operations-monitoring"
|
|
16
|
-
|
|
17
|
-
chef_environment "dev"
|
data/spec/data/nodes/test.rb
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
##
|
|
2
|
-
# Nodes should have a unique name
|
|
3
|
-
##
|
|
4
|
-
name "test.example.com-short"
|
|
5
|
-
|
|
6
|
-
##
|
|
7
|
-
# Nodes can set arbitrary arguments
|
|
8
|
-
##
|
|
9
|
-
default[:sunshine] = "in"
|
|
10
|
-
default[:something] = "else"
|
|
11
|
-
|
|
12
|
-
##
|
|
13
|
-
# Nodes should have recipes
|
|
14
|
-
##
|
|
15
|
-
run_list "operations-master", "operations-monitoring"
|
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# Copyright:: Copyright (c) Chef Software Inc.
|
|
3
|
-
# License:: Apache License, Version 2.0
|
|
4
|
-
#
|
|
5
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
-
# you may not use this file except in compliance with the License.
|
|
7
|
-
# You may obtain a copy of the License at
|
|
8
|
-
#
|
|
9
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
-
#
|
|
11
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
-
# See the License for the specific language governing permissions and
|
|
15
|
-
# limitations under the License.
|
|
16
|
-
#
|
|
17
|
-
|
|
18
|
-
require "knife_spec_helper"
|
|
19
|
-
require "chef/utils/licensing_handler"
|
|
20
|
-
|
|
21
|
-
describe Chef::Utils::LicensingHandler do
|
|
22
|
-
let(:license_key) { "abc123" }
|
|
23
|
-
let(:license_type) { "commercial" }
|
|
24
|
-
let(:handler) { described_class.new(license_key, license_type) }
|
|
25
|
-
|
|
26
|
-
describe "#initialize" do
|
|
27
|
-
it "sets the license key and type" do
|
|
28
|
-
expect(handler.license_key).to eq(license_key)
|
|
29
|
-
expect(handler.license_type).to eq(license_type)
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
describe "#omnitruck_url" do
|
|
34
|
-
context "with a commercial license" do
|
|
35
|
-
it "returns the commercial URL with the license key" do
|
|
36
|
-
expected_url = "https://chefdownload-commerical.chef.io/%s?license_id=abc123"
|
|
37
|
-
expect(handler.omnitruck_url).to eq(expected_url)
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
context "with a trial license" do
|
|
42
|
-
let(:license_type) { "trial" }
|
|
43
|
-
|
|
44
|
-
it "returns the trial URL with the license key" do
|
|
45
|
-
expected_url = "https://chefdownload-trial.chef.io/%s?license_id=abc123"
|
|
46
|
-
expect(handler.omnitruck_url).to eq(expected_url)
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
context "with a free license" do
|
|
51
|
-
let(:license_type) { "free" }
|
|
52
|
-
|
|
53
|
-
it "returns the free (trial) URL with the license key" do
|
|
54
|
-
expected_url = "https://chefdownload-trial.chef.io/%s?license_id=abc123"
|
|
55
|
-
expect(handler.omnitruck_url).to eq(expected_url)
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
context "with an unknown license type" do
|
|
60
|
-
let(:license_type) { "unknown" }
|
|
61
|
-
|
|
62
|
-
it "returns the legacy URL without the license key" do
|
|
63
|
-
expected_url = "https://omnitruck.chef.io/%s"
|
|
64
|
-
expect(handler.omnitruck_url).to eq(expected_url)
|
|
65
|
-
end
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
context "with no license key" do
|
|
69
|
-
let(:license_key) { nil }
|
|
70
|
-
let(:license_type) { nil }
|
|
71
|
-
|
|
72
|
-
it "returns the legacy URL without a license ID parameter" do
|
|
73
|
-
expected_url = "https://omnitruck.chef.io/%s"
|
|
74
|
-
expect(handler.omnitruck_url).to eq(expected_url)
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
describe "#install_sh_url" do
|
|
80
|
-
it "formats the omnitruck URL with install.sh" do
|
|
81
|
-
expect(handler).to receive(:omnitruck_url).and_return("https://example.com/%s?license_id=abc123")
|
|
82
|
-
expect(handler.install_sh_url).to eq("https://example.com/install.sh?license_id=abc123")
|
|
83
|
-
end
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
describe ".validate!" do
|
|
87
|
-
let(:license_keys) { ["abc123"] }
|
|
88
|
-
let(:license_metadata) do
|
|
89
|
-
double("license_metadata", id: license_key, license_type: license_type)
|
|
90
|
-
end
|
|
91
|
-
let(:licenses_metadata) { [license_metadata] }
|
|
92
|
-
|
|
93
|
-
before do
|
|
94
|
-
allow(ChefLicensing::LicenseKeyFetcher).to receive(:fetch).and_return(license_keys)
|
|
95
|
-
allow(ChefLicensing::Api::Describe).to receive(:list).and_return(licenses_metadata)
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
context "when license keys are available" do
|
|
99
|
-
it "returns a new handler with the license key and type" do
|
|
100
|
-
handler = described_class.validate!
|
|
101
|
-
expect(handler.license_key).to eq(license_key)
|
|
102
|
-
expect(handler.license_type).to eq(license_type)
|
|
103
|
-
end
|
|
104
|
-
|
|
105
|
-
it "fetches license keys using ChefLicensing::LicenseKeyFetcher" do
|
|
106
|
-
expect(ChefLicensing::LicenseKeyFetcher).to receive(:fetch).and_return(license_keys)
|
|
107
|
-
described_class.validate!
|
|
108
|
-
end
|
|
109
|
-
|
|
110
|
-
it "gets license metadata using ChefLicensing::Api::Describe" do
|
|
111
|
-
expect(ChefLicensing::Api::Describe).to receive(:list).with({
|
|
112
|
-
license_keys: license_keys,
|
|
113
|
-
}).and_return(licenses_metadata)
|
|
114
|
-
described_class.validate!
|
|
115
|
-
end
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
context "when no license keys are available" do
|
|
119
|
-
let(:license_keys) { [] }
|
|
120
|
-
|
|
121
|
-
it "returns a new handler with nil license key and type" do
|
|
122
|
-
handler = described_class.validate!
|
|
123
|
-
expect(handler.license_key).to be_nil
|
|
124
|
-
expect(handler.license_type).to be_nil
|
|
125
|
-
end
|
|
126
|
-
end
|
|
127
|
-
|
|
128
|
-
context "when ChefLicensing::RestfulClientConnectionError is raised" do
|
|
129
|
-
before do
|
|
130
|
-
allow(ChefLicensing::LicenseKeyFetcher).to receive(:fetch).and_raise(ChefLicensing::RestfulClientConnectionError)
|
|
131
|
-
end
|
|
132
|
-
|
|
133
|
-
it "returns a new handler with nil license key and type" do
|
|
134
|
-
handler = described_class.validate!
|
|
135
|
-
expect(handler.license_key).to be_nil
|
|
136
|
-
expect(handler.license_type).to be_nil
|
|
137
|
-
end
|
|
138
|
-
end
|
|
139
|
-
end
|
|
140
|
-
end
|