chef 17.6.18-universal-mingw32 → 17.7.22-universal-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +5 -0
  3. data/chef.gemspec +1 -0
  4. data/lib/chef/chef_fs/file_pattern.rb +1 -1
  5. data/lib/chef/chef_fs/path_utils.rb +1 -1
  6. data/lib/chef/data_collector/run_end_message.rb +1 -1
  7. data/lib/chef/dsl/reboot_pending.rb +1 -1
  8. data/lib/chef/exceptions.rb +10 -0
  9. data/lib/chef/provider/cron.rb +4 -1
  10. data/lib/chef/provider/git.rb +1 -1
  11. data/lib/chef/provider/ifconfig/debian.rb +1 -1
  12. data/lib/chef/provider/subversion.rb +5 -5
  13. data/lib/chef/resource/chocolatey_config.rb +1 -1
  14. data/lib/chef/resource/chocolatey_feature.rb +1 -1
  15. data/lib/chef/resource/chocolatey_source.rb +24 -2
  16. data/lib/chef/resource/directory.rb +1 -1
  17. data/lib/chef/resource/habitat_install.rb +3 -3
  18. data/lib/chef/resource/inspec_waiver.rb +1 -1
  19. data/lib/chef/resource/inspec_waiver_file_entry.rb +1 -1
  20. data/lib/chef/resource/kernel_module.rb +27 -2
  21. data/lib/chef/resource/macos_userdefaults.rb +43 -128
  22. data/lib/chef/resource/windows_auto_run.rb +1 -1
  23. data/lib/chef/resource/windows_dfs_namespace.rb +2 -2
  24. data/lib/chef/resource/windows_update_settings.rb +3 -3
  25. data/lib/chef/resource.rb +1 -1
  26. data/lib/chef/resource_reporter.rb +1 -1
  27. data/lib/chef/secret_fetcher/azure_key_vault.rb +62 -8
  28. data/lib/chef/secret_fetcher.rb +0 -1
  29. data/lib/chef/version.rb +1 -1
  30. data/spec/functional/dsl/reboot_pending_spec.rb +3 -3
  31. data/spec/functional/dsl/registry_helper_spec.rb +1 -1
  32. data/spec/functional/resource/dsc_script_spec.rb +2 -2
  33. data/spec/functional/resource/macos_userdefaults_spec.rb +119 -0
  34. data/spec/functional/resource/registry_spec.rb +81 -81
  35. data/spec/functional/win32/registry_spec.rb +8 -8
  36. data/spec/unit/data_collector_spec.rb +24 -1
  37. data/spec/unit/dsl/reboot_pending_spec.rb +1 -1
  38. data/spec/unit/mixin/default_paths_spec.rb +1 -1
  39. data/spec/unit/mixin/securable_spec.rb +3 -3
  40. data/spec/unit/provider/cron_spec.rb +45 -0
  41. data/spec/unit/provider/package/rubygems_spec.rb +5 -5
  42. data/spec/unit/provider/package/windows_spec.rb +1 -1
  43. data/spec/unit/provider/registry_key_spec.rb +4 -4
  44. data/spec/unit/provider/service/windows_spec.rb +5 -5
  45. data/spec/unit/provider/subversion_spec.rb +4 -4
  46. data/spec/unit/provider/windows_env_spec.rb +1 -1
  47. data/spec/unit/provider/zypper_repository_spec.rb +1 -1
  48. data/spec/unit/resource/chocolatey_config_spec.rb +1 -1
  49. data/spec/unit/resource/chocolatey_feature_spec.rb +1 -1
  50. data/spec/unit/resource/chocolatey_source_spec.rb +1 -1
  51. data/spec/unit/resource/kernel_module_spec.rb +2 -1
  52. data/spec/unit/resource/macos_user_defaults_spec.rb +36 -96
  53. data/spec/unit/resource/registry_key_spec.rb +10 -10
  54. data/spec/unit/resource/windows_auto_run_spec.rb +1 -1
  55. data/spec/unit/resource/windows_feature_powershell_spec.rb +1 -1
  56. data/spec/unit/resource/windows_firewall_rule_spec.rb +2 -2
  57. data/spec/unit/resource/windows_task_spec.rb +3 -3
  58. data/spec/unit/resource_reporter_spec.rb +2 -2
  59. data/spec/unit/resource_spec.rb +5 -0
  60. data/spec/unit/secret_fetcher/azure_key_vault_spec.rb +99 -20
  61. data/spec/unit/util/backup_spec.rb +1 -1
  62. data/spec/unit/win32/registry_spec.rb +3 -3
  63. metadata +21 -6
