puppet 6.0.0 → 6.1.0

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.
Files changed (259) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -2
  3. data/Gemfile.lock +20 -20
  4. data/Guardfile.example +76 -0
  5. data/LICENSE +189 -4
  6. data/README.md +3 -3
  7. data/Rakefile +5 -2
  8. data/ext/solaris/smf/svc-puppetd +8 -1
  9. data/ext/solaris/smf/svc-puppetmasterd +8 -1
  10. data/lib/puppet/application/apply.rb +100 -59
  11. data/lib/puppet/application/cert.rb +4 -114
  12. data/lib/puppet/application/device.rb +48 -32
  13. data/lib/puppet/application/script.rb +1 -1
  14. data/lib/puppet/application/ssl.rb +135 -51
  15. data/lib/puppet/application.rb +5 -0
  16. data/lib/puppet/configurer.rb +2 -3
  17. data/lib/puppet/defaults.rb +33 -49
  18. data/lib/puppet/etc.rb +20 -0
  19. data/lib/puppet/face/config.rb +3 -3
  20. data/lib/puppet/face/key.rb +1 -1
  21. data/lib/puppet/face/node/clean.rb +0 -1
  22. data/lib/puppet/feature/base.rb +1 -1
  23. data/lib/puppet/file_bucket/dipper.rb +1 -1
  24. data/lib/puppet/file_serving/fileset.rb +1 -1
  25. data/lib/puppet/functions/abs.rb +1 -1
  26. data/lib/puppet/functions/new.rb +1 -1
  27. data/lib/puppet/module/task.rb +29 -38
  28. data/lib/puppet/pal/catalog_compiler.rb +96 -0
  29. data/lib/puppet/pal/compiler.rb +221 -0
  30. data/lib/puppet/pal/function_signature.rb +52 -0
  31. data/lib/puppet/pal/json_catalog_encoder.rb +67 -0
  32. data/lib/puppet/pal/pal_api.rb +15 -0
  33. data/lib/puppet/pal/pal_impl.rb +523 -0
  34. data/lib/puppet/pal/plan_signature.rb +71 -0
  35. data/lib/puppet/pal/script_compiler.rb +71 -0
  36. data/lib/puppet/pal/task_signature.rb +58 -0
  37. data/lib/puppet/parser/catalog_compiler.rb +24 -0
  38. data/lib/puppet/parser/compiler.rb +3 -1
  39. data/lib/puppet/parser/functions/generate.rb +7 -6
  40. data/lib/puppet/plugins/configuration.rb +5 -1
  41. data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +3 -1
  42. data/lib/puppet/pops/evaluator/deferred_resolver.rb +3 -0
  43. data/lib/puppet/pops/evaluator/evaluator_impl.rb +5 -1
  44. data/lib/puppet/pops/evaluator/external_syntax_support.rb +3 -3
  45. data/lib/puppet/pops/evaluator/runtime3_converter.rb +2 -2
  46. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +19 -10
  47. data/lib/puppet/pops/loader/task_instantiator.rb +13 -70
  48. data/lib/puppet/pops/parser/heredoc_support.rb +1 -2
  49. data/lib/puppet/pops/parser/lexer2.rb +1 -1
  50. data/lib/puppet/pops/pcore.rb +10 -33
  51. data/lib/puppet/pops/serialization/to_data_converter.rb +9 -1
  52. data/lib/puppet/pops/serialization.rb +1 -0
  53. data/lib/puppet/pops/types/p_timespan_type.rb +2 -2
  54. data/lib/puppet/pops/types/string_converter.rb +18 -4
  55. data/lib/puppet/pops/validation/checker4_0.rb +17 -2
  56. data/lib/puppet/provider/exec.rb +59 -57
  57. data/lib/puppet/provider/group/aix.rb +18 -2
  58. data/lib/puppet/provider/group/windows_adsi.rb +7 -3
  59. data/lib/puppet/provider/nameservice.rb +1 -25
  60. data/lib/puppet/provider/package/dnf.rb +2 -0
  61. data/lib/puppet/provider/package/pkgng.rb +37 -21
  62. data/lib/puppet/provider/package/portage.rb +2 -2
  63. data/lib/puppet/provider/package/windows/exe_package.rb +16 -10
  64. data/lib/puppet/provider/package/windows/msi_package.rb +8 -0
  65. data/lib/puppet/provider/package/windows/package.rb +9 -1
  66. data/lib/puppet/provider/package/windows.rb +2 -2
  67. data/lib/puppet/provider/package/yum.rb +1 -1
  68. data/lib/puppet/provider/parsedfile.rb +25 -4
  69. data/lib/puppet/provider/service/launchd.rb +19 -3
  70. data/lib/puppet/provider/service/smf.rb +54 -0
  71. data/lib/puppet/provider/service/systemd.rb +19 -0
  72. data/lib/puppet/provider/service/upstart.rb +1 -0
  73. data/lib/puppet/provider/service/windows.rb +22 -5
  74. data/lib/puppet/provider/user/aix.rb +48 -2
  75. data/lib/puppet/provider/user/useradd.rb +2 -10
  76. data/lib/puppet/provider/user/windows_adsi.rb +9 -1
  77. data/lib/puppet/resource/catalog.rb +1 -5
  78. data/lib/puppet/resource.rb +3 -1
  79. data/lib/puppet/ssl/host.rb +26 -16
  80. data/lib/puppet/syntax_checkers/epp.rb +34 -0
  81. data/lib/puppet/syntax_checkers/pp.rb +34 -0
  82. data/lib/puppet/transaction/event_manager.rb +13 -1
  83. data/lib/puppet/transaction/persistence.rb +1 -1
  84. data/lib/puppet/transaction/resource_harness.rb +3 -1
  85. data/lib/puppet/type/group.rb +29 -1
  86. data/lib/puppet/type/package.rb +5 -1
  87. data/lib/puppet/type/resources.rb +12 -2
  88. data/lib/puppet/type/schedule.rb +7 -0
  89. data/lib/puppet/type/service.rb +12 -0
  90. data/lib/puppet/type/user.rb +5 -2
  91. data/lib/puppet/type.rb +6 -0
  92. data/lib/puppet/util/command_line.rb +2 -3
  93. data/lib/puppet/util/execution.rb +15 -1
  94. data/lib/puppet/util/filetype.rb +56 -8
  95. data/lib/puppet/util/log/destinations.rb +3 -2
  96. data/lib/puppet/util/logging.rb +3 -2
  97. data/lib/puppet/util/posix.rb +15 -0
  98. data/lib/puppet/util/selinux.rb +1 -1
  99. data/lib/puppet/util/storage.rb +12 -0
  100. data/lib/puppet/util/windows/adsi.rb +79 -2
  101. data/lib/puppet/util/windows/api_types.rb +1 -1
  102. data/lib/puppet/util/windows/process.rb +23 -3
  103. data/lib/puppet/util/windows/registry.rb +29 -5
  104. data/lib/puppet/util/windows/security.rb +14 -0
  105. data/lib/puppet/util/windows/service.rb +294 -74
  106. data/lib/puppet/util/windows/user.rb +3 -5
  107. data/lib/puppet/util.rb +7 -3
  108. data/lib/puppet/version.rb +1 -1
  109. data/lib/puppet.rb +1 -0
  110. data/lib/puppet_pal.rb +5 -1099
  111. data/locales/ja/puppet.po +952 -986
  112. data/locales/puppet.pot +592 -347
  113. data/man/man5/puppet.conf.5 +26 -31
  114. data/man/man8/puppet-agent.8 +1 -1
  115. data/man/man8/puppet-apply.8 +1 -1
  116. data/man/man8/puppet-catalog.8 +1 -1
  117. data/man/man8/puppet-config.8 +4 -4
  118. data/man/man8/puppet-describe.8 +1 -1
  119. data/man/man8/puppet-device.8 +23 -19
  120. data/man/man8/puppet-doc.8 +1 -1
  121. data/man/man8/puppet-epp.8 +1 -1
  122. data/man/man8/puppet-facts.8 +1 -1
  123. data/man/man8/puppet-filebucket.8 +1 -1
  124. data/man/man8/puppet-generate.8 +1 -1
  125. data/man/man8/puppet-help.8 +1 -1
  126. data/man/man8/puppet-key.8 +2 -2
  127. data/man/man8/puppet-lookup.8 +1 -1
  128. data/man/man8/puppet-man.8 +1 -1
  129. data/man/man8/puppet-module.8 +1 -1
  130. data/man/man8/puppet-node.8 +1 -1
  131. data/man/man8/puppet-parser.8 +1 -1
  132. data/man/man8/puppet-plugin.8 +1 -1
  133. data/man/man8/puppet-report.8 +1 -1
  134. data/man/man8/puppet-resource.8 +1 -1
  135. data/man/man8/puppet-script.8 +1 -1
  136. data/man/man8/puppet-ssl.8 +26 -3
  137. data/man/man8/puppet-status.8 +1 -1
  138. data/man/man8/puppet.8 +2 -2
  139. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load.rb +11 -0
  140. data/spec/fixtures/unit/provider/package/pkgng/pkg.query +7 -1
  141. data/spec/fixtures/unit/provider/package/pkgng/pkg.query.zsh +1 -0
  142. data/spec/fixtures/unit/provider/service/smf/svcs_fmri.out +6 -0
  143. data/spec/fixtures/unit/provider/service/smf/svcs_multiple_fmris.out +13 -0
  144. data/spec/integration/application/apply_spec.rb +4 -1
  145. data/spec/integration/parser/collection_spec.rb +4 -8
  146. data/spec/integration/provider/service/windows_spec.rb +5 -5
  147. data/spec/integration/ssl/key_spec.rb +0 -4
  148. data/spec/integration/transaction_spec.rb +559 -0
  149. data/spec/integration/type/file_spec.rb +6 -6
  150. data/spec/integration/util/windows/registry_spec.rb +39 -0
  151. data/spec/integration/util/windows/security_spec.rb +10 -7
  152. data/spec/integration/util/windows/user_spec.rb +37 -17
  153. data/spec/lib/puppet/test_ca.rb +1 -1
  154. data/spec/spec_helper.rb +1 -1
  155. data/spec/unit/agent_spec.rb +2 -2
  156. data/spec/unit/application/apply_spec.rb +55 -2
  157. data/spec/unit/application/device_spec.rb +10 -7
  158. data/spec/unit/application/face_base_spec.rb +1 -1
  159. data/spec/unit/application/lookup_spec.rb +2 -1
  160. data/spec/unit/application/ssl_spec.rb +178 -109
  161. data/spec/unit/application_spec.rb +29 -11
  162. data/spec/unit/configurer/downloader_spec.rb +1 -1
  163. data/spec/unit/configurer_spec.rb +16 -5
  164. data/spec/unit/etc_spec.rb +25 -0
  165. data/spec/unit/face/node_spec.rb +1 -3
  166. data/spec/unit/face/parser_spec.rb +15 -0
  167. data/spec/unit/file_serving/fileset_spec.rb +11 -11
  168. data/spec/unit/functions/logging_spec.rb +10 -3
  169. data/spec/unit/indirector/catalog/json_spec.rb +9 -3
  170. data/spec/unit/indirector/yaml_spec.rb +1 -1
  171. data/spec/unit/network/http/connection_spec.rb +2 -2
  172. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +36 -0
  173. data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +22 -4
  174. data/spec/unit/pops/loaders/loader_spec.rb +9 -17
  175. data/spec/unit/pops/loaders/loaders_spec.rb +48 -0
  176. data/spec/unit/pops/loaders/module_loaders_spec.rb +7 -7
  177. data/spec/unit/pops/parser/parse_heredoc_spec.rb +16 -0
  178. data/spec/unit/pops/serialization/to_from_hr_spec.rb +9 -0
  179. data/spec/unit/pops/types/p_timespan_type_spec.rb +22 -0
  180. data/spec/unit/pops/types/p_timestamp_type_spec.rb +19 -0
  181. data/spec/unit/pops/types/string_converter_spec.rb +25 -1
  182. data/spec/unit/pops/types/task_spec.rb +42 -116
  183. data/spec/unit/pops/validator/validator_spec.rb +24 -10
  184. data/spec/unit/provider/exec/posix_spec.rb +24 -0
  185. data/spec/unit/provider/group/aix_spec.rb +20 -6
  186. data/spec/unit/provider/group/ldap_spec.rb +22 -25
  187. data/spec/unit/provider/group/pw_spec.rb +7 -10
  188. data/spec/unit/provider/group/windows_adsi_spec.rb +42 -33
  189. data/spec/unit/provider/nameservice/directoryservice_spec.rb +97 -103
  190. data/spec/unit/provider/package/aix_spec.rb +5 -8
  191. data/spec/unit/provider/package/apt_spec.rb +3 -6
  192. data/spec/unit/provider/package/dnf_spec.rb +38 -25
  193. data/spec/unit/provider/package/dpkg_spec.rb +18 -21
  194. data/spec/unit/provider/package/freebsd_spec.rb +4 -7
  195. data/spec/unit/provider/package/gem_spec.rb +41 -41
  196. data/spec/unit/provider/package/hpux_spec.rb +7 -10
  197. data/spec/unit/provider/package/macports_spec.rb +13 -15
  198. data/spec/unit/provider/package/nim_spec.rb +3 -10
  199. data/spec/unit/provider/package/openbsd_spec.rb +14 -17
  200. data/spec/unit/provider/package/pip3_spec.rb +3 -6
  201. data/spec/unit/provider/package/pip_spec.rb +45 -49
  202. data/spec/unit/provider/package/pkgin_spec.rb +13 -18
  203. data/spec/unit/provider/package/pkgng_spec.rb +32 -27
  204. data/spec/unit/provider/package/puppet_gem_spec.rb +6 -9
  205. data/spec/unit/provider/package/tdnf_spec.rb +9 -12
  206. data/spec/unit/provider/package/windows/exe_package_spec.rb +3 -3
  207. data/spec/unit/provider/package/windows_spec.rb +4 -4
  208. data/spec/unit/provider/package/yum_spec.rb +30 -16
  209. data/spec/unit/provider/package/zypper_spec.rb +17 -19
  210. data/spec/unit/provider/service/bsd_spec.rb +7 -9
  211. data/spec/unit/provider/service/daemontools_spec.rb +12 -16
  212. data/spec/unit/provider/service/debian_spec.rb +6 -10
  213. data/spec/unit/provider/service/freebsd_spec.rb +2 -2
  214. data/spec/unit/provider/service/launchd_spec.rb +19 -0
  215. data/spec/unit/provider/service/openbsd_spec.rb +13 -17
  216. data/spec/unit/provider/service/rcng_spec.rb +2 -4
  217. data/spec/unit/provider/service/redhat_spec.rb +12 -11
  218. data/spec/unit/provider/service/runit_spec.rb +7 -14
  219. data/spec/unit/provider/service/smf_spec.rb +77 -13
  220. data/spec/unit/provider/service/src_spec.rb +11 -16
  221. data/spec/unit/provider/service/systemd_spec.rb +39 -1
  222. data/spec/unit/provider/service/windows_spec.rb +39 -7
  223. data/spec/unit/provider/user/aix_spec.rb +43 -2
  224. data/spec/unit/provider/user/hpux_spec.rb +3 -5
  225. data/spec/unit/provider/user/ldap_spec.rb +29 -32
  226. data/spec/unit/provider/user/pw_spec.rb +10 -13
  227. data/spec/unit/provider/user/useradd_spec.rb +2 -2
  228. data/spec/unit/provider/user/windows_adsi_spec.rb +4 -4
  229. data/spec/unit/puppet_pal_2pec.rb +6 -6
  230. data/spec/unit/puppet_pal_catalog_spec.rb +58 -0
  231. data/spec/unit/resource/catalog_spec.rb +2 -2
  232. data/spec/unit/resource_spec.rb +31 -0
  233. data/spec/unit/ssl/host_spec.rb +22 -1
  234. data/spec/unit/ssl/key_spec.rb +2 -4
  235. data/spec/unit/task_spec.rb +50 -5
  236. data/spec/unit/transaction/event_manager_spec.rb +12 -1
  237. data/spec/unit/transaction/persistence_spec.rb +4 -4
  238. data/spec/unit/transaction/resource_harness_spec.rb +18 -0
  239. data/spec/unit/type/group_spec.rb +11 -3
  240. data/spec/unit/type/resources_spec.rb +18 -0
  241. data/spec/unit/type/service_spec.rb +27 -1
  242. data/spec/unit/util/execution_spec.rb +77 -0
  243. data/spec/unit/util/filetype_spec.rb +13 -5
  244. data/spec/unit/util/log/destinations_spec.rb +10 -0
  245. data/spec/unit/util/logging_spec.rb +58 -41
  246. data/spec/unit/util/monkey_patches_spec.rb +18 -5
  247. data/spec/unit/util/posix_spec.rb +28 -0
  248. data/spec/unit/util/selinux_spec.rb +4 -0
  249. data/spec/unit/util/storage_spec.rb +107 -0
  250. data/spec/unit/util/suidmanager_spec.rb +1 -3
  251. data/spec/unit/util/windows/adsi_spec.rb +95 -0
  252. data/spec/unit/util/windows/service_spec.rb +377 -131
  253. metadata +24 -11
  254. data/ext/autotest/Rakefile +0 -8
  255. data/ext/autotest/config +0 -43
  256. data/ext/autotest/readme.rst +0 -16
  257. data/spec/fixtures/unit/provider/package/pkgng/pkg.info +0 -7
  258. data/spec/fixtures/unit/provider/package/pkgng/pkg.query_absent +0 -1
  259. data/spec/watchr.rb +0 -137
