chef 14.1.12 → 14.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (178) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -6
  3. data/VERSION +1 -1
  4. data/chef.gemspec +2 -3
  5. data/lib/chef/chef_fs/data_handler/data_handler_base.rb +8 -4
  6. data/lib/chef/cookbook/manifest_v0.rb +2 -2
  7. data/lib/chef/cookbook_manifest.rb +3 -2
  8. data/lib/chef/cookbook_version.rb +3 -2
  9. data/lib/chef/guard_interpreter/default_guard_interpreter.rb +2 -2
  10. data/lib/chef/http/auth_credentials.rb +5 -3
  11. data/lib/chef/http/authenticator.rb +6 -3
  12. data/lib/chef/knife.rb +3 -6
  13. data/lib/chef/knife/configure.rb +12 -8
  14. data/lib/chef/knife/raw.rb +6 -1
  15. data/lib/chef/mixin/shell_out.rb +16 -14
  16. data/lib/chef/provider/execute.rb +4 -3
  17. data/lib/chef/provider/git.rb +1 -1
  18. data/lib/chef/provider/package/dnf.rb +5 -5
  19. data/lib/chef/provider/package/windows.rb +7 -0
  20. data/lib/chef/provider/package/yum.rb +7 -7
  21. data/lib/chef/provider/service/freebsd.rb +3 -3
  22. data/lib/chef/provider/service/init.rb +5 -5
  23. data/lib/chef/provider/service/macosx.rb +5 -4
  24. data/lib/chef/provider/service/simple.rb +4 -4
  25. data/lib/chef/provider/service/systemd.rb +13 -13
  26. data/lib/chef/provider/service/upstart.rb +3 -3
  27. data/lib/chef/provider/service/windows.rb +2 -0
  28. data/lib/chef/provider/systemd_unit.rb +4 -4
  29. data/lib/chef/provider/user.rb +18 -1
  30. data/lib/chef/provider/user/aix.rb +40 -8
  31. data/lib/chef/provider/user/dscl.rb +7 -14
  32. data/lib/chef/provider/user/linux.rb +1 -11
  33. data/lib/chef/provider/user/solaris.rb +57 -26
  34. data/lib/chef/provider/user/useradd.rb +4 -1
  35. data/lib/chef/provider/windows_task.rb +1 -0
  36. data/lib/chef/providers.rb +1 -2
  37. data/lib/chef/resource/execute.rb +4 -1
  38. data/lib/chef/resource/gem_package.rb +1 -1
  39. data/lib/chef/resource/hostname.rb +1 -1
  40. data/lib/chef/resource/sysctl.rb +3 -1
  41. data/lib/chef/resource/windows_ad_join.rb +16 -3
  42. data/lib/chef/resource_inspector.rb +13 -0
  43. data/lib/chef/run_context/cookbook_compiler.rb +1 -1
  44. data/lib/chef/server_api.rb +2 -0
  45. data/lib/chef/version.rb +1 -1
  46. data/spec/functional/mixin/shell_out_spec.rb +27 -1
  47. data/spec/functional/resource/execute_spec.rb +2 -2
  48. data/spec/functional/resource/windows_task_spec.rb +1 -1
  49. data/spec/support/shared/functional/securable_resource.rb +1 -1
  50. data/spec/support/shared/unit/execute_resource.rb +1 -1
  51. data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +3 -3
  52. data/spec/unit/chef_fs/data_handler/data_handler_base_spec.rb +65 -0
  53. data/spec/unit/cookbook/manifest_v0_spec.rb +1 -1
  54. data/spec/unit/cookbook_manifest_spec.rb +2 -0
  55. data/spec/unit/dsl/recipe_spec.rb +1 -5
  56. data/spec/unit/http/authenticator_spec.rb +33 -8
  57. data/spec/unit/mixin/shell_out_spec.rb +61 -1
  58. data/spec/unit/provider/apt_update_spec.rb +7 -7
  59. data/spec/unit/provider/execute_spec.rb +16 -15
  60. data/spec/unit/provider/git_spec.rb +3 -3
  61. data/spec/unit/provider/package/windows_spec.rb +12 -0
  62. data/spec/unit/provider/script_spec.rb +2 -2
  63. data/spec/unit/provider/service/arch_service_spec.rb +9 -9
  64. data/spec/unit/provider/service/freebsd_service_spec.rb +6 -6
  65. data/spec/unit/provider/service/init_service_spec.rb +11 -11
  66. data/spec/unit/provider/service/invokercd_service_spec.rb +9 -9
  67. data/spec/unit/provider/service/macosx_spec.rb +11 -11
  68. data/spec/unit/provider/service/openbsd_service_spec.rb +6 -6
  69. data/spec/unit/provider/service/simple_service_spec.rb +4 -4
  70. data/spec/unit/provider/service/systemd_service_spec.rb +16 -16
  71. data/spec/unit/provider/service/upstart_service_spec.rb +12 -12
  72. data/spec/unit/provider/service/windows_spec.rb +5 -0
  73. data/spec/unit/provider/systemd_unit_spec.rb +163 -118
  74. data/spec/unit/provider/user/dscl_spec.rb +2 -9
  75. data/spec/unit/provider/user/solaris_spec.rb +2 -2
  76. data/spec/unit/provider/zypper_repository_spec.rb +3 -3
  77. data/spec/unit/provider_spec.rb +1 -5
  78. data/spec/unit/resource/apt_package_spec.rb +14 -0
  79. data/spec/unit/resource/apt_preference_spec.rb +14 -1
  80. data/spec/unit/resource/apt_repository_spec.rb +12 -3
  81. data/spec/unit/resource/apt_update_spec.rb +9 -0
  82. data/spec/unit/resource/bash_spec.rb +8 -0
  83. data/spec/unit/resource/bff_package_spec.rb +51 -0
  84. data/spec/unit/resource/breakpoint_spec.rb +4 -4
  85. data/spec/unit/resource/build_essential_spec.rb +5 -1
  86. data/spec/unit/resource/cab_package_spec.rb +10 -0
  87. data/spec/unit/resource/chef_gem_spec.rb +14 -0
  88. data/spec/unit/resource/chef_handler_spec.rb +9 -4
  89. data/spec/unit/resource/chocolatey_package_spec.rb +15 -1
  90. data/spec/unit/resource/conditional_spec.rb +3 -3
  91. data/spec/unit/resource/cookbook_file_spec.rb +13 -2
  92. data/spec/unit/resource/cron_spec.rb +2 -7
  93. data/spec/unit/resource/csh_spec.rb +8 -0
  94. data/spec/unit/resource/directory_spec.rb +4 -9
  95. data/spec/unit/resource/dmg_package_spec.rb +8 -4
  96. data/spec/unit/resource/dnf_package_spec.rb +16 -1
  97. data/spec/unit/resource/dpkg_package_spec.rb +18 -0
  98. data/spec/unit/resource/dsc_resource_spec.rb +6 -6
  99. data/spec/unit/resource/dsc_script_spec.rb +39 -39
  100. data/spec/unit/resource/execute_spec.rb +20 -12
  101. data/spec/unit/resource/file_spec.rb +10 -10
  102. data/spec/unit/resource/freebsd_package_spec.rb +16 -0
  103. data/spec/unit/resource/gem_package_spec.rb +27 -0
  104. data/spec/unit/resource/git_spec.rb +17 -2
  105. data/spec/unit/resource/group_spec.rb +18 -17
  106. data/spec/unit/resource/homebrew_cask_spec.rb +9 -4
  107. data/spec/unit/resource/homebrew_package_spec.rb +14 -0
  108. data/spec/unit/resource/homebrew_tap_spec.rb +8 -3
  109. data/spec/unit/resource/hostname_spec.rb +10 -6
  110. data/spec/unit/resource/http_request_spec.rb +14 -0
  111. data/spec/unit/resource/ips_package_spec.rb +15 -3
  112. data/spec/unit/resource/ksh_spec.rb +8 -0
  113. data/spec/unit/resource/launchd_spec.rb +11 -5
  114. data/spec/unit/resource/link_spec.rb +6 -11
  115. data/spec/unit/resource/log_spec.rb +8 -8
  116. data/spec/unit/resource/macos_user_defaults_spec.rb +5 -1
  117. data/spec/unit/resource/macports_package_spec.rb +19 -0
  118. data/spec/unit/resource/mdadm_spec.rb +7 -3
  119. data/spec/unit/resource/mount_spec.rb +15 -18
  120. data/spec/unit/resource/msu_package_spec.rb +10 -0
  121. data/spec/unit/resource/ohai_hint_spec.rb +9 -8
  122. data/spec/unit/resource/ohai_spec.rb +11 -3
  123. data/spec/unit/resource/openbsd_package_spec.rb +14 -0
  124. data/spec/unit/resource/openssl_dhparam.rb +10 -5
  125. data/spec/unit/resource/openssl_rsa_private_key_spec.rb +10 -5
  126. data/spec/unit/resource/openssl_rsa_public_key_spec.rb +9 -5
  127. data/spec/unit/resource/osx_profile_spec.rb +7 -4
  128. data/spec/unit/resource/package_spec.rb +14 -0
  129. data/spec/unit/resource/pacman_package_spec.rb +17 -3
  130. data/spec/unit/resource/paludis_package_spec.rb +36 -0
  131. data/spec/unit/resource/perl_spec.rb +8 -0
  132. data/spec/unit/resource/portage_package_spec.rb +14 -0
  133. data/spec/unit/resource/powershell_package_spec.rb +14 -0
  134. data/spec/unit/resource/python_spec.rb +8 -0
  135. data/spec/unit/resource/reboot_spec.rb +5 -3
  136. data/spec/unit/resource/registry_key_spec.rb +12 -1
  137. data/spec/unit/resource/remote_directory_spec.rb +11 -1
  138. data/spec/unit/resource/remote_file_spec.rb +19 -0
  139. data/spec/unit/resource/rhsm_errata_level_spec.rb +7 -3
  140. data/spec/unit/resource/rhsm_errata_spec.rb +8 -4
  141. data/spec/unit/resource/rhsm_register_spec.rb +6 -1
  142. data/spec/unit/resource/rhsm_repo_spec.rb +9 -4
  143. data/spec/unit/resource/rhsm_subscription_spec.rb +9 -4
  144. data/spec/unit/resource/route_spec.rb +4 -9
  145. data/spec/unit/resource/rpm_package_spec.rb +14 -0
  146. data/spec/unit/resource/ruby_block_spec.rb +12 -8
  147. data/spec/unit/resource/ruby_spec.rb +8 -0
  148. data/spec/unit/resource/scm_spec.rb +16 -8
  149. data/spec/unit/resource/script_spec.rb +8 -0
  150. data/spec/unit/resource/service_spec.rb +15 -0
  151. data/spec/unit/resource/smartos_package_spec.rb +18 -4
  152. data/spec/unit/resource/solaris_package_spec.rb +14 -0
  153. data/spec/unit/resource/subversion_spec.rb +14 -8
  154. data/spec/unit/resource/sudo_spec.rb +11 -4
  155. data/spec/unit/resource/swap_file_spec.rb +4 -5
  156. data/spec/unit/resource/sysctl_spec.rb +8 -10
  157. data/spec/unit/resource/systemd_unit_spec.rb +14 -12
  158. data/spec/unit/resource/template_spec.rb +19 -0
  159. data/spec/unit/resource/{windows_ad_join.rb → windows_ad_join_spec.rb} +12 -6
  160. data/spec/unit/resource/windows_auto_run_spec.rb +9 -9
  161. data/spec/unit/resource/windows_env_spec.rb +8 -16
  162. data/spec/unit/resource/windows_feature.rb +27 -8
  163. data/spec/unit/resource/windows_feature_dism.rb +30 -9
  164. data/spec/unit/resource/windows_feature_powershell.rb +7 -7
  165. data/spec/unit/resource/windows_font_spec.rb +3 -4
  166. data/spec/unit/resource/windows_package_spec.rb +12 -2
  167. data/spec/unit/resource/windows_pagefile_spec.rb +12 -8
  168. data/spec/unit/resource/windows_path_spec.rb +4 -5
  169. data/spec/unit/resource/windows_printer_port_spec.rb +20 -3
  170. data/spec/unit/resource/windows_printer_spec.rb +12 -5
  171. data/spec/unit/resource/windows_service_spec.rb +24 -1
  172. data/spec/unit/resource/windows_shortcut_spec.rb +4 -5
  173. data/spec/unit/resource/yum_repository_spec.rb +48 -2
  174. data/spec/unit/resource/zypper_package_spec.rb +51 -0
  175. data/spec/unit/resource/zypper_repository_spec.rb +56 -11
  176. data/spec/unit/resource_spec.rb +1 -5
  177. metadata +21 -12
  178. data/spec/functional/resource/user/useradd_spec.rb +0 -709