@@ -503,11 +503,11 @@ describe Chef::Provider::Package::Rubygems do
503
503
  platform_mock :windows do
504
504
  allow(ENV).to receive(:[]).with("PATH").and_return('C:\windows\system32;C:\windows;C:\Ruby186\bin')
505
505
  allow(ENV).to receive(:[]).with("PATHEXT").and_return(nil)
506
- allow(File).to receive(:executable?).with('C:\\windows\\system32/gem').and_return(false)
507
- allow(File).to receive(:executable?).with('C:\\windows/gem').and_return(false)
508
- allow(File).to receive(:executable?).with('C:\\Ruby186\\bin/gem').and_return(true)
509
- allow(File).to receive(:executable?).with('d:\\opscode\\chef\\bin/gem').and_return(false) # should not get here
510
- allow(File).to receive(:executable?).with('d:\\opscode\\chef\\bin/gem').and_return(false) # should not get here
506
+ allow(File).to receive(:executable?).with("C:\\windows\\system32/gem").and_return(false)
507
+ allow(File).to receive(:executable?).with("C:\\windows/gem").and_return(false)
508
+ allow(File).to receive(:executable?).with("C:\\Ruby186\\bin/gem").and_return(true)
509
+ allow(File).to receive(:executable?).with("d:\\opscode\\chef\\bin/gem").and_return(false) # should not get here
510
+ allow(File).to receive(:executable?).with("d:\\opscode\\chef\\bin/gem").and_return(false) # should not get here
511
511
  allow(File).to receive(:executable?).with("d:/opscode/chef/embedded/bin/gem").and_return(false) # should not get here
512
512
  expect(provider.gem_env.gem_binary_location).to eq('C:\Ruby186\bin/gem')
513
513
  end
@@ -39,7 +39,7 @@ describe Chef::Provider::Package::Windows, :windows_only do
39
39
  new_resource
40
40
  end
41
41
  let(:provider) { Chef::Provider::Package::Windows.new(new_resource, run_context) }
42
- let(:cache_path) { 'c:\\cache\\' }
42
+ let(:cache_path) { "c:\\cache\\" }
43
43
 
44
44
  before(:each) do
45
45
  allow(::File).to receive(:exist?).with(new_resource.source).and_return(true)
@@ -274,7 +274,7 @@ describe Chef::Provider::RegistryKey do
274
274
  end
275
275
 
276
276
  context "when the key data is safe" do
277
- let(:keyname) { 'HKLM\Software\Opscode\Testing\Safe' }
277
+ let(:keyname) { "HKLM\\Software\\Opscode\\Testing\\Safe" }
278
278
  let(:testval1) { { name: "one", type: :string, data: "1" } }
279
279
  let(:testval1_wrong_type) { { name: "one", type: :multi_string, data: "1" } }
280
280
  let(:testval1_wrong_data) { { name: "one", type: :string, data: "2" } }
@@ -295,7 +295,7 @@ describe Chef::Provider::RegistryKey do
295
295
 
296
296
  describe "action_create" do
297
297
  context "when key exists and type matches" do
298
- let(:keyname) { 'hklm\\software\\opscode\\testing\\dword' }
298
+ let(:keyname) { "hklm\\software\\opscode\\testing\\dword" }
299
299
  let(:dword_passed_as_integer) { { name: "one", type: :dword, data: 12345 } }
300
300
  let(:testval1) { { name: "one", type: :dword, data: "12345" } }
301
301
  before do
@@ -349,7 +349,7 @@ describe Chef::Provider::RegistryKey do
349
349
  end
350
350
 
351
351
  context "and key does not exist" do
352
- let(:keyname) { 'hklm\\software\\opscode\\testing\\sensitive\missing' }
352
+ let(:keyname) { "hklm\\software\\opscode\\testing\\sensitive\\missing" }
353
353
  let(:testval1) { { name: "one", type: :string, data: "first_value" } }
354
354
 
355
355
  before(:each) do
@@ -368,7 +368,7 @@ describe Chef::Provider::RegistryKey do
368
368
 