@@ -49,25 +49,25 @@ describe Puppet::Type.type(:group).provider(:windows_adsi), :if => Puppet::Util:
49
49
  describe "#members_insync?" do
50
50
  it "should return true for same lists of members" do
51
51
  current = [
52
- Puppet::Util::Windows::SID.name_to_principal('user1'),
53
- Puppet::Util::Windows::SID.name_to_principal('user2'),
52
+ 'user1',
53
+ 'user2',
54
54
  ]
55
55
  expect(provider.members_insync?(current, ['user1', 'user2'])).to be_truthy
56
56
  end
57
57
 
58
58
  it "should return true for same lists of unordered members" do
59
59
  current = [
60
- Puppet::Util::Windows::SID.name_to_principal('user1'),
61
- Puppet::Util::Windows::SID.name_to_principal('user2'),
60
+ 'user1',
61
+ 'user2',
62
62
  ]
63
63
  expect(provider.members_insync?(current, ['user2', 'user1'])).to be_truthy
64
64
  end
65
65
 
66
66
  it "should return true for same lists of members irrespective of duplicates" do
67
67
  current = [
68
- Puppet::Util::Windows::SID.name_to_principal('user1'),
69
- Puppet::Util::Windows::SID.name_to_principal('user2'),
70
- Puppet::Util::Windows::SID.name_to_principal('user2'),
68
+ 'user1',
69
+ 'user2',
70
+ 'user2',
71
71
  ]