@@ -28,7 +28,13 @@ describe Chef::Resource::WindowsFeaturePowershell do
28
28
  expect(resource.action).to eql([:install])
29
29
  end
30
30
 
31
- it "sets the feature_name property as its name property" do
31
+ it "supports :delete, :install, :remove actions" do
32
+ expect { resource.action :delete }.not_to raise_error
33
+ expect { resource.action :install }.not_to raise_error
34
+ expect { resource.action :remove }.not_to raise_error
35
+ end
36
+
37
+ it "sets the feature_name property as its name_property" do
32
38
  expect(resource.feature_name).to eql(%w{SNMP DHCP})
33
39
  end
34
40
 
@@ -42,10 +48,4 @@ describe Chef::Resource::WindowsFeaturePowershell do
42
48
  expect(resource.feature_name).to eql(["SNMP"])
43
49
  end
44
50
 
45
- it "supports :install, :remove, and :delete actions" do
46
- expect { resource.action :install }.not_to raise_error
47
- expect { resource.action :remove }.not_to raise_error
48
- expect { resource.action :delete }.not_to raise_error
49
- expect { resource.action :update }.to raise_error(ArgumentError)
50
- end
51
51
  end
@@ -18,14 +18,14 @@
18
18
  require "spec_helper"
19
19
 