369
369
  describe "action_create_if_missing" do
370
370
  context "when sensitive is true" do
371
- let(:keyname) { 'hklm\\software\\opscode\\testing\\create_if_missing\\sensitive' }
371
+ let(:keyname) { "hklm\\software\\opscode\\testing\\create_if_missing\\sensitive" }
372
372
  let(:testval1) { { name: "one", type: :string, data: "first_value" } }
373
373
 
374
374
  before(:each) do
@@ -33,7 +33,7 @@ describe Chef::Provider::Service::Windows, "load_current_resource" do
33
33
 
34
34
  # Actual response from Win32::Service.config_info('chef-client')
35
35
  let(:chef_service_binary_path_name) do
36
- 'C:\\opscode\\chef\\embedded\\bin\\ruby.exe C:\\opscode\\chef\\bin\\chef-windows-service'
36
+ "C:\\opscode\\chef\\embedded\\bin\\ruby.exe C:\\opscode\\chef\\bin\\chef-windows-service"
37
37
  end
38
38
  let(:chef_service_config_info) do
39
39
  double("Struct::ServiceConfigInfo",
@@ -153,11 +153,11 @@ describe Chef::Provider::Service::Windows, "load_current_resource" do
153
153
  service_type: "share process",
154
154
  start_type: "demand start",
155
155
  error_control: "normal",
156
- binary_path_name: 'C:\\Windows\\system32\\svchost.exe -k LocalServiceNetworkRestricted',
156
+ binary_path_name: "C:\\Windows\\system32\\svchost.exe -k LocalServiceNetworkRestricted",
157
157
  load_order_group: "TDI",
158
158
  tag_id: 0,
159
159
  dependencies: %w{NSI Tdx Afd},
160
- service_start_name: 'NT Authority\\LocalService',
160
+ service_start_name: "NT Authority\\LocalService",
161
161
  display_name: "DHCP Client")
162
162
  )
163
163
  end
@@ -169,11 +169,11 @@ describe Chef::Provider::Service::Windows, "load_current_resource" do
169
169
  service_type: "share process",
170
170
  start_type: "demand start",
171
171
  error_control: "normal",
172
- binary_path_name: 'C:\\Windows\\system32\\svchost.exe -k LocalServiceNetworkRestricted',
172
+ binary_path_name: "C:\\Windows\\system32\\svchost.exe -k LocalServiceNetworkRestricted",
173
173
  load_order_group: "TDI",
174
174
  tag_id: 0,
175
175
  dependencies: %w{NSI Tdx Afd},
176
- service_start_name: 'NT Authority\\LocalService',
176
+ service_start_name: "NT Authority\\LocalService",
177
177
  display_name: "DHCP Client")
178
178
  )
179
179
  end
@@ -190,7 +190,7 @@ describe Chef::Provider::Subversion do
190
190
  it "runs an export with the --force option" do
191
191
  allow(::File).to receive(:directory?).with("/my/deploy").and_return(true)
192
192
  expected_cmd = "svn export --force -q -r12345 http://svn.example.org/trunk/ /my/deploy/dir"
193
- expect(@provider).to receive(:shell_out!).with(expected_cmd, {})
193
+ expect(@provider).to receive(:shell_out!).with(expected_cmd)
194
194
  @provider.run_action(:force_export)
195
195
  expect(@resource).to be_updated
196
196
  end
@@ -198,7 +198,7 @@ describe Chef::Provider::Subversion do
198
198
  it "runs the checkout command for action_checkout" do
199
199
  allow(::File).to receive(:directory?).with("/my/deploy").and_return(true)
200
200
  expected_cmd = "svn checkout -q -r12345 http://svn.example.org/trunk/ /my/deploy/dir"
201
- expect(@provider).to receive(:shell_out!).with(expected_cmd, {})
201
+ expect(@provider).to receive(:shell_out!).with(expected_cmd)
202
202
  @provider.run_action(:checkout)
203
203
  expect(@resource).to be_updated
204
204
  end
@@ -248,7 +248,7 @@ describe Chef::Provider::Subversion do
248
248
  allow(@provider).to receive(:find_current_revision).and_return("11410")
249
249
  allow(@provider).to receive(:current_revision_matches_target_revision?).and_return(false)
250
250
  expected_cmd = "svn update -q -r12345 /my/deploy/dir"