72
72
  expect(provider.members_insync?(current, ['user2', 'user1', 'user1'])).to be_truthy
73
73
  end
@@ -91,9 +91,9 @@ describe Puppet::Type.type(:group).provider(:windows_adsi), :if => Puppet::Util:
91
91
 
92
92
  it "should return true when current and should contain the same users in a different order" do
93
93
  current = [
94
- Puppet::Util::Windows::SID.name_to_principal('user1'),
95
- Puppet::Util::Windows::SID.name_to_principal('user2'),
96
- Puppet::Util::Windows::SID.name_to_principal('user3'),
94
+ 'user1',
95
+ 'user2',
96
+ 'user3',
97
97
  ]
98
98
  expect(provider.members_insync?(current, ['user3', 'user1', 'user2'])).to be_truthy
99
99
  end
@@ -104,21 +104,21 @@ describe Puppet::Type.type(:group).provider(:windows_adsi), :if => Puppet::Util:
104
104
 
105
105
  it "should return false when should is nil" do
106
106
  current = [
107
- Puppet::Util::Windows::SID.name_to_principal('user1'),
107
+ 'user1',
108
108
  ]
109
109
  expect(provider.members_insync?(current, nil)).to be_falsey
110
110
  end
111
111
 
112
112
  it "should return false when current contains different users than should" do