20
20
  describe Chef::Resource::WindowsFont do
21
- let(:resource) { Chef::Resource::WindowsFont.new("some_font") }
21
+ let(:resource) { Chef::Resource::WindowsFont.new("fakey_fakerton") }
22
22
 
23
23
  it "sets resource name as :windows_font" do
24
24
  expect(resource.resource_name).to eql(:windows_font)
25
25
  end
26
26
 
27
- it "sets the font_name as its name" do
28
- expect(resource.font_name).to eql("some_font")
27
+ it "the font_name property is the name_property" do
28
+ expect(resource.font_name).to eql("fakey_fakerton")
29
29
  end
30
30
 
31
31
  it "sets the default action as :install" do
@@ -34,7 +34,6 @@ describe Chef::Resource::WindowsFont do
34
34
 
35
35
  it "supports :install action" do
36
36
  expect { resource.action :install }.not_to raise_error
37
- expect { resource.action :remove }.to raise_error(ArgumentError)
38
37
  end
39
38
 
40
39
  it "coerces backslashes in the source property to forward slashes" do
@@ -37,8 +37,18 @@ describe Chef::Resource::WindowsPackage, "initialize" do
37
37
  expect(resource).to be_a_kind_of(Chef::Resource::Package)
38
38
  end
39
39
 