251
- expect(@provider).to receive(:shell_out!).with(expected_cmd, {})
251
+ expect(@provider).to receive(:shell_out!).with(expected_cmd)
252
252
  @provider.run_action(:sync)
253
253
  expect(@resource).to be_updated
254
254
  end
@@ -265,7 +265,7 @@ describe Chef::Provider::Subversion do
265
265
  it "runs the export_command on action_export" do
266
266
  allow(::File).to receive(:directory?).with("/my/deploy").and_return(true)
267
267
  expected_cmd = "svn export --force -q -r12345 http://svn.example.org/trunk/ /my/deploy/dir"
268
- expect(@provider).to receive(:shell_out!).with(expected_cmd, {})
268
+ expect(@provider).to receive(:shell_out!).with(expected_cmd)
269
269
  @provider.run_action(:export)
270
270
  expect(@resource).to be_updated
271
271
  end
@@ -358,7 +358,7 @@ describe "windows_env provider", :windows_only do
358
358
  context "when environment is PATH" do
359
359
  describe "for PATH" do
360
360
  let(:system_root) { "%SystemRoot%" }
361
- let(:system_root_value) { 'D:\Windows' }
361
+ let(:system_root_value) { "D:\\Windows" }
362
362
  let(:new_resource) do
363
363
  new_resource = Chef::Resource::WindowsEnv.new("PATH", run_context)
364
364
  new_resource.value(system_root)
@@ -103,7 +103,7 @@ describe Chef::Provider::ZypperRepository do
103
103
 
104
104
  describe "#escaped_repo_name" do
105
105
  it "returns an escaped repo name" do
106
- expect(provider.escaped_repo_name).to eq('Nginx\\ Repository')
106
+ expect(provider.escaped_repo_name).to eq("Nginx\\ Repository")
107
107
  end
108
108
  end
109
109
 
@@ -41,7 +41,7 @@ describe Chef::Resource::ChocolateyConfig do
41
41
  # we save off the ENV and set ALLUSERSPROFILE so these specs will work on *nix and non-C drive Windows installs
42
42
  before(:each) do
43
43
  @original_env = ENV.to_hash
44
- ENV["ALLUSERSPROFILE"] = 'C:\ProgramData'
44
+ ENV["ALLUSERSPROFILE"] = "C:\\ProgramData"
45
45
  end
46
46
 
47
47
  after(:each) do
@@ -41,7 +41,7 @@ describe Chef::Resource::ChocolateyFeature do
41
41
  # we save off the ENV and set ALLUSERSPROFILE so these specs will work on *nix and non-C drive Windows installs
42
42
  before(:each) do
43
43
  @original_env = ENV.to_hash
44
- ENV["ALLUSERSPROFILE"] = 'C:\ProgramData'
44
+ ENV["ALLUSERSPROFILE"] = "C:\\ProgramData"
45
45
  end
46
46
 
47
47
  after(:each) do
@@ -54,7 +54,7 @@ describe Chef::Resource::ChocolateySource do
54
54
  allow(resource).to receive(:provider_for_action).and_return(enable_provider)
55
55
  allow(resource.class).to receive(:new).and_return(current_resource)
56
56
  @original_env = ENV.to_hash
57
- ENV["ALLUSERSPROFILE"] = 'C:\ProgramData'
57
+ ENV["ALLUSERSPROFILE"] = "C:\\ProgramData"
58
58
  end
59
59
 
60
60
  after(:each) do
@@ -32,10 +32,11 @@ describe Chef::Resource::KernelModule do
32
32
  expect(resource.modname).to eql("foo")
33
33
  end
34
34
 
35
- it "supports :create and :flush actions" do
35
+ it "supports various actions" do
36
36
  expect { resource.action :install }.not_to raise_error
37
37
  expect { resource.action :uninstall }.not_to raise_error
38
38
  expect { resource.action :blacklist }.not_to raise_error
39
+ expect { resource.action :enable }.not_to raise_error
39
40
  expect { resource.action :disable }.not_to raise_error
40
41
  expect { resource.action :load }.not_to raise_error
41
42
  expect { resource.action :unload }.not_to raise_error
@@ -17,120 +17,60 @@
17
17
 
18
18
  require "spec_helper"
19
19
 