113
113
  current = [
114
- Puppet::Util::Windows::SID.name_to_principal('user1'),
114
+ 'user1',
115
115
  ]
116
116
  expect(provider.members_insync?(current, ['user2'])).to be_falsey
117
117
  end
118
118
 
119
119
  it "should return false when current contains members and should is empty" do
120
120
  current = [
121
- Puppet::Util::Windows::SID.name_to_principal('user1'),
121
+ 'user1',
122
122
  ]
123
123
  expect(provider.members_insync?(current, [])).to be_falsey
124
124
  end
@@ -129,16 +129,16 @@ describe Puppet::Type.type(:group).provider(:windows_adsi), :if => Puppet::Util:
129
129
 
130
130
  it "should return false when should user(s) are not the only items in the current" do
131
131
  current = [
132
- Puppet::Util::Windows::SID.name_to_principal('user1'),
133
- Puppet::Util::Windows::SID.name_to_principal('user2'),
132
+ 'user1',
133
+ 'user2',
134
134
  ]
135
135
  expect(provider.members_insync?(current, ['user1'])).to be_falsey
136
136
  end
137
137
 
138
138
  it "should return false when current user(s) is not empty and should is an empty list" do
139
139
  current = [
140
- Puppet::Util::Windows::SID.name_to_principal('user1'),
141
- Puppet::Util::Windows::SID.name_to_principal('user2'),
140
+ 'user1',
141
+ 'user2',
142
142
  ]
143
143
  expect(provider.members_insync?(current, [])).to be_falsey
144
144
  end
@@ -156,21 +156,21 @@ describe Puppet::Type.type(:group).provider(:windows_adsi), :if => Puppet::Util:
156
156
 
157
157
  it "should return true when should is nil" do
158
158
  current = [
159
- Puppet::Util::Windows::SID.name_to_principal('user1'),
159
+ 'user1',
160
160
  ]
161
161
  expect(provider.members_insync?(current, nil)).to be_truthy
162
162
  end
163
163
 
164
164
  it "should return false when current contains different users than should" do
165
165
  current = [
166
- Puppet::Util::Windows::SID.name_to_principal('user1'),
166
+ 'user1',
167
167
  ]
168
168
  expect(provider.members_insync?(current, ['user2'])).to be_falsey
169
169
  end
170
170
 
171
171
  it "should return true when current contains members and should is empty" do
172
172
  current = [
173
- Puppet::Util::Windows::SID.name_to_principal('user1'),
173
+ 'user1',
174
174
  ]
175
175
  expect(provider.members_insync?(current, [])).to be_truthy
176
176
  end
@@ -181,25 +181,25 @@ describe Puppet::Type.type(:group).provider(:windows_adsi), :if => Puppet::Util:
181
181
 
182
182
  it "should return true when current user(s) contains at least the should list" do
183
183
  current = [
184
- Puppet::Util::Windows::SID.name_to_principal('user1'),
185
- Puppet::Util::Windows::SID.name_to_principal('user2'),
184
+ 'user1',
185
+ 'user2',
186
186
  ]
187
187
  expect(provider.members_insync?(current, ['user1'])).to be_truthy
188
188
  end
189
189
 
190
190
  it "should return true when current user(s) is not empty and should is an empty list" do
191
191
  current = [
192
- Puppet::Util::Windows::SID.name_to_principal('user1'),
193
- Puppet::Util::Windows::SID.name_to_principal('user2'),
192
+ 'user1',
193
+ 'user2',
194
194
  ]
195
195
  expect(provider.members_insync?(current, [])).to be_truthy
196
196
  end
197
197
 
198
198
  it "should return true when current user(s) contains at least the should list, even unordered" do
199
199
  current = [
200
- Puppet::Util::Windows::SID.name_to_principal('user3'),
201
- Puppet::Util::Windows::SID.name_to_principal('user1'),
202
- Puppet::Util::Windows::SID.name_to_principal('user2'),
200
+ 'user3',
201
+ 'user1',
202
+ 'user2',
203
203
  ]
204
204
  expect(provider.members_insync?(current, ['user2','user1'])).to be_truthy
205
205
  end
@@ -232,14 +232,26 @@ describe Puppet::Type.type(:group).provider(:windows_adsi), :if => Puppet::Util:
232
232
  end
233
233
 
234
234
  describe "when managing members" do
235
+ let(:user1) { stub(:account => 'user1', :domain => '.', :sid => 'user1sid') }
236
+ let(:user2) { stub(:account => 'user2', :domain => '.', :sid => 'user2sid') }
237
+ let(:user3) { stub(:account => 'user3', :domain => '.', :sid => 'user3sid') }
238
+
235
239
  before :each do
240
+ Puppet::Util::Windows::SID.stubs(:name_to_principal).with('user1').returns(user1)
241
+ Puppet::Util::Windows::SID.stubs(:name_to_principal).with('user2').returns(user2)
242
+ Puppet::Util::Windows::SID.stubs(:name_to_principal).with('user3').returns(user3)
243
+
236
244
  resource[:auth_membership] = true
237
245
  end
238
246
 
239
247
  it "should be able to provide a list of members" do
240
- provider.group.stubs(:members).returns ['user1', 'user2', 'user3']
248
+ provider.group.stubs(:members).returns [
249
+ 'user1',
250
+ 'user2',
251
+ 'user3',
252
+ ]
241
253
 
242
- expect(provider.members).to match_array(['user1', 'user2', 'user3'])
254
+ expect(provider.members).to match_array([user1.sid, user2.sid, user3.sid])
243
255
  end
244
256
 
245
257
  it "should be able to set group members" do
@@ -290,10 +302,7 @@ describe Puppet::Type.type(:group).provider(:windows_adsi), :if => Puppet::Util:
290
302
  connection.expects(:Create)