40
- it "sets the resource_name to :windows_package" do
41
- expect(resource.resource_name).to eql(:windows_package)
40
+ it "sets the default action as :install" do
41
+ expect(resource.action).to eql([:install])
42
+ end
43
+
44
+ it "supports :install, :lock, :purge, :reconfig, :remove, :unlock, :upgrade actions" do
45
+ expect { resource.action :install }.not_to raise_error
46
+ expect { resource.action :lock }.not_to raise_error
47
+ expect { resource.action :purge }.not_to raise_error
48
+ expect { resource.action :reconfig }.not_to raise_error
49
+ expect { resource.action :remove }.not_to raise_error
50
+ expect { resource.action :unlock }.not_to raise_error
51
+ expect { resource.action :upgrade }.not_to raise_error
42
52
  end
43
53
 
44
54
  it "supports setting installer_type as a symbol" do
@@ -24,22 +24,26 @@ describe Chef::Resource::WindowsPagefile do
24
24
  expect(resource.resource_name).to eql(:windows_pagefile)
25
25
  end
26
26
 
27
- it "sets the path as its name" do
27
+ it "the path property is the name_property" do
28
28
  expect(resource.path).to eql("C:\\pagefile.sys")
29
29
  end
30
30
 
31
+ it "sets the default action as :set" do
32
+ expect(resource.action).to eql([:set])
33
+ end
34
+
35
+ it "supports :delete, :set actions" do
36
+ expect { resource.action :delete }.not_to raise_error
37
+ expect { resource.action :set }.not_to raise_error
38
+ end
39
+
31
40
  it "coerces forward slashes in the path property to back slashes" do