20
- describe Chef::Resource::MacosUserDefaults do
21
-
22
- let(:resource) { Chef::Resource::MacosUserDefaults.new("foo") }
23
- let(:provider) { resource.provider_for_action(:write) }
24
-
25
- it "has a resource name of :macos_userdefaults" do
26
- expect(resource.resource_name).to eq(:macos_userdefaults)
27
- end
28
-
29
- it "the domain property defaults to NSGlobalDomain" do
30
- expect(resource.domain).to eq("NSGlobalDomain")
31
- end
32
-
33
- it "the value property coerces keys in hashes to strings so we can compare them with plist data" do
34
- resource.value "User": "/Library/Managed Installs/way_fake.log"
35
- expect(resource.value).to eq({ "User" => "/Library/Managed Installs/way_fake.log" })
36
- end
37
-
38
- it "the host property defaults to nil" do
39
- expect(resource.host).to be_nil
40
- end
41
-
42
- it "the sudo property defaults to false" do
43
- expect(resource.sudo).to be false
44
- end
45
-
46
- it "sets the default action as :write" do
47
- expect(resource.action).to eq([:write])
48
- end
49
-
50
- it "supports :write action" do
51
- expect { resource.action :write }.not_to raise_error
52
- end
53
-
54
- describe "#defaults_export_cmd" do
55
- it "exports NSGlobalDomain if no domain is set" do
56
- expect(provider.defaults_export_cmd(resource)).to eq(["/usr/bin/defaults", "export", "NSGlobalDomain", "-"])
20
+ describe Chef::Resource::MacosUserDefaults, :macos_only, requires_root: true do
21
+ let(:test_value) { "fakest_key_value" }
22
+ let(:test_key) { "fakest_key" }
23
+ let(:node) { Chef::Node.new }
24
+ let(:events) { Chef::EventDispatch::Dispatcher.new }
25
+ let(:run_context) { Chef::RunContext.new(node, {}, events) }
26
+ let(:resource) {
27
+ Chef::Resource::MacosUserDefaults.new("foo", run_context).tap do |r|
28
+ r.value test_value
29
+ r.key test_key
57
30
  end
31
+ }
58
32
 
59
- it "exports a provided domain" do
60
- resource.domain "com.tim"
61
- expect(provider.defaults_export_cmd(resource)).to eq(["/usr/bin/defaults", "export", "com.tim", "-"])
33
+ context "has a default value" do
34
+ it ":macos_userdefaults for resource name" do
35
+ expect(resource.resource_name).to eq(:macos_userdefaults)
62
36
  end
63
37
 
64
- it "sets -currentHost if host is 'current'" do
65
- resource.host "current"
66
- expect(provider.defaults_export_cmd(resource)).to eq(["/usr/bin/defaults", "-currentHost", "export", "NSGlobalDomain", "-"])
38
+ it "NSGlobalDomain for the domain property" do
39
+ expect(resource.domain).to eq("NSGlobalDomain")
67
40
  end
68
41
 
69
- it "sets -host 'tim-laptop if host is 'tim-laptop'" do
70
- resource.host "tim-laptop"
71
- expect(provider.defaults_export_cmd(resource)).to eq(["/usr/bin/defaults", "-host", "tim-laptop", "export", "NSGlobalDomain", "-"])
72
- end
73
- end
74
-
75
- describe "#defaults_modify_cmd" do
76
- # avoid needing to set these required values over and over. We'll overwrite them where necessary
77
- before do
78
- resource.key = "foo"
79
- resource.value = "bar"
80
- end
81
-
82
- it "writes to NSGlobalDomain if domain isn't specified" do
83
- expect(provider.defaults_modify_cmd).to eq(["/usr/bin/defaults", "write", "NSGlobalDomain", "foo", "-string", "bar"])
84
- end
85
-
86
- it "uses the domain property if set" do
87
- resource.domain = "MyCustomDomain"
88
- expect(provider.defaults_modify_cmd).to eq(["/usr/bin/defaults", "write", "MyCustomDomain", "foo", "-string", "bar"])
42
+ it "nil for the host property" do
43
+ expect(resource.host).to be_nil
89
44
  end
90
45
 
91
- it "sets host specific values using host property" do
92
- resource.host = "tims_laptop"
93
- expect(provider.defaults_modify_cmd).to eq(["/usr/bin/defaults", "-host", "tims_laptop", "write", "NSGlobalDomain", "foo", "-string", "bar"])
46
+ it "nil for the user property" do
47
+ expect(resource.user).to be_nil
94
48
  end