291
303
  connection.expects(:SetInfo).raises( WIN32OLERuntimeError.new("(in OLE method `SetInfo': )\n OLE error code:8007089A in Active Directory\n The specified username is invalid.\r\n\n HRESULT error code:0x80020009\n Exception occurred."))
292
304
 
293
- expect{ provider.create }.to raise_error(
294
- Puppet::Error,
295
- /not able to create\/delete domain groups/
296
- )
305
+ expect{ provider.create }.to raise_error(Puppet::Error)
297
306
  end
298
307
 
299
308
  it 'should commit a newly created group' do
@@ -1,4 +1,3 @@
1
- #! /usr/bin/env ruby
2
1
  require 'spec_helper'
3
2
 
4
3
  module Puppet::Util::Plist
@@ -6,13 +5,11 @@ end
6
5
 
7
6
  # We use this as a reasonable way to obtain all the support infrastructure.
8
7
  [:group].each do |type_for_this_round|
9
- provider_class = Puppet::Type.type(type_for_this_round).provider(:directoryservice)
10
-
11
- describe provider_class do
8
+ describe Puppet::Type.type(type_for_this_round).provider(:directoryservice) do
12
9
  before do
13
10
  @resource = stub("resource")
14
11
  @resource.stubs(:[]).with(:name)
15
- @provider = provider_class.new(@resource)
12
+ @provider = described_class.new(@resource)
16
13
  end
17
14
 
18
15
  it "[#6009] should handle nested arrays of members" do
@@ -40,125 +37,122 @@ end
40
37
  end
41
38
  end
42
39
 
43
- describe 'DirectoryService.single_report' do
44
- it 'should use plist data' do
45
- Puppet::Provider::NameService::DirectoryService.stubs(:get_ds_path).returns('Users')
46
- Puppet::Provider::NameService::DirectoryService.stubs(:list_all_present).returns(
47
- ['root', 'user1', 'user2', 'resource_name']
48
- )
49
- Puppet::Provider::NameService::DirectoryService.stubs(:generate_attribute_hash)
50
- Puppet::Provider::NameService::DirectoryService.stubs(:execute)
51
- Puppet::Provider::NameService::DirectoryService.expects(:parse_dscl_plist_data)
52
-
53
- Puppet::Provider::NameService::DirectoryService.single_report('resource_name')
40
+ describe Puppet::Provider::NameService::DirectoryService do
41
+ context '.single_report' do
42
+ it 'should use plist data' do
43
+ Puppet::Provider::NameService::DirectoryService.stubs(:get_ds_path).returns('Users')
44
+ Puppet::Provider::NameService::DirectoryService.stubs(:list_all_present).returns(
45
+ ['root', 'user1', 'user2', 'resource_name']
46
+ )
47
+ Puppet::Provider::NameService::DirectoryService.stubs(:generate_attribute_hash)
48
+ Puppet::Provider::NameService::DirectoryService.stubs(:execute)
49
+ Puppet::Provider::NameService::DirectoryService.expects(:parse_dscl_plist_data)
50
+
51
+ Puppet::Provider::NameService::DirectoryService.single_report('resource_name')
52
+ end
54
53
  end
55
- end
56
54
 
57
- describe 'DirectoryService.get_exec_preamble' do
58
- it 'should use plist data' do
59
- Puppet::Provider::NameService::DirectoryService.stubs(:get_ds_path).returns('Users')
55
+ context '.get_exec_preamble' do
56
+ it 'should use plist data' do
57
+ Puppet::Provider::NameService::DirectoryService.stubs(:get_ds_path).returns('Users')
60
58
 
61
- expect(Puppet::Provider::NameService::DirectoryService.get_exec_preamble('-list')).to include("-plist")
59
+ expect(Puppet::Provider::NameService::DirectoryService.get_exec_preamble('-list')).to include("-plist")
60
+ end
62
61
  end
63
- end
64
-
65
- describe 'DirectoryService password behavior' do
66
- # The below is a binary plist containing a ShadowHashData key which CONTAINS
67
- # another binary plist. The nested binary plist contains a 'SALTED-SHA512'
68
- # key that contains a base64 encoded salted-SHA512 password hash...
69
- let (:binary_plist) { "bplist00\324\001\002\003\004\005\006\a\bXCRAM-MD5RNT]SALTED-SHA512[RECOVERABLEO\020 \231k2\3360\200GI\201\355J\216\202\215y\243\001\206J\300\363\032\031\022\006\2359\024\257\217<\361O\020\020F\353\at\377\277\226\276c\306\254\031\037J(\235O\020D\335\006{\3744g@\377z\204\322\r\332t\021\330\n\003\246K\223\356\034!P\261\305t\035\346\352p\206\003n\247MMA\310\301Z<\366\246\023\0161W3\340\357\000\317T\t\301\311+\204\246L7\276\370\320*\245O\021\002\000k\024\221\270x\353\001\237\346D}\377?\265]\356+\243\v[\350\316a\340h\376<\322\266\327\016\306n\272r\t\212A\253L\216\214\205\016\241 [\360/\335\002#\\A\372\241a\261\346\346\\\251\330\312\365\016\n\341\017\016\225&;\322\\\004*\ru\316\372\a \362?8\031\247\231\030\030\267\315\023\v\343{@\227\301s\372h\212\000a\244&\231\366\nt\277\2036,\027bZ+\223W\212g\333`\264\331N\306\307\362\257(^~ b\262\247&\231\261t\341\231%\244\247\203eOt\365\271\201\273\330\350\363C^A\327F\214!\217hgf\e\320k\260n\315u~\336\371M\t\235k\230S\375\311\303\240\351\037d\273\321y\335=K\016`_\317\230\2612_\023K\036\350\v\232\323Y\310\317_\035\227%\237\v\340\023\016\243\233\025\306:\227\351\370\364x\234\231\266\367\016w\275\333-\351\210}\375x\034\262\272kRuHa\362T/F!\347B\231O`K\304\037'k$$\245h)e\363\365mT\b\317\\2\361\026\351\254\375Jl1~\r\371\267\352\2322I\341\272\376\243^Un\266E7\230[VocUJ\220N\2116D/\025f=\213\314\325\vG}\311\360\377DT\307m\261&\263\340\272\243_\020\271rG^BW\210\030l\344\0324\335\233\300\023\272\225Im\330\n\227*Yv[\006\315\330y'\a\321\373\273A\240\305F{S\246I#/\355\2425\031\031GGF\270y\n\331\004\023G@\331\000\361\343\350\264$\032\355_\210y\000\205\342\375\212q\024\004\026W:\205 \363v?\035\270L-\270=\022\323\2003\v\336\277\t\237\356\374\n\267n\003\367\342\330;\371S\326\016`B6@Njm>\240\021%\336\345\002(P\204Yn\3279l\0228\264\254\304\2528t\372h\217\347sA\314\345\245\337)]\000\b\000\021\000\032\000\035\000+\0007\000Z\000m\000\264\000\000\000\000\000\000\002\001\000\000\000\000\000\000\000\t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\270" }
70
62
 