32
41
  resource.path "C:/pagefile.sys"
33
42
  expect(resource.path).to eql("C:\\pagefile.sys")
34
43
  end
35
44
 
36
- it "sets the default action as :set" do
37
- expect(resource.action).to eql([:set])
45
+ it "automatic_managed property defaults to false" do
46
+ expect(resource.automatic_managed).to eql(false)
38
47
  end
39
48
 
40
- it "supports :set and :delete actions" do
41
- expect { resource.action :set }.not_to raise_error
42
- expect { resource.action :delete }.not_to raise_error
43
- expect { resource.action :create }.to raise_error(ArgumentError)
44
- end
45
49
  end
@@ -19,23 +19,22 @@
19
19
  require "spec_helper"
20
20
 
21
21
  describe Chef::Resource::WindowsPath do
22
- let(:resource) { Chef::Resource::WindowsPath.new("some_path") }
22
+ let(:resource) { Chef::Resource::WindowsPath.new("fakey_fakerton") }
23
23
 
24
24
  it "sets resource name as :windows_path" do
25
25
  expect(resource.resource_name).to eql(:windows_path)
26
26
  end
27
27
 
28
- it "sets the path as its name" do
29
- expect(resource.path).to eql("some_path")
28
+ it "the path property is the name_property" do
29
+ expect(resource.path).to eql("fakey_fakerton")
30
30
  end
31
31
 
32
32
  it "sets the default action as :add" do
33
33
  expect(resource.action).to eql([:add])
34
34
  end
35
35
 
36
- it "supports :add and :remove actions" do
36
+ it "supports :add, :remove actions" do
37
37
  expect { resource.action :add }.not_to raise_error
38
38
  expect { resource.action :remove }.not_to raise_error
39
- expect { resource.action :delete }.to raise_error(ArgumentError)
40
39
  end
41
40
  end
@@ -24,7 +24,7 @@ describe Chef::Resource::WindowsPrinterPort do
24
24
  expect(resource.resource_name).to eql(:windows_printer_port)
25
25
  end
26
26
 
27
- it "sets the ipv4_address as its name" do
27
+ it "the ipv4_address property is the name_property" do
28
28
  expect(resource.ipv4_address).to eql("63.192.209.236")
29
29
  end
30
30
 
@@ -32,10 +32,27 @@ describe Chef::Resource::WindowsPrinterPort do
32
32
  expect(resource.action).to eql([:create])
33
33
  end
34
34
 
35
- it "supports :create and :delete actions" do
35
+ it "supports :create, :delete actions" do
36
36
  expect { resource.action :create }.not_to raise_error
37
37
  expect { resource.action :delete }.not_to raise_error
38
- expect { resource.action :remove }.to raise_error(ArgumentError)
38
+ end
39
+
40
+ it "port_number property defaults to 9100" do
41
+ expect(resource.port_number).to eql(9100)
42
+ end
43
+
44
+ it "snmp_enabled property defaults to false" do
45
+ expect(resource.snmp_enabled).to eql(false)
46
+ end
47
+
48
+ it "port_protocol property defaults to 1" do
49
+ expect(resource.port_protocol).to eql(1)
50
+ end
51
+
52
+ it "raises an error if port_protocol isn't in 1 or 2" do
53
+ expect { resource.port_protocol 1 }.not_to raise_error
54
+ expect { resource.port_protocol 2 }.not_to raise_error
55
+ expect { resource.port_protocol 3 }.to raise_error(ArgumentError)
39
56
  end
40
57
 
41
58
  it "raises an error if ipv4_address isn't in X.X.X.X format" do
@@ -18,24 +18,31 @@
18
18
  require "spec_helper"
19
19
 
20
20
  describe Chef::Resource::WindowsPrinter do
21
- let(:resource) { Chef::Resource::WindowsPrinter.new("some_printer") }
21
+ let(:resource) { Chef::Resource::WindowsPrinter.new("fakey_fakerton") }
22
22
 
23
23
  it "sets resource name as :windows_printer" do