95
49
 
96
- it "if host is set to :current it passes CurrentHost" do
97
- resource.host = :current
98
- expect(provider.defaults_modify_cmd).to eq(["/usr/bin/defaults", "-currentHost", "write", "NSGlobalDomain", "foo", "-string", "bar"])
99
- end
100
-
101
- it "raises ArgumentError if bool is specified, but the value can't be made into a bool" do
102
- resource.type "bool"
103
- expect { provider.defaults_modify_cmd }.to raise_error(ArgumentError)
104
- end
105
-
106
- it "autodetects array type and passes individual values" do
107
- resource.value = %w{one two three}
108
- expect(provider.defaults_modify_cmd).to eq(["/usr/bin/defaults", "write", "NSGlobalDomain", "foo", "-array", "one", "two", "three"])
109
- end
110
-
111
- it "autodetects string type and passes a single value" do
112
- resource.value = "one"
113
- expect(provider.defaults_modify_cmd).to eq(["/usr/bin/defaults", "write", "NSGlobalDomain", "foo", "-string", "one"])
50
+ it ":write for resource action" do
51
+ expect(resource.action).to eq([:write])
114
52
  end
53
+ end
115
54
 
116
- it "autodetects integer type and passes a single value" do
117
- resource.value = 1
118
- expect(provider.defaults_modify_cmd).to eq(["/usr/bin/defaults", "write", "NSGlobalDomain", "foo", "-int", 1])
55
+ context ":write" do
56
+ it "is a supported action" do
57
+ expect { resource.action :write }.not_to raise_error
119
58
  end
120
59
 
121
- it "autodetects boolean type from TrueClass value and passes a 'TRUE' string" do
122
- resource.value = true
123
- expect(provider.defaults_modify_cmd).to eq(["/usr/bin/defaults", "write", "NSGlobalDomain", "foo", "-bool", "TRUE"])
60
+ it "successfully updates the preference" do
61
+ resource.run_action(:write)
62
+ expect(resource.get_preference resource).eql? test_value
124
63
  end
64
+ end
125
65
 
126
- it "autodetects boolean type from FalseClass value and passes a 'FALSE' string" do
127
- resource.value = false
128
- expect(provider.defaults_modify_cmd).to eq(["/usr/bin/defaults", "write", "NSGlobalDomain", "foo", "-bool", "FALSE"])
66
+ context ":delete" do
67
+ it "is a supported action" do
68
+ expect { resource.action :delete }.not_to raise_error
129
69
  end
130
70
 
131
- it "autodetects dict type from Hash value and flattens keys & values" do
132
- resource.value = { "foo" => "bar" }
133
- expect(provider.defaults_modify_cmd).to eq(["/usr/bin/defaults", "write", "NSGlobalDomain", "foo", "-dict", "foo", "bar"])
71
+ it "successfully deletes the preference" do
72
+ resource.run_action(:delete)
73
+ expect(resource.get_preference resource).to be_nil
134
74
  end
135
75
  end
136
76
  end
@@ -19,14 +19,14 @@
19
19
  require "spec_helper"
20
20
 
21
21
  describe Chef::Resource::RegistryKey, "initialize" do
22
- let(:resource) { Chef::Resource::RegistryKey.new('HKCU\Software\Raxicoricofallapatorius') }
22
+ let(:resource) { Chef::Resource::RegistryKey.new("HKCU\\Software\\Raxicoricofallapatorius") }
23
23
 
24
24
  it "sets the resource_name to :registry_key" do
25
25
  expect(resource.resource_name).to eql(:registry_key)
26
26
  end
27
27
 
28
28
  it "the key property is the name_property" do
29
- expect(resource.key).to eql('HKCU\Software\Raxicoricofallapatorius')
29
+ expect(resource.key).to eql("HKCU\\Software\\Raxicoricofallapatorius")
30
30
  end
31
31
 
32
32
  it "sets the default action as :create" do
@@ -60,11 +60,11 @@ describe Chef::Resource::RegistryKey, "initialize" do
60
60
  end
61
61
 
62
62
  describe Chef::Resource::RegistryKey, "key" do