71
- # The below is a base64 encoded salted-SHA512 password hash.
72
- let (:pw_string) { "\335\006{\3744g@\377z\204\322\r\332t\021\330\n\003\246K\223\356\034!P\261\305t\035\346\352p\206\003n\247MMA\310\301Z<\366\246\023\0161W3\340\357\000\317T\t\301\311+\204\246L7\276\370\320*\245" }
63
+ context 'password behavior' do
64
+ # The below is a binary plist containing a ShadowHashData key which CONTAINS
65
+ # another binary plist. The nested binary plist contains a 'SALTED-SHA512'
66
+ # key that contains a base64 encoded salted-SHA512 password hash...
67
+ let (:binary_plist) { "bplist00\324\001\002\003\004\005\006\a\bXCRAM-MD5RNT]SALTED-SHA512[RECOVERABLEO\020 \231k2\3360\200GI\201\355J\216\202\215y\243\001\206J\300\363\032\031\022\006\2359\024\257\217<\361O\020\020F\353\at\377\277\226\276c\306\254\031\037J(\235O\020D\335\006{\3744g@\377z\204\322\r\332t\021\330\n\003\246K\223\356\034!P\261\305t\035\346\352p\206\003n\247MMA\310\301Z<\366\246\023\0161W3\340\357\000\317T\t\301\311+\204\246L7\276\370\320*\245O\021\002\000k\024\221\270x\353\001\237\346D}\377?\265]\356+\243\v[\350\316a\340h\376<\322\266\327\016\306n\272r\t\212A\253L\216\214\205\016\241 [\360/\335\002#\\A\372\241a\261\346\346\\\251\330\312\365\016\n\341\017\016\225&;\322\\\004*\ru\316\372\a \362?8\031\247\231\030\030\267\315\023\v\343{@\227\301s\372h\212\000a\244&\231\366\nt\277\2036,\027bZ+\223W\212g\333`\264\331N\306\307\362\257(^~ b\262\247&\231\261t\341\231%\244\247\203eOt\365\271\201\273\330\350\363C^A\327F\214!\217hgf\e\320k\260n\315u~\336\371M\t\235k\230S\375\311\303\240\351\037d\273\321y\335=K\016`_\317\230\2612_\023K\036\350\v\232\323Y\310\317_\035\227%\237\v\340\023\016\243\233\025\306:\227\351\370\364x\234\231\266\367\016w\275\333-\351\210}\375x\034\262\272kRuHa\362T/F!\347B\231O`K\304\037'k$$\245h)e\363\365mT\b\317\\2\361\026\351\254\375Jl1~\r\371\267\352\2322I\341\272\376\243^Un\266E7\230[VocUJ\220N\2116D/\025f=\213\314\325\vG}\311\360\377DT\307m\261&\263\340\272\243_\020\271rG^BW\210\030l\344\0324\335\233\300\023\272\225Im\330\n\227*Yv[\006\315\330y'\a\321\373\273A\240\305F{S\246I#/\355\2425\031\031GGF\270y\n\331\004\023G@\331\000\361\343\350\264$\032\355_\210y\000\205\342\375\212q\024\004\026W:\205 \363v?\035\270L-\270=\022\323\2003\v\336\277\t\237\356\374\n\267n\003\367\342\330;\371S\326\016`B6@Njm>\240\021%\336\345\002(P\204Yn\3279l\0228\264\254\304\2528t\372h\217\347sA\314\345\245\337)]\000\b\000\021\000\032\000\035\000+\0007\000Z\000m\000\264\000\000\000\000\000\000\002\001\000\000\000\000\000\000\000\t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\270" }
73
68
 
74
- # The below is a salted-SHA512 password hash in hex.
75
- let (:sha512_hash) { 'dd067bfc346740ff7a84d20dda7411d80a03a64b93ee1c2150b1c5741de6ea7086036ea74d4d41c8c15a3cf6a6130e315733e0ef00cf5409c1c92b84a64c37bef8d02aa5' }
69
+ # The below is a base64 encoded salted-SHA512 password hash.
70
+ let (:pw_string) { "\335\006{\3744g@\377z\204\322\r\332t\021\330\n\003\246K\223\356\034!P\261\305t\035\346\352p\206\003n\247MMA\310\301Z<\366\246\023\0161W3\340\357\000\317T\t\301\311+\204\246L7\276\370\320*\245" }
76
71
 
77
- let :plist_path do
78
- '/var/db/dslocal/nodes/Default/users/jeff.plist'
79
- end
72
+ # The below is a salted-SHA512 password hash in hex.
73
+ let (:sha512_hash) { 'dd067bfc346740ff7a84d20dda7411d80a03a64b93ee1c2150b1c5741de6ea7086036ea74d4d41c8c15a3cf6a6130e315733e0ef00cf5409c1c92b84a64c37bef8d02aa5' }
80
74
 
81
- let :ds_provider do
82
- Puppet::Provider::NameService::DirectoryService
83
- end
75
+ let :plist_path do
76
+ '/var/db/dslocal/nodes/Default/users/jeff.plist'
77
+ end
84
78
 
85
- let :shadow_hash_data do
86
- {'ShadowHashData' => [binary_plist]}
87
- end
79
+ let :ds_provider do
80
+ described_class
81
+ end
88
82
 
89
- subject do
90
- Puppet::Provider::NameService::DirectoryService
91
- end
83
+ let :shadow_hash_data do
84
+ {'ShadowHashData' => [binary_plist]}
85
+ end
92
86
 
93
- it 'should execute convert_binary_to_hash once when getting the password' do
94
- subject.expects(:convert_binary_to_hash).returns({'SALTED-SHA512' => pw_string})
95
- Puppet::FileSystem.expects(:exist?).with(plist_path).once.returns(true)
96
- Puppet::Util::Plist.expects(:read_plist_file).returns(shadow_hash_data)
97
- subject.get_password('uid', 'jeff')
98
- end
87
+ it 'should execute convert_binary_to_hash once when getting the password' do
88
+ described_class.expects(:convert_binary_to_hash).returns({'SALTED-SHA512' => pw_string})
89
+ Puppet::FileSystem.expects(:exist?).with(plist_path).once.returns(true)
90
+ Puppet::Util::Plist.expects(:read_plist_file).returns(shadow_hash_data)
91
+ described_class.get_password('uid', 'jeff')
92
+ end
99
93
 