24
24
  expect(resource.resource_name).to eql(:windows_printer)
25
25
  end
26
26
 
27
- it "sets the device_id as its name" do
28
- expect(resource.device_id).to eql("some_printer")
27
+ it "the device_id property is the name_property" do
28
+ expect(resource.device_id).to eql("fakey_fakerton")
29
29
  end
30
30
 
31
31
  it "sets the default action as :create" do
32
32
  expect(resource.action).to eql([:create])
33
33
  end
34
34
 
35
- it "supports :create and :delete actions" do
35
+ it "supports :create, :delete actions" do
36
36
  expect { resource.action :create }.not_to raise_error
37
37
  expect { resource.action :delete }.not_to raise_error
38
- expect { resource.action :remove }.to raise_error(ArgumentError)
38
+ end
39
+
40
+ it "default property defaults to false" do
41
+ expect(resource.default).to eql(false)
42
+ end
43
+
44
+ it "shared property defaults to false" do
45
+ expect(resource.shared).to eql(false)
39
46
  end
40
47
 
41
48
  it "raises an error if ipv4_address isn't in X.X.X.X format" do
@@ -27,12 +27,35 @@ describe Chef::Resource::WindowsService, "initialize" do
27
27
  action: :start
28
28
  )
29
29
 
30
- let(:resource) { Chef::Resource::WindowsService.new("BITS") }
30
+ let(:resource) { Chef::Resource::WindowsService.new("fakey_fakerton") }
31
31
 
32
32
  it "sets the resource_name to :windows_service" do
33
33
  expect(resource.resource_name).to eql(:windows_service)
34
34
  end
35
35
 
36
+ it "the service_name property is the name_property" do
37
+ expect(resource.service_name).to eql("fakey_fakerton")
38
+ end
39
+
40
+ it "sets the default action as :nothing" do
41
+ expect(resource.action).to eql([:nothing])
42
+ end
43
+
44
+ it "supports :configure, :configure_startup, :create, :delete, :disable, :enable, :mask, :reload, :restart, :start, :stop, :unmask actions" do
45
+ expect { resource.action :configure }.not_to raise_error
46
+ expect { resource.action :configure_startup }.not_to raise_error
47
+ expect { resource.action :create }.not_to raise_error
48
+ expect { resource.action :delete }.not_to raise_error
49
+ expect { resource.action :disable }.not_to raise_error
50
+ expect { resource.action :enable }.not_to raise_error
51
+ expect { resource.action :mask }.not_to raise_error
52
+ expect { resource.action :reload }.not_to raise_error
53
+ expect { resource.action :restart }.not_to raise_error
54
+ expect { resource.action :start }.not_to raise_error
55
+ expect { resource.action :stop }.not_to raise_error
56
+ expect { resource.action :unmask }.not_to raise_error
57
+ end
58
+
36
59
  it "supports setting startup_type" do
37
60
  resource.startup_type(:manual)
38
61
  expect(resource.startup_type).to eql(:manual)
@@ -18,22 +18,21 @@
18
18
  require "spec_helper"
19
19
 
20
20
  describe Chef::Resource::WindowsShortcut do
21
- let(:resource) { Chef::Resource::WindowsShortcut.new("some_path") }
21
+ let(:resource) { Chef::Resource::WindowsShortcut.new("fakey_fakerton") }
22
22
 
23
23
  it "sets resource name as :windows_shortcut" do
24
24
  expect(resource.resource_name).to eql(:windows_shortcut)
25
25
  end
26
26
 
27
- it "sets the shortcut_name property as its name" do
28
- expect(resource.shortcut_name).to eql("some_path")
27
+ it "the shortcut_name property is the name_property" do
28
+ expect(resource.shortcut_name).to eql("fakey_fakerton")
29
29
  end
30
30
 
31
31
  it "sets the default action as :create" do
32
32
  expect(resource.action).to eql([:create])
33
33
  end
34
34
 
35
- it "supports :create action only" do
35
+ it "supports :create action" do
36
36
  expect { resource.action :create }.not_to raise_error
37
- expect { resource.action :delete }.to raise_error(ArgumentError)
38
37
  end
39
38
  end
@@ -22,20 +22,56 @@ describe Chef::Resource::YumRepository do
22
22
  let(:node) { Chef::Node.new }