63
- let(:resource) { Chef::Resource::RegistryKey.new('HKCU\Software\Raxicoricofallapatorius') }
63
+ let(:resource) { Chef::Resource::RegistryKey.new("HKCU\\Software\\Raxicoricofallapatorius") }
64
64
 
65
65
  it "allows a string" do
66
- resource.key 'HKCU\Software\Poosh'
67
- expect(resource.key).to eql('HKCU\Software\Poosh')
66
+ resource.key "HKCU\\Software\\Poosh"
67
+ expect(resource.key).to eql("HKCU\\Software\\Poosh")
68
68
  end
69
69
 
70
70
  it "does not allow an integer" do
@@ -77,7 +77,7 @@ describe Chef::Resource::RegistryKey, "key" do
77
77
  end
78
78
 
79
79
  describe Chef::Resource::RegistryKey, "values" do
80
- let(:resource) { Chef::Resource::RegistryKey.new('HKCU\Software\Raxicoricofallapatorius') }
80
+ let(:resource) { Chef::Resource::RegistryKey.new("HKCU\\Software\\Raxicoricofallapatorius") }
81
81
 
82
82
  it "allows a single proper hash of registry values" do
83
83
  resource.values( { name: "poosh", type: :string, data: "carmen" } )
@@ -140,7 +140,7 @@ describe Chef::Resource::RegistryKey, "values" do
140
140
  end
141
141
 
142
142
  describe Chef::Resource::RegistryKey, "recursive" do
143
- let(:resource) { Chef::Resource::RegistryKey.new('HKCU\Software\Raxicoricofallapatorius') }
143
+ let(:resource) { Chef::Resource::RegistryKey.new("HKCU\\Software\\Raxicoricofallapatorius") }
144
144
 
145
145
  it "allows a boolean" do
146
146
  resource.recursive(true)
@@ -165,7 +165,7 @@ describe Chef::Resource::RegistryKey, "recursive" do
165
165
  end
166
166
 
167
167
  describe Chef::Resource::RegistryKey, "architecture" do
168
- let(:resource) { Chef::Resource::RegistryKey.new('HKCU\Software\Raxicoricofallapatorius') }
168
+ let(:resource) { Chef::Resource::RegistryKey.new("HKCU\\Software\\Raxicoricofallapatorius") }
169
169
 
170
170
  %i{i386 x86_64 machine}.each do |arch|
171
171
  it "allows #{arch} as a symbol" do
@@ -196,7 +196,7 @@ describe Chef::Resource::RegistryKey, "architecture" do
196
196
  end
197
197
 
198
198
  describe Chef::Resource::RegistryKey, ":unscrubbed_values" do
199
- let(:resource) { Chef::Resource::RegistryKey.new('HKCU\Software\Raxicoricofallapatorius') }
199
+ let(:resource) { Chef::Resource::RegistryKey.new("HKCU\\Software\\Raxicoricofallapatorius") }
200
200
 
201
201
  it "returns unsafe data as-is" do
202
202
  key_values = [ { name: "poosh", type: :binary, data: 255.chr * 1 } ]
@@ -206,7 +206,7 @@ describe Chef::Resource::RegistryKey, ":unscrubbed_values" do
206
206
  end
207
207
 
208
208
  describe Chef::Resource::RegistryKey, "state" do
209
- let(:resource) { Chef::Resource::RegistryKey.new('HKCU\Software\Raxicoricofallapatorius') }
209
+ let(:resource) { Chef::Resource::RegistryKey.new("HKCU\\Software\\Raxicoricofallapatorius") }
210
210
 
211
211
  it "returns scrubbed values" do
212
212
  resource.values([ { name: "poosh", type: :binary, data: 255.chr * 1 } ])
@@ -45,6 +45,6 @@ describe Chef::Resource::WindowsAutorun do
45
45
 
46
46
  it "coerces forward slashes to backslashes for the path" do
47
47
  resource.path "C:/something.exe"
48
- expect(resource.path).to eql('C:\\something.exe')
48
+ expect(resource.path).to eql("C:\\something.exe")
49
49
  end
50
50
  end
@@ -76,7 +76,7 @@ describe Chef::Resource::WindowsFeaturePowershell do
76
76
  node.default["powershell_features_cache"]["disabled"] = ["dhcp"]
77
77
  node.default["powershell_features_cache"]["removed"] = ["snmp"]
78
78
  resource.feature_name "dhcp, snmp"