100
- it 'should fail if a salted-SHA512 password hash is not passed in' do
101
- expect {
102
- subject.set_password('jeff', 'uid', 'badpassword')
103
- }.to raise_error(RuntimeError, /OS X 10.7 requires a Salted SHA512 hash password of 136 characters./)
104
- end
94
+ it 'should fail if a salted-SHA512 password hash is not passed in' do
95
+ expect {
96
+ described_class.set_password('jeff', 'uid', 'badpassword')
97
+ }.to raise_error(RuntimeError, /OS X 10.7 requires a Salted SHA512 hash password of 136 characters./)
98
+ end
105
99
 
106
- it 'should convert xml-to-binary and binary-to-xml when setting the pw on >= 10.7' do
107
- subject.expects(:convert_binary_to_hash).returns({'SALTED-SHA512' => pw_string})
108
- subject.expects(:convert_hash_to_binary).returns(binary_plist)
109
- Puppet::FileSystem.expects(:exist?).with(plist_path).once.returns(true)
110
- Puppet::Util::Plist.expects(:read_plist_file).returns(shadow_hash_data)
111
- Puppet::Util::Plist.expects(:write_plist_file).with(shadow_hash_data, plist_path, :binary)
112
- subject.set_password('jeff', 'uid', sha512_hash)
113
- end
100
+ it 'should convert xml-to-binary and binary-to-xml when setting the pw on >= 10.7' do
101
+ described_class.expects(:convert_binary_to_hash).returns({'SALTED-SHA512' => pw_string})
102
+ described_class.expects(:convert_hash_to_binary).returns(binary_plist)
103
+ Puppet::FileSystem.expects(:exist?).with(plist_path).once.returns(true)
104
+ Puppet::Util::Plist.expects(:read_plist_file).returns(shadow_hash_data)
105
+ Puppet::Util::Plist.expects(:write_plist_file).with(shadow_hash_data, plist_path, :binary)
106
+ described_class.set_password('jeff', 'uid', sha512_hash)
107
+ end
114
108
 
115
- it '[#13686] should handle an empty ShadowHashData field in the users plist' do
116
- subject.expects(:convert_hash_to_binary).returns(binary_plist)
117
- Puppet::FileSystem.expects(:exist?).with(plist_path).once.returns(true)
118
- Puppet::Util::Plist.expects(:read_plist_file).returns({'ShadowHashData' => nil})
119
- Puppet::Util::Plist.expects(:write_plist_file)
120
- subject.set_password('jeff', 'uid', sha512_hash)
109
+ it '[#13686] should handle an empty ShadowHashData field in the users plist' do
110
+ described_class.expects(:convert_hash_to_binary).returns(binary_plist)
111
+ Puppet::FileSystem.expects(:exist?).with(plist_path).once.returns(true)
112
+ Puppet::Util::Plist.expects(:read_plist_file).returns({'ShadowHashData' => nil})
113
+ Puppet::Util::Plist.expects(:write_plist_file)
114
+ described_class.set_password('jeff', 'uid', sha512_hash)
115
+ end
121
116
  end
122
- end
123
117
 
124
- describe '(#4855) directoryservice group resource failure' do
125
- let :provider_class do
126
- Puppet::Type.type(:group).provider(:directoryservice)
127
- end
118
+ context '(#4855) directoryservice group resource failure' do
119
+ let :provider_class do
120
+ Puppet::Type.type(:group).provider(:directoryservice)
121
+ end
128
122
 
129
- let :group_members do
130
- ['root','jeff']
131
- end
123
+ let :group_members do
124
+ ['root','jeff']
125
+ end
132
126
 
133
- let :user_account do
134
- ['root']
135
- end
127
+ let :user_account do
128
+ ['root']
129
+ end
136
130
 
137
- let :stub_resource do
138
- stub('resource')
139
- end
131
+ let :stub_resource do
132
+ stub('resource')
133
+ end
140
134
 
141
- subject do
142
- provider_class.new(stub_resource)
143
- end
135
+ subject do
136
+ provider_class.new(stub_resource)
137
+ end
144
138
 
145
- before :each do
146
- @resource = stub("resource")
147
- @resource.stubs(:[]).with(:name)
148
- @provider = provider_class.new(@resource)
149
- end
139
+ before :each do
140
+ @resource = stub("resource")
141
+ @resource.stubs(:[]).with(:name)
142
+ @provider = provider_class.new(@resource)
143
+ end
150
144
 
151
- it 'should delete a group member if the user does not exist' do
152
- stub_resource.stubs(:[]).with(:name).returns('fake_group')
153
- stub_resource.stubs(:name).returns('fake_group')
154
- subject.expects(:execute).with([:dseditgroup, '-o', 'edit', '-n', '.',
155
- '-d', 'jeff',
156
- 'fake_group']).raises(Puppet::ExecutionFailure,
157
- 'it broke')
158
- subject.expects(:execute).with([:dscl, '.', '-delete',
159
- '/Groups/fake_group', 'GroupMembership',
160
- 'jeff'])
161
- subject.remove_unwanted_members(group_members, user_account)
145
+ it 'should delete a group member if the user does not exist' do
146
+ stub_resource.stubs(:[]).with(:name).returns('fake_group')
147
+ stub_resource.stubs(:name).returns('fake_group')
148
+ subject.expects(:execute).with([:dseditgroup, '-o', 'edit', '-n', '.',
149
+ '-d', 'jeff',
150
+ 'fake_group']).raises(Puppet::ExecutionFailure,
151
+ 'it broke')
152
+ subject.expects(:execute).with([:dscl, '.', '-delete',
153
+ '/Groups/fake_group', 'GroupMembership',
154
+ 'jeff'])
155
+ subject.remove_unwanted_members(group_members, user_account)
156
+ end
162
157
  end
163
158
  end
164
-
@@ -1,9 +1,6 @@
1
- #! /usr/bin/env ruby
2
1
  require 'spec_helper'
3
2
 
4
- provider_class = Puppet::Type.type(:package).provider(:aix)
5
-
6
- describe provider_class do
3
+ describe Puppet::Type.type(:package).provider(:aix) do
7
4
  before(:each) do
8
5
  # Create a mock resource
9
6
  @resource = Puppet::Type.type(:package).new(:name => 'mypackage', :ensure => :installed, :source => 'mysource', :provider => :aix)