23
23
  let(:events) { Chef::EventDispatch::Dispatcher.new }
24
24
  let(:run_context) { Chef::RunContext.new(node, {}, events) }
25
- let(:resource) { Chef::Resource::YumRepository.new("multiverse", run_context) }
25
+ let(:resource) { Chef::Resource::YumRepository.new("fakey_fakerton", run_context) }
26
26
 
27
27
  it "has a resource_name of :yum_repository" do
28
28
  expect(resource.resource_name).to eq(:yum_repository)
29
29
  end
30
30
 
31
31
  it "the repositoryid property is the name_property" do
32
- expect(resource.repositoryid).to eq("multiverse")
32
+ expect(resource.repositoryid).to eql("fakey_fakerton")
33
+ end
34
+
35
+ it "sets the default action as :create" do
36
+ expect(resource.action).to eql([:create])
37
+ end
38
+
39
+ it "supports :add, :create, :delete, :makecache, :remove actions" do
40
+ expect { resource.action :add }.not_to raise_error
41
+ expect { resource.action :create }.not_to raise_error
42
+ expect { resource.action :delete }.not_to raise_error
43
+ expect { resource.action :makecache }.not_to raise_error
44
+ expect { resource.action :remove }.not_to raise_error
33
45
  end
34
46
 
35
47
  it "fails if the user provides a repositoryid with a forward slash" do
36
48
  expect { resource.repositoryid "foo/bar" }.to raise_error(ArgumentError)
37
49
  end
38
50
 
51
+ it "clean_headers property defaults to false" do
52
+ expect(resource.clean_headers).to eql(false)
53
+ end
54
+
55
+ it "clean_metadata property defaults to true" do
56
+ expect(resource.clean_metadata).to eql(true)
57
+ end
58
+
59
+ it "description property defaults to 'Yum Repository'" do
60
+ expect(resource.description).to eql("Yum Repository")
61
+ end
62
+
63
+ it "enabled property defaults to true" do
64
+ expect(resource.enabled).to eql(true)
65
+ end
66
+
67
+ it "make_cache property defaults to true" do
68
+ expect(resource.make_cache).to eql(true)
69
+ end
70
+
71
+ it "mode property defaults to '0644'" do
72
+ expect(resource.mode).to eql("0644")
73
+ end
74
+
39
75
  it "the timeout property expects numeric Strings" do
40
76
  expect { resource.timeout "123" }.not_to raise_error(ArgumentError)
41
77
  expect { resource.timeout "123foo" }.to raise_error(ArgumentError)
@@ -86,6 +122,16 @@ describe Chef::Resource::YumRepository do
86
122
  expect { resource.mirrorlist_expire "never" }.to raise_error(ArgumentError)
87
123
  end
88
124
 
125
+ it "accepts the legacy 'url' property" do
126
+ resource.url "foo"
127
+ expect(resource.baseurl).to eql("foo")
128
+ end
129
+
130
+ it "accepts the legacy 'keyurl' property" do
131
+ resource.keyurl "foo"
132
+ expect(resource.gpgkey).to eql("foo")
133
+ end
134
+
89
135
  context "on linux", :linux_only do
90
136
  it "resolves to a Noop class when yum is not found" do
91
137
  expect(Chef::Provider::YumRepository).to receive(:which).with("yum").and_return(false)
@@ -0,0 +1,51 @@
1
+ #
2
+ # Author:: Tim Smith (<tsmith@chef.io>)
3
+ # Copyright:: Copyright 2018 Chef Software, Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require "spec_helper"
20
+ require "support/shared/unit/resource/static_provider_resolution"
21
+
22
+ describe Chef::Resource::ZypperPackage, "initialize" do
23
+
24
+ static_provider_resolution(
25
+ resource: Chef::Resource::ZypperPackage,
26
+ provider: Chef::Provider::Package::Zypper,
27
+ name: :zypper_package,
28
+ action: :install,
29
+ os: "linux",
30
+ platform_family: "suse"
31
+ )
32
+
33
+ end
34
+
35
+ describe Chef::Resource::ZypperPackage, "defaults" do
36
+ let(:resource) { Chef::Resource::ZypperPackage.new("fakey_fakerton") }
37
+
38
+ it "sets the default action as :install" do
39
+ expect(resource.action).to eql([:install])
40
+ end
41
+
42
+ it "supports :install, :lock, :purge, :reconfig, :remove, :unlock, :upgrade actions" do
43
+ expect { resource.action :install }.not_to raise_error
44
+ expect { resource.action :lock }.not_to raise_error
45
+ expect { resource.action :purge }.not_to raise_error
46
+ expect { resource.action :reconfig }.not_to raise_error
47
+ expect { resource.action :remove }.not_to raise_error
48
+ expect { resource.action :unlock }.not_to raise_error
49
+ expect { resource.action :upgrade }.not_to raise_error
50
+ end
51
+ end
@@ -22,30 +22,75 @@ describe Chef::Resource::ZypperRepository do
22
22
  let(:node) { Chef::Node.new }