79
- resource.source 'D:\\sources\\sxs'
79
+ resource.source "D:\\sources\\sxs"
80
80
 
81
81
  expect(provider.features_to_install).to eq(%w{dhcp snmp})
82
82
  end
@@ -377,7 +377,7 @@ describe Chef::Resource::WindowsFirewallRule do
377
377
  resource.icmp_type("Any")
378
378
  resource.firewall_action(:notconfigured)
379
379
  resource.profile(:domain)
380
- resource.program('%WINDIR%\System32\lsass.exe')
380
+ resource.program("%WINDIR%\\System32\\lsass.exe")
381
381
  resource.service("SomeService")
382
382
  resource.interface_type(:remoteaccess)
383
383
  resource.enabled(false)
@@ -499,7 +499,7 @@ describe Chef::Resource::WindowsFirewallRule do
499
499
  resource.icmp_type("Any")
500
500
  resource.firewall_action(:notconfigured)
501
501
  resource.profile(:domain)
502
- resource.program('%WINDIR%\System32\lsass.exe')
502
+ resource.program("%WINDIR%\\System32\\lsass.exe")
503
503
  resource.service("SomeService")
504
504
  resource.interface_type(:remoteaccess)
505
505
  resource.enabled(false)
@@ -75,7 +75,7 @@ describe Chef::Resource::WindowsTask, :windows_only do
75
75
  context "a System User" do
76
76
  before do
77
77
  resource.frequency :hourly
78
- resource.user 'NT AUTHORITY\SYSTEM'
78
+ resource.user "NT AUTHORITY\\SYSTEM"
79
79
  end
80
80
 
81
81
  context "for an interactive task" do
@@ -88,7 +88,7 @@ describe Chef::Resource::WindowsTask, :windows_only do
88
88
  expect { resource.after_created }.to raise_error(ArgumentError, "Password is not required for system users.")
89
89
  end
90
90
  it "does not raises an error even when user is in lowercase" do
91
- resource.user 'nt authority\system'
91
+ resource.user "nt authority\\system"
92
92
  expect { resource.after_created }.to_not raise_error
93
93
  end
94
94
  end
@@ -103,7 +103,7 @@ describe Chef::Resource::WindowsTask, :windows_only do
103
103
  expect { resource.after_created }.to raise_error(ArgumentError, "Password is not required for system users.")
104
104
  end
105
105
  it "does not raises an error even when user is in lowercase" do
106
- resource.user 'nt authority\system'
106
+ resource.user "nt authority\\system"
107
107
  expect { resource.after_created }.to_not raise_error
108
108
  end
109
109
  end
@@ -494,7 +494,7 @@ describe Chef::ResourceReporter do
494
494
 
495
495
  context "when the resource is a RegistryKey with binary data" do
496
496
  let(:new_resource) do
497
- resource = Chef::Resource::RegistryKey.new('Wubba\Lubba\Dub\Dubs')
497
+ resource = Chef::Resource::RegistryKey.new("Wubba\\Lubba\\Dub\\Dubs")
498
498
  resource.values([ { name: "rick", type: :binary, data: 255.chr * 1 } ])
499
499
  allow(resource).to receive(:cookbook_name).and_return(cookbook_name)
500
500
  allow(resource).to receive(:cookbook_version).and_return(cookbook_version)
@@ -502,7 +502,7 @@ describe Chef::ResourceReporter do
502
502
  end
503
503
 
504
504
  let(:current_resource) do
505
- resource = Chef::Resource::RegistryKey.new('Wubba\Lubba\Dub\Dubs')
505
+ resource = Chef::Resource::RegistryKey.new("Wubba\\Lubba\\Dub\\Dubs")
506
506
  resource.values([ { name: "rick", type: :binary, data: 255.chr * 1 } ])
507
507
  resource
508
508
  end
@@ -348,6 +348,11 @@ describe Chef::Resource do
348
348
  it "should recognize dynamically defined resources" do
349
349
  expect(resource.defined_at).to eq("dynamically defined")
350
350
  end
351
+
352
+ it "should return nil for the cookbook_version when the cookbook_name is @recipe_files" do
353
+ resource.cookbook_name = "@recipe_files"
354
+ expect(resource.cookbook_version).to be nil
355
+ end
351
356
  end
352
357
 
353
358
  describe "to_s" do