@@ -23,7 +20,7 @@ describe provider_class do
23
20
  @provider.uninstall
24
21
  end
25
22
 
26
- describe "when installing" do
23
+ context "when installing" do
27
24
  it "should install a package" do
28
25
  @provider.expects(:installp).with('-acgwXY', '-d', 'mysource', 'mypackage')
29
26
  @provider.install
@@ -86,7 +83,7 @@ mypackage 1.2.3.3 Already superseded by 1.2.3.4
86
83
  end
87
84
  end
88
85
 
89
- describe "when finding the latest version" do
86
+ context "when finding the latest version" do
90
87
  it "should return the current version when no later version is present" do
91
88
  @provider.stubs(:latest_info).returns(nil)
92
89
  @provider.stubs(:properties).returns( { :ensure => "1.2.3.4" } )
@@ -126,7 +123,7 @@ END
126
123
  latest = Puppet::Type.type(:package).new(:name => 'mypackage', :ensure => :latest, :source => 'mysource', :provider => :aix)
127
124
  absent = Puppet::Type.type(:package).new(:name => 'otherpackage', :ensure => :absent, :provider => :aix)
128
125
  Process.stubs(:euid).returns(0)
129
- provider_class.expects(:execute).returns 'mypackage:mypackage.rte:1.8.6.4::I:T:::::N:A Super Cool Package::::0::\n'
130
- provider_class.prefetch({ 'mypackage' => latest, 'otherpackage' => absent })
126
+ described_class.expects(:execute).returns 'mypackage:mypackage.rte:1.8.6.4::I:T:::::N:A Super Cool Package::::0::\n'
127
+ described_class.prefetch({ 'mypackage' => latest, 'otherpackage' => absent })
131
128
  end
132
129
  end
@@ -1,9 +1,6 @@
1
- #! /usr/bin/env ruby
2
1
  require 'spec_helper'
3
2
 
4
- provider_class = Puppet::Type.type(:package).provider(:apt)
5
-
6
- describe provider_class do
3
+ describe Puppet::Type.type(:package).provider(:apt) do
7
4
  let(:name) { 'asdf' }
8
5
 
9
6
  let(:resource) do
@@ -14,7 +11,7 @@ describe provider_class do
14
11
  end
15
12
 
16
13
  let(:provider) do
17
- provider = provider_class.new
14
+ provider = subject()
18
15
  provider.resource = resource
19
16
  provider
20
17
  end
@@ -25,7 +22,7 @@ describe provider_class do
25
22
  end
26
23
 
27
24
  it "should be versionable" do
28
- expect(provider_class).to be_versionable
25
+ expect(described_class).to be_versionable
29
26
  end
30
27
 
31
28
  it "should use :install to update" do
@@ -3,35 +3,48 @@ require 'spec_helper'
3
3
  # Note that much of the functionality of the dnf provider is already tested with yum provider tests,
4
4
  # as yum is the parent provider.
5
5
 
6
- provider_class = Puppet::Type.type(:package).provider(:dnf)
7
-
8
- context 'default' do
9
- (19..21).each do |ver|
10
- it "should not be the default provider on fedora#{ver}" do
11
- Facter.stubs(:value).with(:osfamily).returns(:redhat)
12
- Facter.stubs(:value).with(:operatingsystem).returns(:fedora)
13
- Facter.stubs(:value).with(:operatingsystemmajrelease).returns("#{ver}")
14
- expect(provider_class).to_not be_default
6
+ describe Puppet::Type.type(:package).provider(:dnf) do
7
+ context 'default' do
8
+ (19..21).each do |ver|
9
+ it "should not be the default provider on fedora#{ver}" do
10
+ Facter.stubs(:value).with(:osfamily).returns(:redhat)
11
+ Facter.stubs(:value).with(:operatingsystem).returns(:fedora)
12
+ Facter.stubs(:value).with(:operatingsystemmajrelease).returns("#{ver}")
13
+ expect(described_class).to_not be_default
14
+ end
15
15
  end
16
- end
17
16
 
18
- (22..26).each do |ver|
19
- it "should be the default provider on fedora#{ver}" do
20
- Facter.stubs(:value).with(:osfamily).returns(:redhat)
21
- Facter.stubs(:value).with(:operatingsystem).returns(:fedora)
22
- Facter.stubs(:value).with(:operatingsystemmajrelease).returns("#{ver}")
23
- expect(provider_class).to be_default
17
+ (22..26).each do |ver|
18
+ it "should be the default provider on fedora#{ver}" do
19
+ Facter.stubs(:value).with(:osfamily).returns(:redhat)
20
+ Facter.stubs(:value).with(:operatingsystem).returns(:fedora)
21
+ Facter.stubs(:value).with(:operatingsystemmajrelease).returns("#{ver}")
22
+ expect(described_class).to be_default
23
+ end
24
+ end
25
+
26
+ it "should not be the default provider on rhel7" do
27
+ Facter.stubs(:value).with(:osfamily).returns(:redhat)
28
+ Facter.stubs(:value).with(:operatingsystem).returns(:redhat)
29
+ Facter.stubs(:value).with(:operatingsystemmajrelease).returns("7")
30
+ expect(described_class).to_not be_default
31
+ end
32
+
33
+ it "should be the default provider on some random future fedora" do
34
+ Facter.stubs(:value).with(:osfamily).returns(:redhat)
35
+ Facter.stubs(:value).with(:operatingsystem).returns(:fedora)
36
+ Facter.stubs(:value).with(:operatingsystemmajrelease).returns("8675")
37
+ expect(described_class).to be_default
38
+ end
39
+
40
+ it "should be the default provider on rhel8" do
41
+ Facter.stubs(:value).with(:osfamily).returns(:redhat)
42
+ Facter.stubs(:value).with(:operatingsystem).returns(:redhat)
43
+ Facter.stubs(:value).with(:operatingsystemmajrelease).returns("8")
44
+ expect(described_class).to be_default
24
45
  end
25
- end
26
46
 
27
- it "should be the default provider on some random future fedora" do
28
- Facter.stubs(:value).with(:osfamily).returns(:redhat)
29
- Facter.stubs(:value).with(:operatingsystem).returns(:fedora)
30
- Facter.stubs(:value).with(:operatingsystemmajrelease).returns("8675")
31
- expect(provider_class).to be_default
32
47
  end
33
- end
34
48
 
35
- describe provider_class do
36
- it_behaves_like 'RHEL package provider', provider_class, 'dnf'
49
+ it_behaves_like 'RHEL package provider', described_class, 'dnf'
37
50
  end