23
23
  let(:events) { Chef::EventDispatch::Dispatcher.new }
24
24
  let(:run_context) { Chef::RunContext.new(node, {}, events) }
25
- let(:resource) { Chef::Resource::ZypperRepository.new("repo-source", run_context) }
25
+ let(:resource) { Chef::Resource::ZypperRepository.new("fakey_fakerton", run_context) }
26
26
 
27
27
  it "has a resource_name of :zypper_repository" do
28
28
  expect(resource.resource_name).to eq(:zypper_repository)
29
29
  end
30
30
 
31
- it "repo_name is the name_property" do
32
- expect(resource.repo_name).to eql("repo-source")
31
+ it "the repo_name property is the name_property" do
32
+ expect(resource.repo_name).to eql("fakey_fakerton")
33
33
  end
34
34
 
35
- it "fails if the user provides a repo_name with a forward slash" do
36
- expect { resource.repo_name "foo/bar" }.to raise_error(ArgumentError)
37
- end
38
-
39
- it "has a default action of create" do
35
+ it "sets the default action as :create" do
40
36
  expect(resource.action).to eql([:create])
41
37
  end
42
38
 
43
- it "supports all valid actions" do
39
+ it "supports :add, :create, :refresh, :remove actions" do
44
40
  expect { resource.action :add }.not_to raise_error
45
- expect { resource.action :remove }.not_to raise_error
46
41
  expect { resource.action :create }.not_to raise_error
47
42
  expect { resource.action :refresh }.not_to raise_error
48
- expect { resource.action :delete }.to raise_error(ArgumentError)
43
+ expect { resource.action :remove }.not_to raise_error
44
+ end
45
+
46
+ it "fails if the user provides a repo_name with a forward slash" do
47
+ expect { resource.repo_name "foo/bar" }.to raise_error(ArgumentError)
48
+ end
49
+
50
+ it "type property defaults to 'NONE'" do
51
+ expect(resource.type).to eql("NONE")
52
+ end
53
+
54
+ it "enabled property defaults to true" do
55
+ expect(resource.enabled).to eql(true)
56
+ end
57
+
58
+ it "autorefresh property defaults to true" do
59
+ expect(resource.autorefresh).to eql(true)
60
+ end
61
+
62
+ it "gpgcheck property defaults to true" do
63
+ expect(resource.gpgcheck).to eql(true)
64
+ end
65
+
66
+ it "keeppackages property defaults to false" do
67
+ expect(resource.keeppackages).to eql(false)
68
+ end
69
+
70
+ it "priority property defaults to 99" do
71
+ expect(resource.priority).to eql(99)
72
+ end
73
+
74
+ it "mode property defaults to '0644'" do
75
+ expect(resource.mode).to eql("0644")
76
+ end
77
+
78
+ it "refresh_cache property defaults to true" do
79
+ expect(resource.refresh_cache).to eql(true)
80
+ end
81
+
82
+ it "gpgautoimportkeys property defaults to true" do
83
+ expect(resource.gpgautoimportkeys).to eql(true)
84
+ end
85
+
86
+ it "accepts the legacy 'key' property" do
87
+ resource.key "foo"
88
+ expect(resource.gpgkey).to eql("foo")
89
+ end
90
+
91
+ it "accepts the legacy 'uri' property" do
92
+ resource.uri "foo"
93
+ expect(resource.baseurl).to eql("foo")
49
94
  end
50
95
 
51
96
  context "on linux", :linux_only do