puppet 7.28.0-universal-darwin → 7.29.1-universal-darwin

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1258) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +51 -55
  3. data/ext/project_data.yaml +4 -4
  4. data/lib/puppet/pops/evaluator/literal_evaluator.rb +16 -3
  5. data/lib/puppet/pops/issues.rb +4 -0
  6. data/lib/puppet/pops/validation/checker4_0.rb +13 -0
  7. data/lib/puppet/pops/validation/validator_factory_4_0.rb +2 -0
  8. data/lib/puppet/util/windows/registry.rb +39 -4
  9. data/lib/puppet/version.rb +1 -1
  10. data/man/man5/puppet.conf.5 +2 -2
  11. data/man/man8/puppet-agent.8 +1 -1
  12. data/man/man8/puppet-apply.8 +1 -1
  13. data/man/man8/puppet-catalog.8 +1 -1
  14. data/man/man8/puppet-config.8 +1 -1
  15. data/man/man8/puppet-describe.8 +1 -1
  16. data/man/man8/puppet-device.8 +1 -1
  17. data/man/man8/puppet-doc.8 +1 -1
  18. data/man/man8/puppet-epp.8 +1 -1
  19. data/man/man8/puppet-facts.8 +1 -1
  20. data/man/man8/puppet-filebucket.8 +1 -1
  21. data/man/man8/puppet-generate.8 +1 -1
  22. data/man/man8/puppet-help.8 +1 -1
  23. data/man/man8/puppet-lookup.8 +1 -1
  24. data/man/man8/puppet-module.8 +1 -1
  25. data/man/man8/puppet-node.8 +1 -1
  26. data/man/man8/puppet-parser.8 +1 -1
  27. data/man/man8/puppet-plugin.8 +1 -1
  28. data/man/man8/puppet-report.8 +1 -1
  29. data/man/man8/puppet-resource.8 +1 -1
  30. data/man/man8/puppet-script.8 +1 -1
  31. data/man/man8/puppet-ssl.8 +1 -1
  32. data/man/man8/puppet.8 +2 -2
  33. metadata +3 -2453
  34. data/spec/fixtures/faulty_face/puppet/face/syntax.rb +0 -8
  35. data/spec/fixtures/hiera.yaml +0 -9
  36. data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +0 -92
  37. data/spec/fixtures/integration/application/agent/lib/facter/agent_spec_role.rb +0 -3
  38. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/provider/applytest/applytest.rb +0 -2
  39. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/type/applytest.rb +0 -25
  40. data/spec/fixtures/integration/application/module/environments/direnv/modules/nginx/README +0 -3
  41. data/spec/fixtures/integration/application/module/environments/direnv/modules/nginx/manifests/init.pp +0 -17
  42. data/spec/fixtures/integration/application/module/environments/direnv/modules/nginx/metadata.json +0 -20
  43. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Gemfile +0 -4
  44. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Rakefile +0 -3
  45. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/lib/puppet/functions/l10n.rb +0 -8
  46. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/config.yaml +0 -25
  47. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/ja/puppet-l10n.po +0 -19
  48. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/puppet-l10n.pot +0 -20
  49. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/metadata.json +0 -8
  50. data/spec/fixtures/integration/node/environment/sitedir/00_a.pp +0 -2
  51. data/spec/fixtures/integration/node/environment/sitedir/01_b.pp +0 -6
  52. data/spec/fixtures/integration/node/environment/sitedir/03_empty.pp +0 -0
  53. data/spec/fixtures/integration/node/environment/sitedir/04_include.pp +0 -2
  54. data/spec/fixtures/integration/node/environment/sitedir2/00_a.pp +0 -2
  55. data/spec/fixtures/integration/node/environment/sitedir2/02_folder/01_b.pp +0 -6
  56. data/spec/fixtures/integration/node/environment/sitedir2/03_c.pp +0 -1
  57. data/spec/fixtures/integration/node/environment/sitedir2/04_include.pp +0 -2
  58. data/spec/fixtures/java.tgz +0 -0
  59. data/spec/fixtures/manifests/site.pp +0 -0
  60. data/spec/fixtures/module.tar.gz +0 -0
  61. data/spec/fixtures/releases/jamtur01-apache/Modulefile +0 -2
  62. data/spec/fixtures/releases/jamtur01-apache/files/httpd +0 -24
  63. data/spec/fixtures/releases/jamtur01-apache/files/test.vhost +0 -18
  64. data/spec/fixtures/releases/jamtur01-apache/lib/puppet/provider/a2mod/debian.rb +0 -21
  65. data/spec/fixtures/releases/jamtur01-apache/lib/puppet/type/a2mod.rb +0 -12
  66. data/spec/fixtures/releases/jamtur01-apache/manifests/dev.pp +0 -5
  67. data/spec/fixtures/releases/jamtur01-apache/manifests/init.pp +0 -34
  68. data/spec/fixtures/releases/jamtur01-apache/manifests/params.pp +0 -17
  69. data/spec/fixtures/releases/jamtur01-apache/manifests/php.pp +0 -5
  70. data/spec/fixtures/releases/jamtur01-apache/manifests/ssl.pp +0 -15
  71. data/spec/fixtures/releases/jamtur01-apache/manifests/vhost.pp +0 -15
  72. data/spec/fixtures/releases/jamtur01-apache/metadata.json +0 -1
  73. data/spec/fixtures/releases/jamtur01-apache/templates/vhost-default.conf.erb +0 -20
  74. data/spec/fixtures/releases/jamtur01-apache/tests/apache.pp +0 -1
  75. data/spec/fixtures/releases/jamtur01-apache/tests/dev.pp +0 -1
  76. data/spec/fixtures/releases/jamtur01-apache/tests/init.pp +0 -1
  77. data/spec/fixtures/releases/jamtur01-apache/tests/php.pp +0 -1
  78. data/spec/fixtures/releases/jamtur01-apache/tests/ssl.pp +0 -1
  79. data/spec/fixtures/releases/jamtur01-apache/tests/vhost.pp +0 -2
  80. data/spec/fixtures/ssl/127.0.0.1-key.pem +0 -117
  81. data/spec/fixtures/ssl/127.0.0.1.pem +0 -69
  82. data/spec/fixtures/ssl/bad-basic-constraints.pem +0 -81
  83. data/spec/fixtures/ssl/bad-int-basic-constraints.pem +0 -81
  84. data/spec/fixtures/ssl/ca.pem +0 -81
  85. data/spec/fixtures/ssl/crl.pem +0 -40
  86. data/spec/fixtures/ssl/ec-key-openssl.pem +0 -8
  87. data/spec/fixtures/ssl/ec-key-pk8.pem +0 -5
  88. data/spec/fixtures/ssl/ec-key.pem +0 -18
  89. data/spec/fixtures/ssl/ec.pem +0 -49
  90. data/spec/fixtures/ssl/encrypted-ec-key.pem +0 -21
  91. data/spec/fixtures/ssl/encrypted-key.pem +0 -120
  92. data/spec/fixtures/ssl/intermediate-agent-crl.pem +0 -40
  93. data/spec/fixtures/ssl/intermediate-agent.pem +0 -81
  94. data/spec/fixtures/ssl/intermediate-crl.pem +0 -46
  95. data/spec/fixtures/ssl/intermediate.pem +0 -81
  96. data/spec/fixtures/ssl/netlock-arany-utf8.pem +0 -23
  97. data/spec/fixtures/ssl/oid-key.pem +0 -117
  98. data/spec/fixtures/ssl/oid.pem +0 -69
  99. data/spec/fixtures/ssl/pluto-key.pem +0 -117
  100. data/spec/fixtures/ssl/pluto.pem +0 -66
  101. data/spec/fixtures/ssl/request-key.pem +0 -117
  102. data/spec/fixtures/ssl/request.pem +0 -60
  103. data/spec/fixtures/ssl/revoked-key.pem +0 -117
  104. data/spec/fixtures/ssl/revoked.pem +0 -66
  105. data/spec/fixtures/ssl/signed-key.pem +0 -117
  106. data/spec/fixtures/ssl/signed.pem +0 -66
  107. data/spec/fixtures/ssl/tampered-cert.pem +0 -66
  108. data/spec/fixtures/ssl/tampered-csr.pem +0 -60
  109. data/spec/fixtures/ssl/trusted_oid_mapping.yaml +0 -5
  110. data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +0 -117
  111. data/spec/fixtures/ssl/unknown-127.0.0.1.pem +0 -69
  112. data/spec/fixtures/ssl/unknown-ca-key.pem +0 -117
  113. data/spec/fixtures/ssl/unknown-ca.pem +0 -81
  114. data/spec/fixtures/stdlib.tgz +0 -0
  115. data/spec/fixtures/unit/application/environments/production/data/common.yaml +0 -24
  116. data/spec/fixtures/unit/application/environments/production/environment.conf +0 -1
  117. data/spec/fixtures/unit/application/environments/production/manifests/site.pp +0 -1
  118. data/spec/fixtures/unit/application/environments/puppet_func_provider/environment.conf +0 -1
  119. data/spec/fixtures/unit/application/environments/puppet_func_provider/functions/environment/data.pp +0 -10
  120. data/spec/fixtures/unit/application/environments/puppet_func_provider/manifests/site.pp +0 -1
  121. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/data/bad.json +0 -3
  122. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/environment.conf +0 -2
  123. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/hiera.yaml +0 -5
  124. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/manifests/site.pp +0 -5
  125. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/data/bad.yaml +0 -3
  126. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/environment.conf +0 -2
  127. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/hiera.yaml +0 -5
  128. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/manifests/site.pp +0 -5
  129. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/data/common.yaml +0 -2
  130. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/environment.conf +0 -2
  131. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/manifests/site.pp +0 -1
  132. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/data/common.yaml +0 -2
  133. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/manifests/init.pp +0 -5
  134. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/metadata.json +0 -9
  135. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/first.json +0 -3
  136. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/name.yaml +0 -2
  137. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/second.json +0 -3
  138. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/single.yaml +0 -2
  139. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/third_utf8.json +0 -3
  140. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/utf8.yaml +0 -3
  141. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data2/single.yaml +0 -2
  142. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/environment.conf +0 -2
  143. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/hiera.yaml +0 -22
  144. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/manifests/site.pp +0 -5
  145. data/spec/fixtures/unit/data_providers/environments/hiera_misc/data/common.yaml +0 -48
  146. data/spec/fixtures/unit/data_providers/environments/hiera_misc/environment.conf +0 -2
  147. data/spec/fixtures/unit/data_providers/environments/hiera_misc/manifests/site.pp +0 -1
  148. data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/data/common.yaml +0 -30
  149. data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/manifests/init.pp +0 -13
  150. data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/metadata.json +0 -9
  151. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/data/common.yaml +0 -4
  152. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/data/specific.yaml +0 -4
  153. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/environment.conf +0 -2
  154. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/hiera.yaml +0 -7
  155. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/manifests/site.pp +0 -1
  156. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/first.json +0 -3
  157. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/name.yaml +0 -2
  158. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/second.json +0 -3
  159. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/server1.yaml +0 -1
  160. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/server2.yaml +0 -1
  161. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/single.yaml +0 -2
  162. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data2/single.yaml +0 -2
  163. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/hiera.yaml +0 -20
  164. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/manifests/init.pp +0 -5
  165. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/metadata.json +0 -9
  166. data/spec/fixtures/unit/data_providers/environments/hiera_modules/data/common.yaml +0 -4
  167. data/spec/fixtures/unit/data_providers/environments/hiera_modules/data/specific.yaml +0 -4
  168. data/spec/fixtures/unit/data_providers/environments/hiera_modules/environment.conf +0 -2
  169. data/spec/fixtures/unit/data_providers/environments/hiera_modules/hiera.yaml +0 -7
  170. data/spec/fixtures/unit/data_providers/environments/hiera_modules/manifests/site.pp +0 -1
  171. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/data/common.yaml +0 -6
  172. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/hiera.yaml +0 -5
  173. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/manifests/init.pp +0 -2
  174. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/metadata.json +0 -9
  175. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/data/common.yaml +0 -4
  176. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/hiera.yaml +0 -5
  177. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/manifests/init.pp +0 -3
  178. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/metadata.json +0 -9
  179. data/spec/fixtures/unit/data_providers/environments/production/environment.conf +0 -2
  180. data/spec/fixtures/unit/data_providers/environments/production/lib/puppet/functions/environment/data.rb +0 -9
  181. data/spec/fixtures/unit/data_providers/environments/production/modules/abc/lib/puppet/functions/abc/data.rb +0 -9
  182. data/spec/fixtures/unit/data_providers/environments/production/modules/abc/manifests/init.pp +0 -10
  183. data/spec/fixtures/unit/data_providers/environments/production/modules/abc/metadata.json +0 -9
  184. data/spec/fixtures/unit/data_providers/environments/production/modules/xyz/functions/data.pp +0 -6
  185. data/spec/fixtures/unit/data_providers/environments/production/modules/xyz/manifests/init.pp +0 -9
  186. data/spec/fixtures/unit/data_providers/environments/production/modules/xyz/metadata.json +0 -9
  187. data/spec/fixtures/unit/forge/bacula-releases.json +0 -128
  188. data/spec/fixtures/unit/forge/bacula.json +0 -76
  189. data/spec/fixtures/unit/forge/bacula.tar.gz +0 -0
  190. data/spec/fixtures/unit/functions/hiera/hiera/backend/hieraspec_backend.rb +0 -22
  191. data/spec/fixtures/unit/functions/lookup/data/common.yaml +0 -19
  192. data/spec/fixtures/unit/functions/lookup/hiera/backend/custom_backend.rb +0 -18
  193. data/spec/fixtures/unit/functions/lookup/hiera/backend/other_backend.rb +0 -7
  194. data/spec/fixtures/unit/functions/lookup_fixture/data/common.yaml +0 -19
  195. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/environment.conf +0 -2
  196. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/lib/puppet/functions/environment/data.rb +0 -13
  197. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/abc/lib/puppet/functions/abc/data.rb +0 -9
  198. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/abc/manifests/init.pp +0 -8
  199. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/abc/metadata.json +0 -9
  200. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bad_data/lib/puppet/functions/bad_data/data.rb +0 -7
  201. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bad_data/manifests/init.pp +0 -2
  202. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bad_data/metadata.json +0 -9
  203. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bca/lib/puppet/functions/bca/data.rb +0 -9
  204. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bca/manifests/init.pp +0 -2
  205. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bca/metadata.json +0 -9
  206. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_json/data/empty.json +0 -0
  207. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_json/hiera.yaml +0 -5
  208. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_json/manifests/init.pp +0 -2
  209. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_json/metadata.json +0 -9
  210. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_json/data/empty_key.json +0 -1
  211. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_json/hiera.yaml +0 -5
  212. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_json/manifests/init.pp +0 -2
  213. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_json/metadata.json +0 -9
  214. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_yaml/data/empty_key.yaml +0 -1
  215. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_yaml/hiera.yaml +0 -5
  216. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_yaml/manifests/init.pp +0 -2
  217. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_yaml/metadata.json +0 -9
  218. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_yaml/data/empty.yaml +0 -2
  219. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_yaml/hiera.yaml +0 -5
  220. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_yaml/manifests/init.pp +0 -2
  221. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_yaml/metadata.json +0 -9
  222. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/hieraprovider/data/first.json +0 -4
  223. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/hieraprovider/hiera.yaml +0 -8
  224. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/hieraprovider/manifests/init.pp +0 -5
  225. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/hieraprovider/metadata.json +0 -9
  226. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/meta/lib/puppet/functions/meta/data.rb +0 -9
  227. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/meta/manifests/init.pp +0 -3
  228. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/meta/metadata.json +0 -9
  229. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/no_provider/manifests/init.pp +0 -2
  230. data/spec/fixtures/unit/indirector/data_binding/hiera/global.yaml +0 -10
  231. data/spec/fixtures/unit/indirector/data_binding/hiera/invalid.yaml +0 -1
  232. data/spec/fixtures/unit/indirector/hiera/global.yaml +0 -10
  233. data/spec/fixtures/unit/indirector/hiera/invalid.yaml +0 -1
  234. data/spec/fixtures/unit/module/trailing-comma.json +0 -24
  235. data/spec/fixtures/unit/parser/functions/create_resources/foo/manifests/init.pp +0 -3
  236. data/spec/fixtures/unit/parser/functions/create_resources/foo/manifests/wrongdefine.pp +0 -3
  237. data/spec/fixtures/unit/parser/lexer/aliastest.pp +0 -16
  238. data/spec/fixtures/unit/parser/lexer/append.pp +0 -11
  239. data/spec/fixtures/unit/parser/lexer/argumentdefaults.pp +0 -14
  240. data/spec/fixtures/unit/parser/lexer/arithmetic_expression.pp +0 -8
  241. data/spec/fixtures/unit/parser/lexer/arraytrailingcomma.pp +0 -3
  242. data/spec/fixtures/unit/parser/lexer/casestatement.pp +0 -65
  243. data/spec/fixtures/unit/parser/lexer/classheirarchy.pp +0 -15
  244. data/spec/fixtures/unit/parser/lexer/classincludes.pp +0 -17
  245. data/spec/fixtures/unit/parser/lexer/classpathtest.pp +0 -11
  246. data/spec/fixtures/unit/parser/lexer/collection.pp +0 -10
  247. data/spec/fixtures/unit/parser/lexer/collection_override.pp +0 -8
  248. data/spec/fixtures/unit/parser/lexer/collection_within_virtual_definitions.pp +0 -20
  249. data/spec/fixtures/unit/parser/lexer/componentmetaparams.pp +0 -11
  250. data/spec/fixtures/unit/parser/lexer/componentrequire.pp +0 -8
  251. data/spec/fixtures/unit/parser/lexer/deepclassheirarchy.pp +0 -23
  252. data/spec/fixtures/unit/parser/lexer/defineoverrides.pp +0 -17
  253. data/spec/fixtures/unit/parser/lexer/emptyclass.pp +0 -9
  254. data/spec/fixtures/unit/parser/lexer/emptyexec.pp +0 -3
  255. data/spec/fixtures/unit/parser/lexer/emptyifelse.pp +0 -9
  256. data/spec/fixtures/unit/parser/lexer/falsevalues.pp +0 -3
  257. data/spec/fixtures/unit/parser/lexer/filecreate.pp +0 -11
  258. data/spec/fixtures/unit/parser/lexer/fqdefinition.pp +0 -5
  259. data/spec/fixtures/unit/parser/lexer/fqparents.pp +0 -11
  260. data/spec/fixtures/unit/parser/lexer/funccomma.pp +0 -5
  261. data/spec/fixtures/unit/parser/lexer/hash.pp +0 -33
  262. data/spec/fixtures/unit/parser/lexer/ifexpression.pp +0 -12
  263. data/spec/fixtures/unit/parser/lexer/implicititeration.pp +0 -15
  264. data/spec/fixtures/unit/parser/lexer/multilinecomments.pp +0 -10
  265. data/spec/fixtures/unit/parser/lexer/multipleclass.pp +0 -9
  266. data/spec/fixtures/unit/parser/lexer/multipleinstances.pp +0 -7
  267. data/spec/fixtures/unit/parser/lexer/multisubs.pp +0 -13
  268. data/spec/fixtures/unit/parser/lexer/namevartest.pp +0 -9
  269. data/spec/fixtures/unit/parser/lexer/scopetest.pp +0 -13
  270. data/spec/fixtures/unit/parser/lexer/selectorvalues.pp +0 -49
  271. data/spec/fixtures/unit/parser/lexer/simpledefaults.pp +0 -5
  272. data/spec/fixtures/unit/parser/lexer/simpleselector.pp +0 -38
  273. data/spec/fixtures/unit/parser/lexer/singleary.pp +0 -19
  274. data/spec/fixtures/unit/parser/lexer/singlequote.pp +0 -11
  275. data/spec/fixtures/unit/parser/lexer/singleselector.pp +0 -22
  276. data/spec/fixtures/unit/parser/lexer/subclass_name_duplication.pp +0 -11
  277. data/spec/fixtures/unit/parser/lexer/tag.pp +0 -9
  278. data/spec/fixtures/unit/parser/lexer/tagged.pp +0 -35
  279. data/spec/fixtures/unit/parser/lexer/virtualresources.pp +0 -14
  280. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/binder_config.yaml +0 -10
  281. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/lib/puppet/bindings/confdirtest.rb +0 -10
  282. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome2/lib/puppet/bindings/awesome2/default.rb +0 -20
  283. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome2/lib/puppet_x/awesome2/echo_scheme_handler.rb +0 -18
  284. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/bad/lib/puppet/bindings/bad/default.rb +0 -5
  285. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/good/lib/puppet/bindings/good/default.rb +0 -6
  286. data/spec/fixtures/unit/pops/binder/config/binder_config/nolayer/binder_config.yaml +0 -6
  287. data/spec/fixtures/unit/pops/binder/config/binder_config/ok/binder_config.yaml +0 -9
  288. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/functions/usee_puppet.pp +0 -3
  289. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/lib/puppet/functions/usee/callee.rb +0 -5
  290. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/lib/puppet/functions/usee/usee_ruby.rb +0 -6
  291. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/lib/puppet/type/usee_type.rb +0 -5
  292. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/manifests/init.pp +0 -8
  293. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/types/zero.pp +0 -1
  294. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee2/lib/puppet/functions/usee2/callee.rb +0 -5
  295. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_puppet.pp +0 -5
  296. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_puppet_init.pp +0 -5
  297. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_ruby.pp +0 -5
  298. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/caller.rb +0 -5
  299. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/caller2.rb +0 -5
  300. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_puppet.rb +0 -5
  301. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_puppet_init.rb +0 -5
  302. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_ruby.rb +0 -5
  303. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/manifests/init.pp +0 -87
  304. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/metadata.json +0 -10
  305. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseeone.pp +0 -1
  306. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseezero.pp +0 -1
  307. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load.rb +0 -11
  308. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load2.rb +0 -11
  309. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load3.rb +0 -11
  310. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load4.rb +0 -11
  311. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load5.rb +0 -12
  312. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/callee.rb +0 -8
  313. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/callee_ws.rb +0 -8
  314. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/func_with_syntax_error.rb +0 -9
  315. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/good_func_load.rb +0 -9
  316. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/metadata.json +0 -9
  317. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/functions/puppetcalled.pp +0 -3
  318. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/functions/puppetcaller.pp +0 -3
  319. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/functions/puppetcaller4.pp +0 -3
  320. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/lib/puppet/functions/user/caller.rb +0 -5
  321. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/lib/puppet/functions/user/caller_ws.rb +0 -12
  322. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/lib/puppet/functions/user/callingpuppet.rb +0 -5
  323. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/metadata.json +0 -9
  324. data/spec/fixtures/unit/pops/loaders/loaders/module_no_lib/modules/modulea/functions/hello.pp +0 -3
  325. data/spec/fixtures/unit/pops/loaders/loaders/module_no_lib/modules/modulea/manifests/init.pp +0 -3
  326. data/spec/fixtures/unit/pops/loaders/loaders/module_no_lib/modules/modulea/metadata.json +0 -10
  327. data/spec/fixtures/unit/pops/loaders/loaders/no_modules/manifests/site.pp +0 -10
  328. data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/functions/hello.pp +0 -3
  329. data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/functions/subspace/hello.pp +0 -3
  330. data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/lib/puppet/functions/modulea/rb_func_a.rb +0 -5
  331. data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/lib/puppet/functions/rb_func_a.rb +0 -5
  332. data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/manifests/init.pp +0 -3
  333. data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/metadata.json +0 -10
  334. data/spec/fixtures/unit/pops/loaders/loaders/wo_metadata_module/modules/moduleb/lib/puppet/functions/moduleb/rb_func_b.rb +0 -6
  335. data/spec/fixtures/unit/pops/loaders/loaders/wo_metadata_module/modules/moduleb/manifests/init.pp +0 -3
  336. data/spec/fixtures/unit/pops/parser/lexer/aliastest.pp +0 -16
  337. data/spec/fixtures/unit/pops/parser/lexer/append.pp +0 -11
  338. data/spec/fixtures/unit/pops/parser/lexer/argumentdefaults.pp +0 -14
  339. data/spec/fixtures/unit/pops/parser/lexer/arithmetic_expression.pp +0 -8
  340. data/spec/fixtures/unit/pops/parser/lexer/arraytrailingcomma.pp +0 -3
  341. data/spec/fixtures/unit/pops/parser/lexer/casestatement.pp +0 -65
  342. data/spec/fixtures/unit/pops/parser/lexer/classheirarchy.pp +0 -15
  343. data/spec/fixtures/unit/pops/parser/lexer/classincludes.pp +0 -17
  344. data/spec/fixtures/unit/pops/parser/lexer/classpathtest.pp +0 -11
  345. data/spec/fixtures/unit/pops/parser/lexer/collection.pp +0 -10
  346. data/spec/fixtures/unit/pops/parser/lexer/collection_override.pp +0 -8
  347. data/spec/fixtures/unit/pops/parser/lexer/collection_within_virtual_definitions.pp +0 -20
  348. data/spec/fixtures/unit/pops/parser/lexer/componentmetaparams.pp +0 -11
  349. data/spec/fixtures/unit/pops/parser/lexer/componentrequire.pp +0 -8
  350. data/spec/fixtures/unit/pops/parser/lexer/deepclassheirarchy.pp +0 -23
  351. data/spec/fixtures/unit/pops/parser/lexer/defineoverrides.pp +0 -17
  352. data/spec/fixtures/unit/pops/parser/lexer/emptyclass.pp +0 -9
  353. data/spec/fixtures/unit/pops/parser/lexer/emptyexec.pp +0 -3
  354. data/spec/fixtures/unit/pops/parser/lexer/emptyifelse.pp +0 -9
  355. data/spec/fixtures/unit/pops/parser/lexer/falsevalues.pp +0 -3
  356. data/spec/fixtures/unit/pops/parser/lexer/filecreate.pp +0 -11
  357. data/spec/fixtures/unit/pops/parser/lexer/fqdefinition.pp +0 -5
  358. data/spec/fixtures/unit/pops/parser/lexer/fqparents.pp +0 -11
  359. data/spec/fixtures/unit/pops/parser/lexer/funccomma.pp +0 -5
  360. data/spec/fixtures/unit/pops/parser/lexer/hash.pp +0 -33
  361. data/spec/fixtures/unit/pops/parser/lexer/ifexpression.pp +0 -12
  362. data/spec/fixtures/unit/pops/parser/lexer/implicititeration.pp +0 -15
  363. data/spec/fixtures/unit/pops/parser/lexer/multilinecomments.pp +0 -10
  364. data/spec/fixtures/unit/pops/parser/lexer/multipleclass.pp +0 -9
  365. data/spec/fixtures/unit/pops/parser/lexer/multipleinstances.pp +0 -7
  366. data/spec/fixtures/unit/pops/parser/lexer/multisubs.pp +0 -13
  367. data/spec/fixtures/unit/pops/parser/lexer/namevartest.pp +0 -9
  368. data/spec/fixtures/unit/pops/parser/lexer/scopetest.pp +0 -13
  369. data/spec/fixtures/unit/pops/parser/lexer/selectorvalues.pp +0 -49
  370. data/spec/fixtures/unit/pops/parser/lexer/simpledefaults.pp +0 -5
  371. data/spec/fixtures/unit/pops/parser/lexer/simpleselector.pp +0 -38
  372. data/spec/fixtures/unit/pops/parser/lexer/singleary.pp +0 -19
  373. data/spec/fixtures/unit/pops/parser/lexer/singlequote.pp +0 -11
  374. data/spec/fixtures/unit/pops/parser/lexer/singleselector.pp +0 -22
  375. data/spec/fixtures/unit/pops/parser/lexer/subclass_name_duplication.pp +0 -11
  376. data/spec/fixtures/unit/pops/parser/lexer/tag.pp +0 -9
  377. data/spec/fixtures/unit/pops/parser/lexer/tagged.pp +0 -35
  378. data/spec/fixtures/unit/pops/parser/lexer/virtualresources.pp +0 -14
  379. data/spec/fixtures/unit/provider/aix_object/aix_colon_list_real_world_input.out +0 -1
  380. data/spec/fixtures/unit/provider/aix_object/aix_colon_list_real_world_output.out +0 -1
  381. data/spec/fixtures/unit/provider/cron/crontab/single_line.yaml +0 -272
  382. data/spec/fixtures/unit/provider/cron/crontab/vixie_header.txt +0 -3
  383. data/spec/fixtures/unit/provider/cron/parsed/managed +0 -6
  384. data/spec/fixtures/unit/provider/cron/parsed/simple +0 -9
  385. data/spec/fixtures/unit/provider/package/dnfmodule/dnf-module-list.txt +0 -19
  386. data/spec/fixtures/unit/provider/package/gem/gem-list-single-package +0 -4
  387. data/spec/fixtures/unit/provider/package/gem/line-with-1.8.5-warning +0 -14
  388. data/spec/fixtures/unit/provider/package/openbsd/pkginfo.detail +0 -19
  389. data/spec/fixtures/unit/provider/package/openbsd/pkginfo.list +0 -10
  390. data/spec/fixtures/unit/provider/package/openbsd/pkginfo.query +0 -1
  391. data/spec/fixtures/unit/provider/package/openbsd/pkginfo_flavors.list +0 -2
  392. data/spec/fixtures/unit/provider/package/pkg/dummy_implicit_version +0 -3
  393. data/spec/fixtures/unit/provider/package/pkg/dummy_solaris10 +0 -1
  394. data/spec/fixtures/unit/provider/package/pkg/dummy_solaris11.certificate_warning +0 -2
  395. data/spec/fixtures/unit/provider/package/pkg/dummy_solaris11.ifo.installed +0 -1
  396. data/spec/fixtures/unit/provider/package/pkg/dummy_solaris11.ifo.known +0 -1
  397. data/spec/fixtures/unit/provider/package/pkg/dummy_solaris11.installed +0 -1
  398. data/spec/fixtures/unit/provider/package/pkg/dummy_solaris11.known +0 -1
  399. data/spec/fixtures/unit/provider/package/pkg/incomplete +0 -1
  400. data/spec/fixtures/unit/provider/package/pkg/solaris11 +0 -2
  401. data/spec/fixtures/unit/provider/package/pkg/unknown_status +0 -12
  402. data/spec/fixtures/unit/provider/package/pkgng/pkg.query +0 -7
  403. data/spec/fixtures/unit/provider/package/pkgng/pkg.query.zsh +0 -1
  404. data/spec/fixtures/unit/provider/package/pkgng/pkg.version +0 -5
  405. data/spec/fixtures/unit/provider/package/puppetserver_gem/gem-list-local-packages +0 -30
  406. data/spec/fixtures/unit/provider/package/sun/dummy.server +0 -12
  407. data/spec/fixtures/unit/provider/package/sun/simple +0 -24
  408. data/spec/fixtures/unit/provider/package/yum/yum-check-update-broken-notices.txt +0 -187
  409. data/spec/fixtures/unit/provider/package/yum/yum-check-update-multiline.txt +0 -201
  410. data/spec/fixtures/unit/provider/package/yum/yum-check-update-obsoletes.txt +0 -195
  411. data/spec/fixtures/unit/provider/package/yum/yum-check-update-plugin-output.txt +0 -36
  412. data/spec/fixtures/unit/provider/package/yum/yum-check-update-security.txt +0 -184
  413. data/spec/fixtures/unit/provider/package/yum/yum-check-update-simple.txt +0 -13
  414. data/spec/fixtures/unit/provider/package/yum/yum-check-update-subscription-manager.txt +0 -9
  415. data/spec/fixtures/unit/provider/package/zypper/zypper-list-updates-SLES11sp1.out +0 -369
  416. data/spec/fixtures/unit/provider/package/zypper/zypper-list-updates-empty.out +0 -3
  417. data/spec/fixtures/unit/provider/package/zypper/zypper-search-uninstalled.out +0 -13
  418. data/spec/fixtures/unit/provider/parsedfile/aliases.txt +0 -2
  419. data/spec/fixtures/unit/provider/parsedfile/simple.txt +0 -7
  420. data/spec/fixtures/unit/provider/service/base/ps_ef.mixed_encoding +0 -3
  421. data/spec/fixtures/unit/provider/service/gentoo/rc_update_show +0 -30
  422. data/spec/fixtures/unit/provider/service/openbsd/rcctl_getall +0 -6
  423. data/spec/fixtures/unit/provider/service/openrc/rcservice_list +0 -8
  424. data/spec/fixtures/unit/provider/service/openrc/rcstatus +0 -43
  425. data/spec/fixtures/unit/provider/service/smf/svcs_fmri.out +0 -6
  426. data/spec/fixtures/unit/provider/service/smf/svcs_instances.out +0 -4
  427. data/spec/fixtures/unit/provider/service/smf/svcs_multiple_fmris.out +0 -13
  428. data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services +0 -16
  429. data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services_vendor_preset +0 -9
  430. data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +0 -36
  431. data/spec/fixtures/unit/reports/tagmail/tagmail_email.conf +0 -2
  432. data/spec/fixtures/unit/reports/tagmail/tagmail_failers.conf +0 -3
  433. data/spec/fixtures/unit/reports/tagmail/tagmail_passers.conf +0 -30
  434. data/spec/fixtures/unit/ssl/certificate/old-style-cert-exts.pem +0 -33
  435. data/spec/fixtures/unit/ssl/certificate_request/old-style-cert-request.pem +0 -28
  436. data/spec/fixtures/unit/type/user/authorized_keys +0 -6
  437. data/spec/fixtures/unit/util/filetype/aixtab_output +0 -44
  438. data/spec/fixtures/unit/util/filetype/suntab_output +0 -9
  439. data/spec/fixtures/unit/util/monkey_patches/x509.pem +0 -32
  440. data/spec/fixtures/unit/util/rdoc/basic.pp +0 -16
  441. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_fetch_if_not_on_the_local_disk.yml +0 -104
  442. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_not_update_if_content_on_disk_is_up-to-date.yml +0 -108
  443. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_update_if_content_differs_on_disk.yml +0 -108
  444. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_mtime_is_older_on_disk.yml +0 -104
  445. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_no_header_specified.yml +0 -100
  446. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_not_on_the_local_disk.yml +0 -104
  447. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_not_update_if_mtime_is_newer_on_disk.yml +0 -104
  448. data/spec/fixtures/yaml/report2.6.x.yaml +0 -190
  449. data/spec/fixtures/yaml/test.local.yaml +0 -16
  450. data/spec/integration/agent/logging_spec.rb +0 -179
  451. data/spec/integration/application/agent_spec.rb +0 -1012
  452. data/spec/integration/application/apply_spec.rb +0 -773
  453. data/spec/integration/application/doc_spec.rb +0 -24
  454. data/spec/integration/application/filebucket_spec.rb +0 -255
  455. data/spec/integration/application/help_spec.rb +0 -44
  456. data/spec/integration/application/lookup_spec.rb +0 -275
  457. data/spec/integration/application/module_spec.rb +0 -230
  458. data/spec/integration/application/plugin_spec.rb +0 -145
  459. data/spec/integration/application/resource_spec.rb +0 -68
  460. data/spec/integration/application/ssl_spec.rb +0 -20
  461. data/spec/integration/configurer_spec.rb +0 -164
  462. data/spec/integration/data_binding_spec.rb +0 -278
  463. data/spec/integration/defaults_spec.rb +0 -279
  464. data/spec/integration/directory_environments_spec.rb +0 -67
  465. data/spec/integration/environments/default_manifest_spec.rb +0 -215
  466. data/spec/integration/environments/setting_hooks_spec.rb +0 -27
  467. data/spec/integration/environments/settings_interpolation_spec.rb +0 -106
  468. data/spec/integration/environments/settings_spec.rb +0 -128
  469. data/spec/integration/http/client_spec.rb +0 -229
  470. data/spec/integration/indirector/catalog/compiler_spec.rb +0 -75
  471. data/spec/integration/indirector/direct_file_server_spec.rb +0 -90
  472. data/spec/integration/indirector/facts/facter_spec.rb +0 -168
  473. data/spec/integration/indirector/file_content/file_server_spec.rb +0 -106
  474. data/spec/integration/indirector/file_metadata/file_server_spec.rb +0 -75
  475. data/spec/integration/l10n/compiler_spec.rb +0 -37
  476. data/spec/integration/network/formats_spec.rb +0 -90
  477. data/spec/integration/network/http/api/indirected_routes_spec.rb +0 -60
  478. data/spec/integration/network/http_pool_spec.rb +0 -275
  479. data/spec/integration/node/environment_spec.rb +0 -170
  480. data/spec/integration/node/facts_spec.rb +0 -40
  481. data/spec/integration/node_spec.rb +0 -77
  482. data/spec/integration/parser/catalog_spec.rb +0 -68
  483. data/spec/integration/parser/class_spec.rb +0 -33
  484. data/spec/integration/parser/collection_spec.rb +0 -362
  485. data/spec/integration/parser/compiler_spec.rb +0 -1210
  486. data/spec/integration/parser/conditionals_spec.rb +0 -92
  487. data/spec/integration/parser/dynamic_scoping_spec.rb +0 -66
  488. data/spec/integration/parser/environment_spec.rb +0 -47
  489. data/spec/integration/parser/node_spec.rb +0 -163
  490. data/spec/integration/parser/parameter_defaults_spec.rb +0 -358
  491. data/spec/integration/parser/pcore_resource_spec.rb +0 -243
  492. data/spec/integration/parser/resource_expressions_spec.rb +0 -222
  493. data/spec/integration/parser/scope_spec.rb +0 -728
  494. data/spec/integration/parser/script_compiler_spec.rb +0 -113
  495. data/spec/integration/parser/undef_param_spec.rb +0 -95
  496. data/spec/integration/provider/file/windows_spec.rb +0 -162
  497. data/spec/integration/resource/catalog_spec.rb +0 -47
  498. data/spec/integration/resource/type_collection_spec.rb +0 -88
  499. data/spec/integration/transaction/report_spec.rb +0 -706
  500. data/spec/integration/transaction_spec.rb +0 -553
  501. data/spec/integration/type/exec_spec.rb +0 -114
  502. data/spec/integration/type/file_spec.rb +0 -2012
  503. data/spec/integration/type/notify_spec.rb +0 -46
  504. data/spec/integration/type/package_spec.rb +0 -200
  505. data/spec/integration/type/tidy_spec.rb +0 -45
  506. data/spec/integration/type_spec.rb +0 -30
  507. data/spec/integration/util/autoload_spec.rb +0 -104
  508. data/spec/integration/util/execution_spec.rb +0 -104
  509. data/spec/integration/util/rdoc/parser_spec.rb +0 -171
  510. data/spec/integration/util/settings_spec.rb +0 -115
  511. data/spec/integration/util/windows/adsi_spec.rb +0 -207
  512. data/spec/integration/util/windows/monkey_patches/process_spec.rb +0 -231
  513. data/spec/integration/util/windows/principal_spec.rb +0 -279
  514. data/spec/integration/util/windows/process_spec.rb +0 -96
  515. data/spec/integration/util/windows/registry_spec.rb +0 -334
  516. data/spec/integration/util/windows/security_spec.rb +0 -1010
  517. data/spec/integration/util/windows/user_spec.rb +0 -226
  518. data/spec/integration/util_spec.rb +0 -104
  519. data/spec/lib/matchers/containment_matchers.rb +0 -52
  520. data/spec/lib/matchers/include_in_order.rb +0 -20
  521. data/spec/lib/matchers/include_in_order_spec.rb +0 -30
  522. data/spec/lib/matchers/json.rb +0 -132
  523. data/spec/lib/matchers/match_tokens2.rb +0 -74
  524. data/spec/lib/matchers/relationship_graph_matchers.rb +0 -48
  525. data/spec/lib/matchers/resource.rb +0 -74
  526. data/spec/lib/puppet/certificate_factory.rb +0 -218
  527. data/spec/lib/puppet/face/1.0.0/huzzah.rb +0 -8
  528. data/spec/lib/puppet/face/basetest.rb +0 -51
  529. data/spec/lib/puppet/face/huzzah/obsolete.rb +0 -6
  530. data/spec/lib/puppet/face/huzzah.rb +0 -8
  531. data/spec/lib/puppet/face/version_matching.rb +0 -12
  532. data/spec/lib/puppet/indirector/indirector_testing/json.rb +0 -6
  533. data/spec/lib/puppet/indirector/indirector_testing/memory.rb +0 -7
  534. data/spec/lib/puppet/indirector/indirector_testing/msgpack.rb +0 -6
  535. data/spec/lib/puppet/indirector_proxy.rb +0 -34
  536. data/spec/lib/puppet/indirector_testing.rb +0 -31
  537. data/spec/lib/puppet/test_ca.rb +0 -164
  538. data/spec/lib/puppet_spec/character_encoding.rb +0 -12
  539. data/spec/lib/puppet_spec/compiler.rb +0 -112
  540. data/spec/lib/puppet_spec/files.rb +0 -107
  541. data/spec/lib/puppet_spec/fixtures.rb +0 -52
  542. data/spec/lib/puppet_spec/handler.rb +0 -53
  543. data/spec/lib/puppet_spec/https.rb +0 -95
  544. data/spec/lib/puppet_spec/language.rb +0 -75
  545. data/spec/lib/puppet_spec/matchers.rb +0 -68
  546. data/spec/lib/puppet_spec/module_tool/shared_functions.rb +0 -56
  547. data/spec/lib/puppet_spec/module_tool/stub_source.rb +0 -136
  548. data/spec/lib/puppet_spec/modules.rb +0 -82
  549. data/spec/lib/puppet_spec/network.rb +0 -109
  550. data/spec/lib/puppet_spec/pops.rb +0 -29
  551. data/spec/lib/puppet_spec/puppetserver.rb +0 -180
  552. data/spec/lib/puppet_spec/scope.rb +0 -13
  553. data/spec/lib/puppet_spec/settings.rb +0 -39
  554. data/spec/lib/puppet_spec/ssl.rb +0 -265
  555. data/spec/lib/puppet_spec/unindent.rb +0 -5
  556. data/spec/lib/puppet_spec/verbose.rb +0 -9
  557. data/spec/shared_behaviours/all_parsedfile_providers.rb +0 -21
  558. data/spec/shared_behaviours/an_indirector_face.rb +0 -6
  559. data/spec/shared_behaviours/documentation_on_faces.rb +0 -261
  560. data/spec/shared_behaviours/file_server_terminus.rb +0 -38
  561. data/spec/shared_behaviours/file_serving.rb +0 -73
  562. data/spec/shared_behaviours/hiera_indirections.rb +0 -98
  563. data/spec/shared_behaviours/iterative_functions.rb +0 -68
  564. data/spec/shared_behaviours/memory_terminus.rb +0 -28
  565. data/spec/shared_behaviours/path_parameters.rb +0 -160
  566. data/spec/shared_behaviours/store_configs_terminus.rb +0 -21
  567. data/spec/shared_behaviours/things_that_declare_options.rb +0 -262
  568. data/spec/shared_contexts/checksum.rb +0 -65
  569. data/spec/shared_contexts/digests.rb +0 -100
  570. data/spec/shared_contexts/https.rb +0 -29
  571. data/spec/shared_contexts/l10n.rb +0 -32
  572. data/spec/shared_contexts/provider.rb +0 -16
  573. data/spec/shared_contexts/types_setup.rb +0 -204
  574. data/spec/shared_examples/rhel_package_provider.rb +0 -398
  575. data/spec/spec_helper.rb +0 -240
  576. data/spec/unit/agent/disabler_spec.rb +0 -63
  577. data/spec/unit/agent/locker_spec.rb +0 -99
  578. data/spec/unit/agent_spec.rb +0 -423
  579. data/spec/unit/application/agent_spec.rb +0 -640
  580. data/spec/unit/application/apply_spec.rb +0 -559
  581. data/spec/unit/application/config_spec.rb +0 -232
  582. data/spec/unit/application/describe_spec.rb +0 -135
  583. data/spec/unit/application/device_spec.rb +0 -616
  584. data/spec/unit/application/doc_spec.rb +0 -333
  585. data/spec/unit/application/face_base_spec.rb +0 -454
  586. data/spec/unit/application/facts_spec.rb +0 -139
  587. data/spec/unit/application/filebucket_spec.rb +0 -319
  588. data/spec/unit/application/indirection_base_spec.rb +0 -50
  589. data/spec/unit/application/lookup_spec.rb +0 -691
  590. data/spec/unit/application/resource_spec.rb +0 -220
  591. data/spec/unit/application/ssl_spec.rb +0 -507
  592. data/spec/unit/application_spec.rb +0 -730
  593. data/spec/unit/certificate_factory_spec.rb +0 -170
  594. data/spec/unit/concurrent/lock_spec.rb +0 -29
  595. data/spec/unit/concurrent/thread_local_singleton_spec.rb +0 -39
  596. data/spec/unit/configurer/downloader_spec.rb +0 -252
  597. data/spec/unit/configurer/fact_handler_spec.rb +0 -147
  598. data/spec/unit/configurer/plugin_handler_spec.rb +0 -152
  599. data/spec/unit/configurer_spec.rb +0 -1488
  600. data/spec/unit/confine/exists_spec.rb +0 -82
  601. data/spec/unit/confine/false_spec.rb +0 -78
  602. data/spec/unit/confine/feature_spec.rb +0 -59
  603. data/spec/unit/confine/true_spec.rb +0 -78
  604. data/spec/unit/confine/variable_spec.rb +0 -105
  605. data/spec/unit/confine_collection_spec.rb +0 -132
  606. data/spec/unit/confine_spec.rb +0 -99
  607. data/spec/unit/confiner_spec.rb +0 -61
  608. data/spec/unit/context/trusted_information_spec.rb +0 -213
  609. data/spec/unit/context_spec.rb +0 -217
  610. data/spec/unit/daemon_spec.rb +0 -193
  611. data/spec/unit/data_binding_spec.rb +0 -11
  612. data/spec/unit/data_providers/function_data_provider_spec.rb +0 -122
  613. data/spec/unit/data_providers/hiera_data_provider_spec.rb +0 -360
  614. data/spec/unit/datatypes_spec.rb +0 -352
  615. data/spec/unit/defaults_spec.rb +0 -174
  616. data/spec/unit/environments_spec.rb +0 -1186
  617. data/spec/unit/etc_spec.rb +0 -465
  618. data/spec/unit/external/pson_spec.rb +0 -60
  619. data/spec/unit/face/config_spec.rb +0 -402
  620. data/spec/unit/face/epp_face_spec.rb +0 -385
  621. data/spec/unit/face/facts_spec.rb +0 -78
  622. data/spec/unit/face/generate_spec.rb +0 -293
  623. data/spec/unit/face/help_spec.rb +0 -208
  624. data/spec/unit/face/module/install_spec.rb +0 -40
  625. data/spec/unit/face/module/list_spec.rb +0 -256
  626. data/spec/unit/face/module/uninstall_spec.rb +0 -45
  627. data/spec/unit/face/module/upgrade_spec.rb +0 -26
  628. data/spec/unit/face/node_spec.rb +0 -129
  629. data/spec/unit/face/parser_spec.rb +0 -310
  630. data/spec/unit/face/plugin_spec.rb +0 -158
  631. data/spec/unit/face_spec.rb +0 -1
  632. data/spec/unit/facter_impl_spec.rb +0 -31
  633. data/spec/unit/file_bucket/dipper_spec.rb +0 -405
  634. data/spec/unit/file_bucket/file_spec.rb +0 -58
  635. data/spec/unit/file_serving/base_spec.rb +0 -164
  636. data/spec/unit/file_serving/configuration/parser_spec.rb +0 -206
  637. data/spec/unit/file_serving/configuration_spec.rb +0 -240
  638. data/spec/unit/file_serving/content_spec.rb +0 -98
  639. data/spec/unit/file_serving/fileset_spec.rb +0 -417
  640. data/spec/unit/file_serving/http_metadata_spec.rb +0 -109
  641. data/spec/unit/file_serving/metadata_spec.rb +0 -551
  642. data/spec/unit/file_serving/mount/file_spec.rb +0 -188
  643. data/spec/unit/file_serving/mount/locales_spec.rb +0 -72
  644. data/spec/unit/file_serving/mount/modules_spec.rb +0 -69
  645. data/spec/unit/file_serving/mount/pluginfacts_spec.rb +0 -72
  646. data/spec/unit/file_serving/mount/plugins_spec.rb +0 -72
  647. data/spec/unit/file_serving/mount/scripts_spec.rb +0 -69
  648. data/spec/unit/file_serving/mount/tasks_spec.rb +0 -71
  649. data/spec/unit/file_serving/mount_spec.rb +0 -30
  650. data/spec/unit/file_serving/terminus_helper_spec.rb +0 -114
  651. data/spec/unit/file_serving/terminus_selector_spec.rb +0 -84
  652. data/spec/unit/file_system/path_pattern_spec.rb +0 -153
  653. data/spec/unit/file_system/uniquefile_spec.rb +0 -245
  654. data/spec/unit/file_system_spec.rb +0 -1198
  655. data/spec/unit/forge/errors_spec.rb +0 -80
  656. data/spec/unit/forge/forge_spec.rb +0 -69
  657. data/spec/unit/forge/module_release_spec.rb +0 -331
  658. data/spec/unit/forge/repository_spec.rb +0 -154
  659. data/spec/unit/forge_spec.rb +0 -210
  660. data/spec/unit/functions/abs_spec.rb +0 -70
  661. data/spec/unit/functions/all_spec.rb +0 -97
  662. data/spec/unit/functions/annotate_spec.rb +0 -175
  663. data/spec/unit/functions/any_spec.rb +0 -109
  664. data/spec/unit/functions/assert_type_spec.rb +0 -97
  665. data/spec/unit/functions/binary_file_spec.rb +0 -46
  666. data/spec/unit/functions/break_spec.rb +0 -207
  667. data/spec/unit/functions/call_spec.rb +0 -131
  668. data/spec/unit/functions/camelcase_spec.rb +0 -34
  669. data/spec/unit/functions/capitalize_spec.rb +0 -34
  670. data/spec/unit/functions/ceiling_spec.rb +0 -65
  671. data/spec/unit/functions/chomp_spec.rb +0 -46
  672. data/spec/unit/functions/chop_spec.rb +0 -38
  673. data/spec/unit/functions/compare_spec.rb +0 -147
  674. data/spec/unit/functions/contain_spec.rb +0 -297
  675. data/spec/unit/functions/convert_to_spec.rb +0 -25
  676. data/spec/unit/functions/defined_spec.rb +0 -288
  677. data/spec/unit/functions/dig_spec.rb +0 -58
  678. data/spec/unit/functions/downcase_spec.rb +0 -34
  679. data/spec/unit/functions/each_spec.rb +0 -107
  680. data/spec/unit/functions/empty_spec.rb +0 -87
  681. data/spec/unit/functions/epp_spec.rb +0 -172
  682. data/spec/unit/functions/filter_spec.rb +0 -145
  683. data/spec/unit/functions/find_file_spec.rb +0 -69
  684. data/spec/unit/functions/find_template_spec.rb +0 -69
  685. data/spec/unit/functions/flatten_spec.rb +0 -31
  686. data/spec/unit/functions/floor_spec.rb +0 -65
  687. data/spec/unit/functions/get_spec.rb +0 -135
  688. data/spec/unit/functions/getvar_spec.rb +0 -121
  689. data/spec/unit/functions/group_by_spec.rb +0 -40
  690. data/spec/unit/functions/hiera_spec.rb +0 -495
  691. data/spec/unit/functions/include_spec.rb +0 -186
  692. data/spec/unit/functions/index_spec.rb +0 -184
  693. data/spec/unit/functions/inline_epp_spec.rb +0 -114
  694. data/spec/unit/functions/join_spec.rb +0 -33
  695. data/spec/unit/functions/keys_spec.rb +0 -31
  696. data/spec/unit/functions/length_spec.rb +0 -50
  697. data/spec/unit/functions/lest_spec.rb +0 -34
  698. data/spec/unit/functions/logging_spec.rb +0 -62
  699. data/spec/unit/functions/lookup_fixture_spec.rb +0 -687
  700. data/spec/unit/functions/lookup_spec.rb +0 -3425
  701. data/spec/unit/functions/lstrip_spec.rb +0 -30
  702. data/spec/unit/functions/map_spec.rb +0 -163
  703. data/spec/unit/functions/match_spec.rb +0 -74
  704. data/spec/unit/functions/max_spec.rb +0 -129
  705. data/spec/unit/functions/min_spec.rb +0 -129
  706. data/spec/unit/functions/module_directory_spec.rb +0 -43
  707. data/spec/unit/functions/new_spec.rb +0 -776
  708. data/spec/unit/functions/next_spec.rb +0 -93
  709. data/spec/unit/functions/partition_spec.rb +0 -40
  710. data/spec/unit/functions/reduce_spec.rb +0 -85
  711. data/spec/unit/functions/regsubst_spec.rb +0 -114
  712. data/spec/unit/functions/require_spec.rb +0 -82
  713. data/spec/unit/functions/return_spec.rb +0 -105
  714. data/spec/unit/functions/reverse_each_spec.rb +0 -108
  715. data/spec/unit/functions/round_spec.rb +0 -41
  716. data/spec/unit/functions/rstrip_spec.rb +0 -30
  717. data/spec/unit/functions/scanf_spec.rb +0 -32
  718. data/spec/unit/functions/shared.rb +0 -94
  719. data/spec/unit/functions/size_spec.rb +0 -50
  720. data/spec/unit/functions/slice_spec.rb +0 -136
  721. data/spec/unit/functions/sort_spec.rb +0 -79
  722. data/spec/unit/functions/split_spec.rb +0 -59
  723. data/spec/unit/functions/step_spec.rb +0 -113
  724. data/spec/unit/functions/strftime_spec.rb +0 -152
  725. data/spec/unit/functions/strip_spec.rb +0 -30
  726. data/spec/unit/functions/then_spec.rb +0 -40
  727. data/spec/unit/functions/tree_each_spec.rb +0 -493
  728. data/spec/unit/functions/type_spec.rb +0 -35
  729. data/spec/unit/functions/unique_spec.rb +0 -111
  730. data/spec/unit/functions/unwrap_spec.rb +0 -37
  731. data/spec/unit/functions/upcase_spec.rb +0 -34
  732. data/spec/unit/functions/values_spec.rb +0 -30
  733. data/spec/unit/functions/versioncmp_spec.rb +0 -70
  734. data/spec/unit/functions/with_spec.rb +0 -31
  735. data/spec/unit/functions4_spec.rb +0 -1046
  736. data/spec/unit/gettext/config_spec.rb +0 -156
  737. data/spec/unit/gettext/module_loading_spec.rb +0 -53
  738. data/spec/unit/graph/key_spec.rb +0 -41
  739. data/spec/unit/graph/rb_tree_map_spec.rb +0 -570
  740. data/spec/unit/graph/relationship_graph_spec.rb +0 -401
  741. data/spec/unit/graph/sequential_prioritizer_spec.rb +0 -32
  742. data/spec/unit/graph/simple_graph_spec.rb +0 -759
  743. data/spec/unit/hiera/scope_spec.rb +0 -100
  744. data/spec/unit/hiera_puppet_spec.rb +0 -159
  745. data/spec/unit/http/client_spec.rb +0 -937
  746. data/spec/unit/http/dns_spec.rb +0 -281
  747. data/spec/unit/http/external_client_spec.rb +0 -201
  748. data/spec/unit/http/factory_spec.rb +0 -160
  749. data/spec/unit/http/pool_entry_spec.rb +0 -49
  750. data/spec/unit/http/pool_spec.rb +0 -401
  751. data/spec/unit/http/proxy_spec.rb +0 -347
  752. data/spec/unit/http/resolver_spec.rb +0 -133
  753. data/spec/unit/http/response_spec.rb +0 -75
  754. data/spec/unit/http/service/ca_spec.rb +0 -198
  755. data/spec/unit/http/service/compiler_spec.rb +0 -744
  756. data/spec/unit/http/service/file_server_spec.rb +0 -307
  757. data/spec/unit/http/service/puppetserver_spec.rb +0 -112
  758. data/spec/unit/http/service/report_spec.rb +0 -117
  759. data/spec/unit/http/service_spec.rb +0 -143
  760. data/spec/unit/http/session_spec.rb +0 -309
  761. data/spec/unit/http/site_spec.rb +0 -96
  762. data/spec/unit/indirector/catalog/compiler_spec.rb +0 -1237
  763. data/spec/unit/indirector/catalog/json_spec.rb +0 -66
  764. data/spec/unit/indirector/catalog/msgpack_spec.rb +0 -11
  765. data/spec/unit/indirector/catalog/rest_spec.rb +0 -91
  766. data/spec/unit/indirector/catalog/store_configs_spec.rb +0 -16
  767. data/spec/unit/indirector/catalog/yaml_spec.rb +0 -23
  768. data/spec/unit/indirector/data_binding/hiera_spec.rb +0 -19
  769. data/spec/unit/indirector/data_binding/none_spec.rb +0 -28
  770. data/spec/unit/indirector/direct_file_server_spec.rb +0 -87
  771. data/spec/unit/indirector/envelope_spec.rb +0 -32
  772. data/spec/unit/indirector/exec_spec.rb +0 -63
  773. data/spec/unit/indirector/face_spec.rb +0 -82
  774. data/spec/unit/indirector/facts/facter_spec.rb +0 -290
  775. data/spec/unit/indirector/facts/json_spec.rb +0 -255
  776. data/spec/unit/indirector/facts/network_device_spec.rb +0 -77
  777. data/spec/unit/indirector/facts/rest_spec.rb +0 -99
  778. data/spec/unit/indirector/facts/store_configs_spec.rb +0 -16
  779. data/spec/unit/indirector/facts/yaml_spec.rb +0 -255
  780. data/spec/unit/indirector/file_bucket_file/file_spec.rb +0 -426
  781. data/spec/unit/indirector/file_bucket_file/rest_spec.rb +0 -89
  782. data/spec/unit/indirector/file_bucket_file/selector_spec.rb +0 -46
  783. data/spec/unit/indirector/file_content/file_server_spec.rb +0 -13
  784. data/spec/unit/indirector/file_content/file_spec.rb +0 -13
  785. data/spec/unit/indirector/file_content/rest_spec.rb +0 -60
  786. data/spec/unit/indirector/file_content/selector_spec.rb +0 -9
  787. data/spec/unit/indirector/file_metadata/file_server_spec.rb +0 -13
  788. data/spec/unit/indirector/file_metadata/file_spec.rb +0 -57
  789. data/spec/unit/indirector/file_metadata/http_spec.rb +0 -194
  790. data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -116
  791. data/spec/unit/indirector/file_metadata/selector_spec.rb +0 -10
  792. data/spec/unit/indirector/file_server_spec.rb +0 -288
  793. data/spec/unit/indirector/hiera_spec.rb +0 -17
  794. data/spec/unit/indirector/indirection_spec.rb +0 -916
  795. data/spec/unit/indirector/json_spec.rb +0 -200
  796. data/spec/unit/indirector/memory_spec.rb +0 -26
  797. data/spec/unit/indirector/msgpack_spec.rb +0 -199
  798. data/spec/unit/indirector/node/exec_spec.rb +0 -107
  799. data/spec/unit/indirector/node/json_spec.rb +0 -33
  800. data/spec/unit/indirector/node/memory_spec.rb +0 -16
  801. data/spec/unit/indirector/node/msgpack_spec.rb +0 -23
  802. data/spec/unit/indirector/node/plain_spec.rb +0 -34
  803. data/spec/unit/indirector/node/rest_spec.rb +0 -66
  804. data/spec/unit/indirector/node/store_configs_spec.rb +0 -16
  805. data/spec/unit/indirector/node/yaml_spec.rb +0 -23
  806. data/spec/unit/indirector/none_spec.rb +0 -33
  807. data/spec/unit/indirector/plain_spec.rb +0 -26
  808. data/spec/unit/indirector/report/json_spec.rb +0 -72
  809. data/spec/unit/indirector/report/msgpack_spec.rb +0 -27
  810. data/spec/unit/indirector/report/processor_spec.rb +0 -99
  811. data/spec/unit/indirector/report/rest_spec.rb +0 -84
  812. data/spec/unit/indirector/report/yaml_spec.rb +0 -91
  813. data/spec/unit/indirector/request_spec.rb +0 -295
  814. data/spec/unit/indirector/resource/ral_spec.rb +0 -89
  815. data/spec/unit/indirector/resource/store_configs_spec.rb +0 -20
  816. data/spec/unit/indirector/rest_spec.rb +0 -149
  817. data/spec/unit/indirector/terminus_spec.rb +0 -264
  818. data/spec/unit/indirector/yaml_spec.rb +0 -188
  819. data/spec/unit/indirector_spec.rb +0 -148
  820. data/spec/unit/info_service_spec.rb +0 -575
  821. data/spec/unit/interface/action_builder_spec.rb +0 -216
  822. data/spec/unit/interface/action_manager_spec.rb +0 -254
  823. data/spec/unit/interface/action_spec.rb +0 -670
  824. data/spec/unit/interface/documentation_spec.rb +0 -32
  825. data/spec/unit/interface/face_collection_spec.rb +0 -219
  826. data/spec/unit/interface/option_builder_spec.rb +0 -86
  827. data/spec/unit/interface/option_spec.rb +0 -156
  828. data/spec/unit/interface_spec.rb +0 -305
  829. data/spec/unit/module_spec.rb +0 -989
  830. data/spec/unit/module_tool/application_spec.rb +0 -25
  831. data/spec/unit/module_tool/applications/checksummer_spec.rb +0 -115
  832. data/spec/unit/module_tool/applications/installer_spec.rb +0 -473
  833. data/spec/unit/module_tool/applications/uninstaller_spec.rb +0 -181
  834. data/spec/unit/module_tool/applications/unpacker_spec.rb +0 -75
  835. data/spec/unit/module_tool/applications/upgrader_spec.rb +0 -337
  836. data/spec/unit/module_tool/install_directory_spec.rb +0 -70
  837. data/spec/unit/module_tool/installed_modules_spec.rb +0 -49
  838. data/spec/unit/module_tool/metadata_spec.rb +0 -330
  839. data/spec/unit/module_tool/tar/gnu_spec.rb +0 -23
  840. data/spec/unit/module_tool/tar/mini_spec.rb +0 -109
  841. data/spec/unit/module_tool/tar_spec.rb +0 -36
  842. data/spec/unit/module_tool_spec.rb +0 -304
  843. data/spec/unit/network/authconfig_spec.rb +0 -8
  844. data/spec/unit/network/authorization_spec.rb +0 -8
  845. data/spec/unit/network/format_handler_spec.rb +0 -93
  846. data/spec/unit/network/format_spec.rb +0 -205
  847. data/spec/unit/network/format_support_spec.rb +0 -199
  848. data/spec/unit/network/formats_spec.rb +0 -584
  849. data/spec/unit/network/http/api/indirected_routes_spec.rb +0 -425
  850. data/spec/unit/network/http/api/master_spec.rb +0 -38
  851. data/spec/unit/network/http/api/server/v3/environments_spec.rb +0 -51
  852. data/spec/unit/network/http/api/server/v3_spec.rb +0 -78
  853. data/spec/unit/network/http/api_spec.rb +0 -109
  854. data/spec/unit/network/http/connection_spec.rb +0 -636
  855. data/spec/unit/network/http/error_spec.rb +0 -30
  856. data/spec/unit/network/http/handler_spec.rb +0 -164
  857. data/spec/unit/network/http/request_spec.rb +0 -108
  858. data/spec/unit/network/http/response_spec.rb +0 -106
  859. data/spec/unit/network/http/route_spec.rb +0 -90
  860. data/spec/unit/network/http_pool_spec.rb +0 -145
  861. data/spec/unit/network/uri_spec.rb +0 -47
  862. data/spec/unit/node/environment_spec.rb +0 -612
  863. data/spec/unit/node/facts_spec.rb +0 -225
  864. data/spec/unit/node_spec.rb +0 -434
  865. data/spec/unit/other/selinux_spec.rb +0 -27
  866. data/spec/unit/parameter/boolean_spec.rb +0 -35
  867. data/spec/unit/parameter/package_options_spec.rb +0 -43
  868. data/spec/unit/parameter/path_spec.rb +0 -23
  869. data/spec/unit/parameter/value_collection_spec.rb +0 -160
  870. data/spec/unit/parameter/value_spec.rb +0 -82
  871. data/spec/unit/parameter_spec.rb +0 -272
  872. data/spec/unit/parser/ast/block_expression_spec.rb +0 -66
  873. data/spec/unit/parser/ast/leaf_spec.rb +0 -136
  874. data/spec/unit/parser/compiler_spec.rb +0 -1020
  875. data/spec/unit/parser/files_spec.rb +0 -101
  876. data/spec/unit/parser/functions/create_resources_spec.rb +0 -326
  877. data/spec/unit/parser/functions/digest_spec.rb +0 -26
  878. data/spec/unit/parser/functions/fail_spec.rb +0 -23
  879. data/spec/unit/parser/functions/file_spec.rb +0 -99
  880. data/spec/unit/parser/functions/fqdn_rand_spec.rb +0 -87
  881. data/spec/unit/parser/functions/generate_spec.rb +0 -124
  882. data/spec/unit/parser/functions/hiera_array_spec.rb +0 -12
  883. data/spec/unit/parser/functions/hiera_hash_spec.rb +0 -12
  884. data/spec/unit/parser/functions/hiera_include_spec.rb +0 -12
  885. data/spec/unit/parser/functions/hiera_spec.rb +0 -12
  886. data/spec/unit/parser/functions/inline_template_spec.rb +0 -36
  887. data/spec/unit/parser/functions/lookup_spec.rb +0 -14
  888. data/spec/unit/parser/functions/realize_spec.rb +0 -70
  889. data/spec/unit/parser/functions/regsubst_spec.rb +0 -19
  890. data/spec/unit/parser/functions/scanf_spec.rb +0 -25
  891. data/spec/unit/parser/functions/shellquote_spec.rb +0 -66
  892. data/spec/unit/parser/functions/split_spec.rb +0 -13
  893. data/spec/unit/parser/functions/sprintf_spec.rb +0 -68
  894. data/spec/unit/parser/functions/tag_spec.rb +0 -30
  895. data/spec/unit/parser/functions/tagged_spec.rb +0 -36
  896. data/spec/unit/parser/functions/template_spec.rb +0 -93
  897. data/spec/unit/parser/functions/versioncmp_spec.rb +0 -28
  898. data/spec/unit/parser/functions_spec.rb +0 -156
  899. data/spec/unit/parser/relationship_spec.rb +0 -74
  900. data/spec/unit/parser/resource/param_spec.rb +0 -32
  901. data/spec/unit/parser/resource_spec.rb +0 -657
  902. data/spec/unit/parser/scope_spec.rb +0 -694
  903. data/spec/unit/parser/templatewrapper_spec.rb +0 -111
  904. data/spec/unit/parser/type_loader_spec.rb +0 -202
  905. data/spec/unit/plan_spec.rb +0 -65
  906. data/spec/unit/pops/adaptable_spec.rb +0 -139
  907. data/spec/unit/pops/benchmark_spec.rb +0 -123
  908. data/spec/unit/pops/containment_spec.rb +0 -0
  909. data/spec/unit/pops/evaluator/access_ops_spec.rb +0 -560
  910. data/spec/unit/pops/evaluator/arithmetic_ops_spec.rb +0 -309
  911. data/spec/unit/pops/evaluator/basic_expressions_spec.rb +0 -101
  912. data/spec/unit/pops/evaluator/collections_ops_spec.rb +0 -108
  913. data/spec/unit/pops/evaluator/comparison_ops_spec.rb +0 -267
  914. data/spec/unit/pops/evaluator/conditionals_spec.rb +0 -189
  915. data/spec/unit/pops/evaluator/deferred_resolver_spec.rb +0 -46
  916. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +0 -1634
  917. data/spec/unit/pops/evaluator/evaluator_rspec_helper.rb +0 -75
  918. data/spec/unit/pops/evaluator/json_strict_literal_evaluator_spec.rb +0 -63
  919. data/spec/unit/pops/evaluator/literal_evaluator_spec.rb +0 -43
  920. data/spec/unit/pops/evaluator/logical_ops_spec.rb +0 -89
  921. data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +0 -181
  922. data/spec/unit/pops/evaluator/string_interpolation_spec.rb +0 -43
  923. data/spec/unit/pops/evaluator/variables_spec.rb +0 -88
  924. data/spec/unit/pops/factory_rspec_helper.rb +0 -65
  925. data/spec/unit/pops/factory_spec.rb +0 -309
  926. data/spec/unit/pops/issues_spec.rb +0 -210
  927. data/spec/unit/pops/label_provider_spec.rb +0 -46
  928. data/spec/unit/pops/loaders/dependency_loader_spec.rb +0 -122
  929. data/spec/unit/pops/loaders/environment_loader_spec.rb +0 -172
  930. data/spec/unit/pops/loaders/loader_paths_spec.rb +0 -43
  931. data/spec/unit/pops/loaders/loader_spec.rb +0 -516
  932. data/spec/unit/pops/loaders/loaders_spec.rb +0 -863
  933. data/spec/unit/pops/loaders/module_loaders_spec.rb +0 -268
  934. data/spec/unit/pops/loaders/static_loader_spec.rb +0 -85
  935. data/spec/unit/pops/lookup/context_spec.rb +0 -333
  936. data/spec/unit/pops/lookup/interpolation_spec.rb +0 -377
  937. data/spec/unit/pops/lookup/lookup_spec.rb +0 -375
  938. data/spec/unit/pops/merge_strategy_spec.rb +0 -17
  939. data/spec/unit/pops/migration_spec.rb +0 -51
  940. data/spec/unit/pops/model/model_spec.rb +0 -41
  941. data/spec/unit/pops/model/pn_transformer_spec.rb +0 -56
  942. data/spec/unit/pops/parser/epp_parser_spec.rb +0 -115
  943. data/spec/unit/pops/parser/evaluating_parser_spec.rb +0 -89
  944. data/spec/unit/pops/parser/lexer2_spec.rb +0 -942
  945. data/spec/unit/pops/parser/locator_spec.rb +0 -86
  946. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -380
  947. data/spec/unit/pops/parser/parse_calls_spec.rb +0 -171
  948. data/spec/unit/pops/parser/parse_conditionals_spec.rb +0 -184
  949. data/spec/unit/pops/parser/parse_containers_spec.rb +0 -247
  950. data/spec/unit/pops/parser/parse_functions_spec.rb +0 -19
  951. data/spec/unit/pops/parser/parse_heredoc_spec.rb +0 -276
  952. data/spec/unit/pops/parser/parse_lambda_spec.rb +0 -19
  953. data/spec/unit/pops/parser/parse_plan_spec.rb +0 -47
  954. data/spec/unit/pops/parser/parse_resource_spec.rb +0 -328
  955. data/spec/unit/pops/parser/parser_rspec_helper.rb +0 -17
  956. data/spec/unit/pops/parser/parser_spec.rb +0 -211
  957. data/spec/unit/pops/parser/parsing_typed_parameters_spec.rb +0 -65
  958. data/spec/unit/pops/parser/pn_parser_spec.rb +0 -100
  959. data/spec/unit/pops/pn_spec.rb +0 -147
  960. data/spec/unit/pops/puppet_stack_spec.rb +0 -108
  961. data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -37
  962. data/spec/unit/pops/serialization/packer_spec.rb +0 -162
  963. data/spec/unit/pops/serialization/serialization_spec.rb +0 -458
  964. data/spec/unit/pops/serialization/to_from_hr_spec.rb +0 -637
  965. data/spec/unit/pops/serialization/to_stringified_spec.rb +0 -162
  966. data/spec/unit/pops/time/timespan_spec.rb +0 -121
  967. data/spec/unit/pops/time/timestamp_spec.rb +0 -13
  968. data/spec/unit/pops/types/class_loader_spec.rb +0 -10
  969. data/spec/unit/pops/types/deferred_spec.rb +0 -87
  970. data/spec/unit/pops/types/error_spec.rb +0 -207
  971. data/spec/unit/pops/types/iterable_spec.rb +0 -262
  972. data/spec/unit/pops/types/p_binary_type_spec.rb +0 -243
  973. data/spec/unit/pops/types/p_init_type_spec.rb +0 -383
  974. data/spec/unit/pops/types/p_object_type_spec.rb +0 -1730
  975. data/spec/unit/pops/types/p_sem_ver_type_spec.rb +0 -340
  976. data/spec/unit/pops/types/p_sensitive_type_spec.rb +0 -191
  977. data/spec/unit/pops/types/p_timespan_type_spec.rb +0 -323
  978. data/spec/unit/pops/types/p_timestamp_type_spec.rb +0 -391
  979. data/spec/unit/pops/types/p_type_set_type_spec.rb +0 -549
  980. data/spec/unit/pops/types/p_uri_type_spec.rb +0 -191
  981. data/spec/unit/pops/types/recursion_guard_spec.rb +0 -93
  982. data/spec/unit/pops/types/ruby_generator_spec.rb +0 -874
  983. data/spec/unit/pops/types/string_converter_spec.rb +0 -1202
  984. data/spec/unit/pops/types/task_spec.rb +0 -411
  985. data/spec/unit/pops/types/type_acceptor_spec.rb +0 -106
  986. data/spec/unit/pops/types/type_asserter_spec.rb +0 -43
  987. data/spec/unit/pops/types/type_calculator_spec.rb +0 -2504
  988. data/spec/unit/pops/types/type_factory_spec.rb +0 -322
  989. data/spec/unit/pops/types/type_formatter_spec.rb +0 -427
  990. data/spec/unit/pops/types/type_mismatch_describer_spec.rb +0 -424
  991. data/spec/unit/pops/types/type_parser_spec.rb +0 -445
  992. data/spec/unit/pops/types/types_spec.rb +0 -755
  993. data/spec/unit/pops/utils_spec.rb +0 -70
  994. data/spec/unit/pops/validation_spec.rb +0 -66
  995. data/spec/unit/pops/validator/validator_spec.rb +0 -1030
  996. data/spec/unit/pops/visitor_spec.rb +0 -93
  997. data/spec/unit/property/boolean_spec.rb +0 -24
  998. data/spec/unit/property/ensure_spec.rb +0 -11
  999. data/spec/unit/property/keyvalue_spec.rb +0 -259
  1000. data/spec/unit/property/list_spec.rb +0 -172
  1001. data/spec/unit/property/ordered_list_spec.rb +0 -59
  1002. data/spec/unit/property_spec.rb +0 -563
  1003. data/spec/unit/provider/README.markdown +0 -4
  1004. data/spec/unit/provider/aix_object_spec.rb +0 -821
  1005. data/spec/unit/provider/command_spec.rb +0 -62
  1006. data/spec/unit/provider/exec/posix_spec.rb +0 -232
  1007. data/spec/unit/provider/exec/shell_spec.rb +0 -53
  1008. data/spec/unit/provider/exec/windows_spec.rb +0 -105
  1009. data/spec/unit/provider/exec_spec.rb +0 -244
  1010. data/spec/unit/provider/file/posix_spec.rb +0 -230
  1011. data/spec/unit/provider/file/windows_spec.rb +0 -152
  1012. data/spec/unit/provider/group/aix_spec.rb +0 -91
  1013. data/spec/unit/provider/group/directoryservice_spec.rb +0 -33
  1014. data/spec/unit/provider/group/groupadd_spec.rb +0 -284
  1015. data/spec/unit/provider/group/ldap_spec.rb +0 -98
  1016. data/spec/unit/provider/group/pw_spec.rb +0 -78
  1017. data/spec/unit/provider/group/windows_adsi_spec.rb +0 -398
  1018. data/spec/unit/provider/ldap_spec.rb +0 -242
  1019. data/spec/unit/provider/nameservice/directoryservice_spec.rb +0 -157
  1020. data/spec/unit/provider/nameservice_spec.rb +0 -398
  1021. data/spec/unit/provider/package/aix_spec.rb +0 -158
  1022. data/spec/unit/provider/package/appdmg_spec.rb +0 -42
  1023. data/spec/unit/provider/package/apt_spec.rb +0 -302
  1024. data/spec/unit/provider/package/aptitude_spec.rb +0 -46
  1025. data/spec/unit/provider/package/aptrpm_spec.rb +0 -42
  1026. data/spec/unit/provider/package/base_spec.rb +0 -19
  1027. data/spec/unit/provider/package/dnf_spec.rb +0 -62
  1028. data/spec/unit/provider/package/dnfmodule_spec.rb +0 -276
  1029. data/spec/unit/provider/package/dpkg_spec.rb +0 -444
  1030. data/spec/unit/provider/package/freebsd_spec.rb +0 -51
  1031. data/spec/unit/provider/package/gem_spec.rb +0 -487
  1032. data/spec/unit/provider/package/hpux_spec.rb +0 -48
  1033. data/spec/unit/provider/package/macports_spec.rb +0 -142
  1034. data/spec/unit/provider/package/nim_spec.rb +0 -267
  1035. data/spec/unit/provider/package/openbsd_spec.rb +0 -417
  1036. data/spec/unit/provider/package/opkg_spec.rb +0 -180
  1037. data/spec/unit/provider/package/pacman_spec.rb +0 -438
  1038. data/spec/unit/provider/package/pip2_spec.rb +0 -38
  1039. data/spec/unit/provider/package/pip3_spec.rb +0 -38
  1040. data/spec/unit/provider/package/pip_spec.rb +0 -504
  1041. data/spec/unit/provider/package/pkg_spec.rb +0 -473
  1042. data/spec/unit/provider/package/pkgdmg_spec.rb +0 -166
  1043. data/spec/unit/provider/package/pkgin_spec.rb +0 -185
  1044. data/spec/unit/provider/package/pkgng_spec.rb +0 -228
  1045. data/spec/unit/provider/package/pkgutil_spec.rb +0 -231
  1046. data/spec/unit/provider/package/portage_spec.rb +0 -226
  1047. data/spec/unit/provider/package/puppet_gem_spec.rb +0 -130
  1048. data/spec/unit/provider/package/puppetserver_gem_spec.rb +0 -139
  1049. data/spec/unit/provider/package/rpm_spec.rb +0 -674
  1050. data/spec/unit/provider/package/sun_spec.rb +0 -112
  1051. data/spec/unit/provider/package/tdnf_spec.rb +0 -15
  1052. data/spec/unit/provider/package/up2date_spec.rb +0 -22
  1053. data/spec/unit/provider/package/urpmi_spec.rb +0 -84
  1054. data/spec/unit/provider/package/windows/exe_package_spec.rb +0 -114
  1055. data/spec/unit/provider/package/windows/msi_package_spec.rb +0 -111
  1056. data/spec/unit/provider/package/windows/package_spec.rb +0 -180
  1057. data/spec/unit/provider/package/windows_spec.rb +0 -272
  1058. data/spec/unit/provider/package/yum_spec.rb +0 -512
  1059. data/spec/unit/provider/package/zypper_spec.rb +0 -327
  1060. data/spec/unit/provider/package_targetable_spec.rb +0 -60
  1061. data/spec/unit/provider/parsedfile_spec.rb +0 -263
  1062. data/spec/unit/provider/service/base_spec.rb +0 -109
  1063. data/spec/unit/provider/service/bsd_spec.rb +0 -127
  1064. data/spec/unit/provider/service/daemontools_spec.rb +0 -190
  1065. data/spec/unit/provider/service/debian_spec.rb +0 -158
  1066. data/spec/unit/provider/service/freebsd_spec.rb +0 -92
  1067. data/spec/unit/provider/service/gentoo_spec.rb +0 -250
  1068. data/spec/unit/provider/service/init_spec.rb +0 -316
  1069. data/spec/unit/provider/service/launchd_spec.rb +0 -425
  1070. data/spec/unit/provider/service/openbsd_spec.rb +0 -196
  1071. data/spec/unit/provider/service/openrc_spec.rb +0 -231
  1072. data/spec/unit/provider/service/openwrt_spec.rb +0 -101
  1073. data/spec/unit/provider/service/rcng_spec.rb +0 -40
  1074. data/spec/unit/provider/service/redhat_spec.rb +0 -190
  1075. data/spec/unit/provider/service/runit_spec.rb +0 -164
  1076. data/spec/unit/provider/service/smf_spec.rb +0 -526
  1077. data/spec/unit/provider/service/src_spec.rb +0 -186
  1078. data/spec/unit/provider/service/systemd_spec.rb +0 -578
  1079. data/spec/unit/provider/service/upstart_spec.rb +0 -681
  1080. data/spec/unit/provider/service/windows_spec.rb +0 -475
  1081. data/spec/unit/provider/user/aix_spec.rb +0 -320
  1082. data/spec/unit/provider/user/directoryservice_spec.rb +0 -1256
  1083. data/spec/unit/provider/user/hpux_spec.rb +0 -72
  1084. data/spec/unit/provider/user/ldap_spec.rb +0 -286
  1085. data/spec/unit/provider/user/openbsd_spec.rb +0 -76
  1086. data/spec/unit/provider/user/pw_spec.rb +0 -252
  1087. data/spec/unit/provider/user/user_role_add_spec.rb +0 -374
  1088. data/spec/unit/provider/user/useradd_spec.rb +0 -849
  1089. data/spec/unit/provider/user/windows_adsi_spec.rb +0 -407
  1090. data/spec/unit/provider_spec.rb +0 -904
  1091. data/spec/unit/puppet_pal_2pec.rb +0 -1033
  1092. data/spec/unit/puppet_pal_catalog_spec.rb +0 -962
  1093. data/spec/unit/puppet_pal_spec.rb +0 -3
  1094. data/spec/unit/puppet_spec.rb +0 -127
  1095. data/spec/unit/relationship_spec.rb +0 -202
  1096. data/spec/unit/reports/http_spec.rb +0 -119
  1097. data/spec/unit/reports/store_spec.rb +0 -67
  1098. data/spec/unit/reports_spec.rb +0 -68
  1099. data/spec/unit/resource/catalog_spec.rb +0 -1151
  1100. data/spec/unit/resource/status_spec.rb +0 -216
  1101. data/spec/unit/resource/type_collection_spec.rb +0 -332
  1102. data/spec/unit/resource/type_spec.rb +0 -876
  1103. data/spec/unit/resource_spec.rb +0 -1189
  1104. data/spec/unit/scheduler/job_spec.rb +0 -78
  1105. data/spec/unit/scheduler/scheduler_spec.rb +0 -115
  1106. data/spec/unit/scheduler/splay_job_spec.rb +0 -34
  1107. data/spec/unit/settings/array_setting_spec.rb +0 -39
  1108. data/spec/unit/settings/autosign_setting_spec.rb +0 -104
  1109. data/spec/unit/settings/certificate_revocation_setting_spec.rb +0 -37
  1110. data/spec/unit/settings/config_file_spec.rb +0 -147
  1111. data/spec/unit/settings/directory_setting_spec.rb +0 -27
  1112. data/spec/unit/settings/duration_setting_spec.rb +0 -48
  1113. data/spec/unit/settings/enum_setting_spec.rb +0 -27
  1114. data/spec/unit/settings/environment_conf_spec.rb +0 -133
  1115. data/spec/unit/settings/file_setting_spec.rb +0 -344
  1116. data/spec/unit/settings/http_extra_headers_spec.rb +0 -62
  1117. data/spec/unit/settings/ini_file_spec.rb +0 -550
  1118. data/spec/unit/settings/integer_setting_spec.rb +0 -42
  1119. data/spec/unit/settings/path_setting_spec.rb +0 -29
  1120. data/spec/unit/settings/port_setting_spec.rb +0 -31
  1121. data/spec/unit/settings/priority_setting_spec.rb +0 -65
  1122. data/spec/unit/settings/server_list_setting_spec.rb +0 -21
  1123. data/spec/unit/settings/string_setting_spec.rb +0 -74
  1124. data/spec/unit/settings/terminus_setting_spec.rb +0 -27
  1125. data/spec/unit/settings/value_translator_spec.rb +0 -75
  1126. data/spec/unit/settings_spec.rb +0 -2343
  1127. data/spec/unit/ssl/base_spec.rb +0 -125
  1128. data/spec/unit/ssl/certificate_request_attributes_spec.rb +0 -80
  1129. data/spec/unit/ssl/certificate_request_spec.rb +0 -369
  1130. data/spec/unit/ssl/certificate_signer_spec.rb +0 -17
  1131. data/spec/unit/ssl/certificate_spec.rb +0 -183
  1132. data/spec/unit/ssl/digest_spec.rb +0 -34
  1133. data/spec/unit/ssl/oids_spec.rb +0 -73
  1134. data/spec/unit/ssl/ssl_provider_spec.rb +0 -632
  1135. data/spec/unit/ssl/state_machine_spec.rb +0 -982
  1136. data/spec/unit/ssl/verifier_spec.rb +0 -102
  1137. data/spec/unit/task_spec.rb +0 -345
  1138. data/spec/unit/test/test_helper_spec.rb +0 -17
  1139. data/spec/unit/transaction/additional_resource_generator_spec.rb +0 -534
  1140. data/spec/unit/transaction/event_manager_spec.rb +0 -365
  1141. data/spec/unit/transaction/event_spec.rb +0 -198
  1142. data/spec/unit/transaction/persistence_spec.rb +0 -276
  1143. data/spec/unit/transaction/report_spec.rb +0 -740
  1144. data/spec/unit/transaction/resource_harness_spec.rb +0 -625
  1145. data/spec/unit/transaction_spec.rb +0 -1037
  1146. data/spec/unit/type/README.markdown +0 -4
  1147. data/spec/unit/type/component_spec.rb +0 -52
  1148. data/spec/unit/type/exec_spec.rb +0 -945
  1149. data/spec/unit/type/file/checksum_spec.rb +0 -104
  1150. data/spec/unit/type/file/checksum_value_spec.rb +0 -285
  1151. data/spec/unit/type/file/content_spec.rb +0 -440
  1152. data/spec/unit/type/file/ctime_spec.rb +0 -33
  1153. data/spec/unit/type/file/ensure_spec.rb +0 -121
  1154. data/spec/unit/type/file/group_spec.rb +0 -65
  1155. data/spec/unit/type/file/mode_spec.rb +0 -220
  1156. data/spec/unit/type/file/mtime_spec.rb +0 -33
  1157. data/spec/unit/type/file/owner_spec.rb +0 -63
  1158. data/spec/unit/type/file/selinux_spec.rb +0 -86
  1159. data/spec/unit/type/file/source_spec.rb +0 -730
  1160. data/spec/unit/type/file/type_spec.rb +0 -18
  1161. data/spec/unit/type/file_spec.rb +0 -1746
  1162. data/spec/unit/type/filebucket_spec.rb +0 -104
  1163. data/spec/unit/type/group_spec.rb +0 -105
  1164. data/spec/unit/type/noop_metaparam_spec.rb +0 -37
  1165. data/spec/unit/type/package/package_settings_spec.rb +0 -156
  1166. data/spec/unit/type/package_spec.rb +0 -396
  1167. data/spec/unit/type/resources_spec.rb +0 -362
  1168. data/spec/unit/type/schedule_spec.rb +0 -621
  1169. data/spec/unit/type/service_spec.rb +0 -458
  1170. data/spec/unit/type/stage_spec.rb +0 -7
  1171. data/spec/unit/type/tidy_spec.rb +0 -493
  1172. data/spec/unit/type/user_spec.rb +0 -553
  1173. data/spec/unit/type/whit_spec.rb +0 -9
  1174. data/spec/unit/type_spec.rb +0 -1473
  1175. data/spec/unit/util/at_fork_spec.rb +0 -150
  1176. data/spec/unit/util/autoload_spec.rb +0 -330
  1177. data/spec/unit/util/backups_spec.rb +0 -130
  1178. data/spec/unit/util/character_encoding_spec.rb +0 -186
  1179. data/spec/unit/util/checksums_spec.rb +0 -223
  1180. data/spec/unit/util/colors_spec.rb +0 -44
  1181. data/spec/unit/util/command_line_spec.rb +0 -200
  1182. data/spec/unit/util/command_line_utils/puppet_option_parser_spec.rb +0 -129
  1183. data/spec/unit/util/constant_inflector_spec.rb +0 -55
  1184. data/spec/unit/util/diff_spec.rb +0 -46
  1185. data/spec/unit/util/docs_spec.rb +0 -100
  1186. data/spec/unit/util/errors_spec.rb +0 -36
  1187. data/spec/unit/util/execution_spec.rb +0 -943
  1188. data/spec/unit/util/execution_stub_spec.rb +0 -38
  1189. data/spec/unit/util/feature_spec.rb +0 -129
  1190. data/spec/unit/util/filetype_spec.rb +0 -223
  1191. data/spec/unit/util/inifile_spec.rb +0 -510
  1192. data/spec/unit/util/json_lockfile_spec.rb +0 -48
  1193. data/spec/unit/util/json_spec.rb +0 -126
  1194. data/spec/unit/util/ldap/connection_spec.rb +0 -162
  1195. data/spec/unit/util/ldap/generator_spec.rb +0 -49
  1196. data/spec/unit/util/ldap/manager_spec.rb +0 -612
  1197. data/spec/unit/util/lockfile_spec.rb +0 -117
  1198. data/spec/unit/util/log/destinations_spec.rb +0 -258
  1199. data/spec/unit/util/log_spec.rb +0 -479
  1200. data/spec/unit/util/logging_spec.rb +0 -618
  1201. data/spec/unit/util/metric_spec.rb +0 -89
  1202. data/spec/unit/util/monkey_patches_spec.rb +0 -137
  1203. data/spec/unit/util/multi_match_spec.rb +0 -38
  1204. data/spec/unit/util/network_device/config_spec.rb +0 -91
  1205. data/spec/unit/util/network_device/transport/base_spec.rb +0 -40
  1206. data/spec/unit/util/network_device_spec.rb +0 -43
  1207. data/spec/unit/util/package/version/debian_spec.rb +0 -83
  1208. data/spec/unit/util/package/version/pip_spec.rb +0 -464
  1209. data/spec/unit/util/package/version/range_spec.rb +0 -175
  1210. data/spec/unit/util/package/version/rpm_spec.rb +0 -121
  1211. data/spec/unit/util/package_spec.rb +0 -19
  1212. data/spec/unit/util/pidlock_spec.rb +0 -333
  1213. data/spec/unit/util/plist_spec.rb +0 -168
  1214. data/spec/unit/util/posix_spec.rb +0 -630
  1215. data/spec/unit/util/profiler/aggregate_spec.rb +0 -55
  1216. data/spec/unit/util/profiler/around_profiler_spec.rb +0 -61
  1217. data/spec/unit/util/profiler/logging_spec.rb +0 -70
  1218. data/spec/unit/util/profiler/object_counts_spec.rb +0 -13
  1219. data/spec/unit/util/profiler/wall_clock_spec.rb +0 -13
  1220. data/spec/unit/util/profiler_spec.rb +0 -47
  1221. data/spec/unit/util/rdoc_spec.rb +0 -55
  1222. data/spec/unit/util/reference_spec.rb +0 -38
  1223. data/spec/unit/util/resource_template_spec.rb +0 -57
  1224. data/spec/unit/util/retry_action_spec.rb +0 -84
  1225. data/spec/unit/util/rpm_compare_spec.rb +0 -196
  1226. data/spec/unit/util/rubygems_spec.rb +0 -47
  1227. data/spec/unit/util/run_mode_spec.rb +0 -217
  1228. data/spec/unit/util/selinux_spec.rb +0 -422
  1229. data/spec/unit/util/skip_tags_spec.rb +0 -14
  1230. data/spec/unit/util/splayer_spec.rb +0 -44
  1231. data/spec/unit/util/storage_spec.rb +0 -330
  1232. data/spec/unit/util/suidmanager_spec.rb +0 -278
  1233. data/spec/unit/util/symbolic_file_mode_spec.rb +0 -180
  1234. data/spec/unit/util/tag_set_spec.rb +0 -52
  1235. data/spec/unit/util/tagging_spec.rb +0 -246
  1236. data/spec/unit/util/terminal_spec.rb +0 -41
  1237. data/spec/unit/util/user_attr_spec.rb +0 -45
  1238. data/spec/unit/util/warnings_spec.rb +0 -45
  1239. data/spec/unit/util/watched_file_spec.rb +0 -52
  1240. data/spec/unit/util/watcher/periodic_watcher_spec.rb +0 -52
  1241. data/spec/unit/util/watcher_spec.rb +0 -86
  1242. data/spec/unit/util/windows/access_control_entry_spec.rb +0 -66
  1243. data/spec/unit/util/windows/access_control_list_spec.rb +0 -132
  1244. data/spec/unit/util/windows/adsi_spec.rb +0 -704
  1245. data/spec/unit/util/windows/api_types_spec.rb +0 -184
  1246. data/spec/unit/util/windows/eventlog_spec.rb +0 -120
  1247. data/spec/unit/util/windows/file_spec.rb +0 -88
  1248. data/spec/unit/util/windows/root_certs_spec.rb +0 -16
  1249. data/spec/unit/util/windows/security_descriptor_spec.rb +0 -115
  1250. data/spec/unit/util/windows/service_spec.rb +0 -677
  1251. data/spec/unit/util/windows/sid_spec.rb +0 -338
  1252. data/spec/unit/util/windows/string_spec.rb +0 -55
  1253. data/spec/unit/util/windows_spec.rb +0 -23
  1254. data/spec/unit/util/yaml_spec.rb +0 -171
  1255. data/spec/unit/util_spec.rb +0 -954
  1256. data/spec/unit/version_spec.rb +0 -61
  1257. data/spec/unit/x509/cert_provider_spec.rb +0 -614
  1258. data/spec/unit/x509/pem_store_spec.rb +0 -160
@@ -1,1256 +0,0 @@
1
- # encoding: ASCII-8BIT
2
- require 'spec_helper'
3
-
4
- module Puppet::Util::Plist
5
- end
6
-
7
- describe Puppet::Type.type(:user).provider(:directoryservice) do
8
- let(:username) { 'nonexistent_user' }
9
- let(:user_path) { "/Users/#{username}" }
10
- let(:resource) do
11
- Puppet::Type.type(:user).new(
12
- :name => username,
13
- :provider => :directoryservice
14
- )
15
- end
16
- let(:provider) { resource.provider }
17
- let(:users_plist_dir) { '/var/db/dslocal/nodes/Default/users' }
18
-
19
- # This is the output of doing `dscl -plist . read /Users/<username>` which
20
- # will return a hash of keys whose values are all arrays.
21
- let(:user_plist_xml) do
22
- '<?xml version="1.0" encoding="UTF-8"?>
23
- <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
24
- <plist version="1.0">
25
- <dict>
26
- <key>dsAttrTypeStandard:NFSHomeDirectory</key>
27
- <array>
28
- <string>/Users/nonexistent_user</string>
29
- </array>
30
- <key>dsAttrTypeStandard:RealName</key>
31
- <array>
32
- <string>nonexistent_user</string>
33
- </array>
34
- <key>dsAttrTypeStandard:PrimaryGroupID</key>
35
- <array>
36
- <string>22</string>
37
- </array>
38
- <key>dsAttrTypeStandard:UniqueID</key>
39
- <array>
40
- <string>1000</string>
41
- </array>
42
- <key>dsAttrTypeStandard:RecordName</key>
43
- <array>
44
- <string>nonexistent_user</string>
45
- </array>
46
- </dict>
47
- </plist>'
48
- end
49
-
50
- # This is the same as above, however in a native Ruby hash instead
51
- # of XML
52
- let(:user_plist_hash) do
53
- {
54
- "dsAttrTypeStandard:RealName" => [username],
55
- "dsAttrTypeStandard:NFSHomeDirectory" => [user_path],
56
- "dsAttrTypeStandard:PrimaryGroupID" => ["22"],
57
- "dsAttrTypeStandard:UniqueID" => ["1000"],
58
- "dsAttrTypeStandard:RecordName" => [username]
59
- }
60
- end
61
-
62
- let(:sha512_shadowhashdata_array) do
63
- ['62706c69 73743030 d101025d 53414c54 45442d53 48413531 324f1044 7ea7d592 131f57b2 c8f8bdbc '\
64
- 'ec8d9df1 2128a386 393a4f00 c7619bac 2622a44d 451419d1 1da512d5 915ab98e 39718ac9 4083fe2e '\
65
- 'fd6bf710 a54d477f 8ff735b1 2587192d 080b1900 00000000 00010100 00000000 00000300 00000000 '\
66
- '00000000 00000000 000060']
67
- end
68
- # The below value is the result of executing
69
- # `dscl -plist . read /Users/<username> ShadowHashData` on a 10.7
70
- # system and converting it to a native Ruby Hash with Plist.parse_xml
71
- let(:sha512_shadowhashdata_hash) do
72
- {
73
- 'dsAttrTypeNative:ShadowHashData' => sha512_shadowhashdata_array
74
- }
75
- end
76
-
77
- # The below is a binary plist that is stored in the ShadowHashData key
78
- # on a 10.7 system.
79
- let(:sha512_embedded_bplist) do
80
- "bplist00\321\001\002]SALTED-SHA512O\020D~\247\325\222\023\037W\262\310\370\275\274\354\215\235\361!(\243\2069:O\000\307a\233\254&\"\244ME\024\031\321\035\245\022\325\221Z\271\2169q\212\311@\203\376.\375k\367\020\245MG\177\217\3675\261%\207\031-\b\v\031\000\000\000\000\000\000\001\001\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000`"
81
- end
82
-
83
- # The below is a Base64 encoded string representing a salted-SHA512 password
84
- # hash.
85
- let(:sha512_pw_string) do
86
- "~\247\325\222\023\037W\262\310\370\275\274\354\215\235\361!(\243\2069:O\000\307a\233\254&\"\244ME\024\031\321\035\245\022\325\221Z\271\2169q\212\311@\203\376.\375k\367\020\245MG\177\217\3675\261%\207\031-"
87
- end
88
-
89
- # The below is the result of converting sha512_embedded_bplist to XML and
90
- # parsing it with Plist.parse_xml. It is a Ruby Hash whose value is a
91
- # Base64 encoded salted-SHA512 password hash.
92
- let(:sha512_embedded_bplist_hash) do
93
- { 'SALTED-SHA512' => sha512_pw_string }
94
- end
95
-
96
- # The value below is the result of converting sha512_pw_string to Hex.
97
- let(:sha512_password_hash) do
98
- '7ea7d592131f57b2c8f8bdbcec8d9df12128a386393a4f00c7619bac2622a44d451419d11da512d5915ab98e39718ac94083fe2efd6bf710a54d477f8ff735b12587192d'
99
- end
100
-
101
- let(:pbkdf2_shadowhashdata_array) do
102
- ['62706c69 73743030 d101025f 10145341 4c544544 2d534841 3531322d 50424b44 4632d303 04050607 '\
103
- '0857656e 74726f70 79547361 6c745a69 74657261 74696f6e 734f1080 0590ade1 9e6953c1 35ae872a '\
104
- 'e7761823 5df7d46c 63de7f9a 0fcdf2cd 9e7d85e4 b7ca8681 01235b61 58e05a30 9805ee48 14b027a4 '\
105
- 'be9c23ec 2926bc81 72269aff ba5c9a59 85e81091 fa689807 6d297f1f aa75fa61 7551ef16 71d75200 '\
106
- '55c4a0d9 7b9b9c58 05aa322b aedbcd8e e9c52381 1653ac2e a9e9c8d8 f1ac519a 0f2b595e 4f102093 '\
107
- '77c46908 a1c8ac2c 3e45c0d4 4da8ad0f cd85ec5c 14d9a59f fc40c9da 31f0ec11 60b0080b 22293136 '\
108
- '41c4e700 00000000 00010100 00000000 00000900 00000000 00000000 00000000 0000ea']
109
- end
110
- # The below value is the result of executing
111
- # `dscl -plist . read /Users/<username> ShadowHashData` on a 10.8
112
- # system and converting it to a native Ruby Hash with Plist.parse_xml
113
- let(:pbkdf2_shadowhashdata_hash) do
114
- {
115
- "dsAttrTypeNative:ShadowHashData"=> pbkdf2_shadowhashdata_array
116
- }
117
- end
118
-
119
- # The below value is the result of converting pbkdf2_embedded_bplist to XML and
120
- # parsing it with Plist.parse_xml.
121
- let(:pbkdf2_embedded_bplist_hash) do
122
- {
123
- 'SALTED-SHA512-PBKDF2' => {
124
- 'entropy' => pbkdf2_pw_string,
125
- 'salt' => pbkdf2_salt_string,
126
- 'iterations' => pbkdf2_iterations_value
127
- }
128
- }
129
- end
130
-
131
- # The value below is the result of converting pbkdf2_pw_string to Hex.
132
- let(:pbkdf2_password_hash) do
133
- '0590ade19e6953c135ae872ae77618235df7d46c63de7f9a0fcdf2cd9e7d85e4b7ca868101235b6158e05a309805ee4814b027a4be9c23ec2926bc8172269affba5c9a5985e81091fa6898076d297f1faa75fa617551ef1671d7520055c4a0d97b9b9c5805aa322baedbcd8ee9c523811653ac2ea9e9c8d8f1ac519a0f2b595e'
134
- end
135
-
136
- # The below is a binary plist that is stored in the ShadowHashData key
137
- # of a 10.8 system.
138
- let(:pbkdf2_embedded_plist) do
139
- "bplist00\321\001\002_\020\024SALTED-SHA512-PBKDF2\323\003\004\005\006\a\bWentropyTsaltZiterationsO\020\200\005\220\255\341\236iS\3015\256\207*\347v\030#]\367\324lc\336\177\232\017\315\362\315\236}\205\344\267\312\206\201\001#[aX\340Z0\230\005\356H\024\260'\244\276\234#\354)&\274\201r&\232\377\272\\\232Y\205\350\020\221\372h\230\am)\177\037\252u\372auQ\357\026q\327R\000U\304\240\331{\233\234X\005\2522+\256\333\315\216\351\305#\201\026S\254.\251\351\310\330\361\254Q\232\017+Y^O\020 \223w\304i\b\241\310\254,>E\300\324M\250\255\017\315\205\354\\\024\331\245\237\374@\311\3321\360\354\021`\260\b\v\")16A\304\347\000\000\000\000\000\000\001\001\000\000\000\000\000\000\000\t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\352"
140
- end
141
-
142
- # The below value is a Base64 encoded string representing a PBKDF2 password
143
- # hash.
144
- let(:pbkdf2_pw_string) do
145
- "\005\220\255\341\236iS\3015\256\207*\347v\030#]\367\324lc\336\177\232\017\315\362\315\236}\205\344\267\312\206\201\001#[aX\340Z0\230\005\356H\024\260'\244\276\234#\354)&\274\201r&\232\377\272\\\232Y\205\350\020\221\372h\230\am)\177\037\252u\372auQ\357\026q\327R\000U\304\240\331{\233\234X\005\2522+\256\333\315\216\351\305#\201\026S\254.\251\351\310\330\361\254Q\232\017+Y^"
146
- end
147
-
148
- # The below value is a Base64 encoded string representing a PBKDF2 salt
149
- # string.
150
- let(:pbkdf2_salt_string) do
151
- "\223w\304i\b\241\310\254,>E\300\324M\250\255\017\315\205\354\\\024\331\245\237\374@\311\3321\360\354"
152
- end
153
-
154
- # The below value represents the Hex value of a PBKDF2 salt string
155
- let(:pbkdf2_salt_value) do
156
- "9377c46908a1c8ac2c3e45c0d44da8ad0fcd85ec5c14d9a59ffc40c9da31f0ec"
157
- end
158
-
159
- # The below value is an Integer iterations value used in the PBKDF2
160
- # key stretching algorithm
161
- let(:pbkdf2_iterations_value) do
162
- 24752
163
- end
164
-
165
- let(:pbkdf2_and_ssha512_shadowhashdata_array) do
166
- ['62706c69 73743030 d2010203 0a5f1014 53414c54 45442d53 48413531 322d5042 4b444632 5d53414c '\
167
- '5445442d 53484135 3132d304 05060708 0957656e 74726f70 79547361 6c745a69 74657261 74696f6e '\
168
- '734f1080 0590ade1 9e6953c1 35ae872a e7761823 5df7d46c 63de7f9a 0fcdf2cd 9e7d85e4 b7ca8681 '\
169
- '01235b61 58e05a30 9805ee48 14b027a4 be9c23ec 2926bc81 72269aff ba5c9a59 85e81091 fa689807 '\
170
- '6d297f1f aa75fa61 7551ef16 71d75200 55c4a0d9 7b9b9c58 05aa322b aedbcd8e e9c52381 1653ac2e '\
171
- 'a9e9c8d8 f1ac519a 0f2b595e 4f102093 77c46908 a1c8ac2c 3e45c0d4 4da8ad0f cd85ec5c 14d9a59f '\
172
- 'fc40c9da 31f0ec11 60b04f10 447ea7d5 92131f57 b2c8f8bd bcec8d9d f12128a3 86393a4f 00c7619b '\
173
- 'ac2622a4 4d451419 d11da512 d5915ab9 8e39718a c94083fe 2efd6bf7 10a54d47 7f8ff735 b1258719 '\
174
- '2d000800 0d002400 32003900 41004600 5100d400 f700fa00 00000000 00020100 00000000 00000b00 '\
175
- '00000000 00000000 00000000 000141']
176
- end
177
-
178
- let(:pbkdf2_and_ssha512_shadowhashdata_hash) do
179
- {
180
- 'dsAttrTypeNative:ShadowHashData' => pbkdf2_and_ssha512_shadowhashdata_array
181
- }
182
- end
183
-
184
- let (:pbkdf2_and_ssha512_embedded_plist) do
185
- "bplist00\xD2\x01\x02\x03\n_\x10\x14SALTED-SHA512-PBKDF2]SALTED-SHA512\xD3\x04\x05\x06\a\b\tWentropyTsaltZiterationsO\x10\x80\x05\x90\xAD\xE1\x9EiS\xC15\xAE\x87*\xE7v\x18#]\xF7\xD4lc\xDE\x7F\x9A\x0F\xCD\xF2\xCD\x9E}\x85\xE4\xB7\xCA\x86\x81\x01#[aX\xE0Z0\x98\x05\xEEH\x14\xB0'\xA4\xBE\x9C#\xEC)&\xBC\x81r&\x9A\xFF\xBA\\\x9AY\x85\xE8\x10\x91\xFAh\x98\am)\x7F\x1F\xAAu\xFAauQ\xEF\x16q\xD7R\x00U\xC4\xA0\xD9{\x9B\x9CX\x05\xAA2+\xAE\xDB\xCD\x8E\xE9\xC5#\x81\x16S\xAC.\xA9\xE9\xC8\xD8\xF1\xACQ\x9A\x0F+Y^O\x10 \x93w\xC4i\b\xA1\xC8\xAC,>E\xC0\xD4M\xA8\xAD\x0F\xCD\x85\xEC\\\x14\xD9\xA5\x9F\xFC@\xC9\xDA1\xF0\xEC\x11`\xB0O\x10D~\xA7\xD5\x92\x13\x1FW\xB2\xC8\xF8\xBD\xBC\xEC\x8D\x9D\xF1!(\xA3\x869:O\x00\xC7a\x9B\xAC&\"\xA4ME\x14\x19\xD1\x1D\xA5\x12\xD5\x91Z\xB9\x8E9q\x8A\xC9@\x83\xFE.\xFDk\xF7\x10\xA5MG\x7F\x8F\xF75\xB1%\x87\x19-\x00\b\x00\r\x00$\x002\x009\x00A\x00F\x00Q\x00\xD4\x00\xF7\x00\xFA\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\x00\v\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01A"
186
- end
187
-
188
- let (:pbkdf2_and_ssha512_embedded_bplist_hash) do
189
- {
190
- "SALTED-SHA512-PBKDF2" => {
191
- "entropy" => pbkdf2_pw_string,
192
- "salt" => pbkdf2_salt_value,
193
- "iterations" => pbkdf2_iterations_value,
194
- },
195
- "SALTED-SHA512" => sha512_password_hash
196
- }
197
- end
198
-
199
- let (:dsimport_preamble) do
200
- '0x0A 0x5C 0x3A 0x2C dsRecTypeStandard:Users 2 dsAttrTypeStandard:RecordName base64:dsAttrTypeNative:ShadowHashData'
201
- end
202
-
203
- let (:dsimport_contents) do
204
- <<-DSIMPORT
205
- #{dsimport_preamble}
206
- #{username}:#{Base64.strict_encode64(sha512_embedded_bplist)}
207
- DSIMPORT
208
- end
209
-
210
- # The below represents output of 'dscl -plist . readall /Users' converted to
211
- # a native Ruby hash if only one user were installed on the system.
212
- # This lets us check the behavior of all the methods necessary to return a
213
- # user's groups property by controlling the data provided by dscl
214
- let(:testuser_base) do
215
- {
216
- "dsAttrTypeStandard:RecordName" =>["nonexistent_user"],
217
- "dsAttrTypeStandard:UniqueID" =>["1000"],
218
- "dsAttrTypeStandard:AuthenticationAuthority"=>
219
- [";Kerberosv5;;testuser@LKDC:SHA1.4383E152D9D394AA32D13AE98F6F6E1FE8D00F81;LKDC:SHA1.4383E152D9D394AA32D13AE98F6F6E1FE8D00F81",
220
- ";ShadowHash;HASHLIST:<SALTED-SHA512>"],
221
- "dsAttrTypeStandard:AppleMetaNodeLocation" =>["/Local/Default"],
222
- "dsAttrTypeStandard:NFSHomeDirectory" =>["/Users/nonexistent_user"],
223
- "dsAttrTypeStandard:RecordType" =>["dsRecTypeStandard:Users"],
224
- "dsAttrTypeStandard:RealName" =>["nonexistent_user"],
225
- "dsAttrTypeStandard:Password" =>["********"],
226
- "dsAttrTypeStandard:PrimaryGroupID" =>["22"],
227
- "dsAttrTypeStandard:GeneratedUID" =>["0A7D5B63-3AD4-4CA7-B03E-85876F1D1FB3"],
228
- "dsAttrTypeStandard:AuthenticationHint" =>[""],
229
- "dsAttrTypeNative:KerberosKeys" =>
230
- ["30820157 a1030201 02a08201 4e308201 4a3074a1 2b3029a0 03020112 a1220420 54af3992 1c198bf8 94585a6b 2fba445b c8482228 0dcad666 ea62e038 99e59c45 a2453043 a0030201 03a13c04 3a4c4b44 433a5348 41312e34 33383345 31353244 39443339 34414133 32443133 41453938 46364636 45314645 38443030 46383174 65737475 73657230 64a11b30 19a00302 0111a112 04106375 7d97b2ce ca8343a6 3b0f73d5 1001a245 3043a003 020103a1 3c043a4c 4b44433a 53484131 2e343338 33453135 32443944 33393441 41333244 31334145 39384636 46364531 46453844 30304638 31746573 74757365 72306ca1 233021a0 03020110 a11a0418 67b09be3 5131b670 f8e9265e 62459b4c 19435419 fe918519 a2453043 a0030201 03a13c04 3a4c4b44 433a5348 41312e34 33383345 31353244 39443339 34414133 32443133 41453938 46364636 45314645 38443030 46383174 65737475 736572"],
231
- "dsAttrTypeStandard:PasswordPolicyOptions" =>
232
- ["<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n <plist version=\"1.0\">\n <dict>\n <key>failedLoginCount</key>\n <integer>0</integer>\n <key>failedLoginTimestamp</key>\n <date>2001-01-01T00:00:00Z</date>\n <key>lastLoginTimestamp</key>\n <date>2001-01-01T00:00:00Z</date>\n <key>passwordTimestamp</key>\n <date>2012-08-10T23:53:50Z</date>\n </dict>\n </plist>\n "],
233
- "dsAttrTypeStandard:UserShell" =>["/bin/bash"],
234
- "dsAttrTypeNative:ShadowHashData" =>
235
- ["62706c69 73743030 d101025d 53414c54 45442d53 48413531 324f1044 7ea7d592 131f57b2 c8f8bdbc ec8d9df1 2128a386 393a4f00 c7619bac 2622a44d 451419d1 1da512d5 915ab98e 39718ac9 4083fe2e fd6bf710 a54d477f 8ff735b1 2587192d 080b1900 00000000 00010100 00000000 00000300 00000000 00000000 00000000 000060"]
236
- }
237
- end
238
- let(:testuser_hash) do
239
- [
240
- testuser_base.merge(sha512_shadowhashdata_hash),
241
- testuser_base.merge(pbkdf2_shadowhashdata_hash),
242
- ]
243
- end
244
-
245
- # The below represents the result of running Plist.parse_xml on XML
246
- # data returned from the `dscl -plist . readall /Groups` command.
247
- # (AKA: What the get_list_of_groups method returns)
248
- let(:group_plist_hash_guid) do
249
- [{
250
- 'dsAttrTypeStandard:RecordName' => ['testgroup'],
251
- 'dsAttrTypeStandard:GroupMembership' => [
252
- username,
253
- 'jeff',
254
- 'zack'
255
- ],
256
- 'dsAttrTypeStandard:GroupMembers' => [
257
- "guid#{username}",
258
- 'guidtestuser',
259
- 'guidjeff',
260
- 'guidzack'
261
- ],
262
- },
263
- {
264
- 'dsAttrTypeStandard:RecordName' => ['second'],
265
- 'dsAttrTypeStandard:GroupMembership' => [
266
- 'jeff',
267
- 'zack'
268
- ],
269
- 'dsAttrTypeStandard:GroupMembers' => [
270
- "guid#{username}",
271
- 'guidjeff',
272
- 'guidzack'
273
- ],
274
- },
275
- {
276
- 'dsAttrTypeStandard:RecordName' => ['third'],
277
- 'dsAttrTypeStandard:GroupMembership' => [
278
- username,
279
- 'jeff',
280
- 'zack'
281
- ],
282
- 'dsAttrTypeStandard:GroupMembers' => [
283
- "guid#{username}",
284
- 'guidtestuser',
285
- 'guidjeff',
286
- 'guidzack'
287
- ],
288
- }]
289
- end
290
-
291
-
292
- describe 'Creating a user that does not exist' do
293
- # These are the defaults that the provider will use if a user does
294
- # not provide a value
295
- let(:defaults) do
296
- {
297
- 'UniqueID' => '1000',
298
- 'RealName' => resource[:name],
299
- 'PrimaryGroupID' => 20,
300
- 'UserShell' => '/bin/bash',
301
- 'NFSHomeDirectory' => "/Users/#{resource[:name]}"
302
- }
303
- end
304
-
305
- before :each do
306
- # Stub out all calls to dscl with default values from above
307
- defaults.each do |key, val|
308
- allow(provider).to receive(:create_attribute_with_dscl).with('Users', username, key, val)
309
- end
310
-
311
- # Mock the rest of the dscl calls. We can't assume that our Linux
312
- # build system will have the dscl binary
313
- allow(provider).to receive(:create_new_user).with(username)
314
- allow(provider.class).to receive(:get_attribute_from_dscl).with('Users', username, 'GeneratedUID').and_return({'dsAttrTypeStandard:GeneratedUID' => ['GUID']})
315
- allow(provider).to receive(:next_system_id).and_return('1000')
316
- end
317
-
318
- it 'should not raise any errors when creating a user with default values' do
319
- provider.create
320
- end
321
-
322
- %w{password iterations salt}.each do |value|
323
- it "should call ##{value}= if a #{value} attribute is specified" do
324
- resource[value.intern] = 'somevalue'
325
- setter = (value << '=').intern
326
- expect(provider).to receive(setter).with('somevalue')
327
- provider.create
328
- end
329
- end
330
-
331
- it 'should merge the GroupMembership and GroupMembers dscl values if a groups attribute is specified' do
332
- resource[:groups] = 'somegroup'
333
- expect(provider).to receive(:merge_attribute_with_dscl).with('Groups', 'somegroup', 'GroupMembership', username)
334
- expect(provider).to receive(:merge_attribute_with_dscl).with('Groups', 'somegroup', 'GroupMembers', 'GUID')
335
- provider.create
336
- end
337
-
338
- it 'should convert group names into integers' do
339
- resource[:gid] = 'somegroup'
340
- expect(Puppet::Util).to receive(:gid).with('somegroup').and_return(21)
341
- expect(provider).to receive(:create_attribute_with_dscl).with('Users', username, 'PrimaryGroupID', 21)
342
- provider.create
343
- end
344
- end
345
-
346
- describe 'Update existing user' do
347
- describe 'home=' do
348
- context 'on OS X 10.14' do
349
- before do
350
- provider.instance_variable_set(:@property_hash, { home: 'value' })
351
- allow(provider.class).to receive(:get_os_version).and_return('10.14')
352
- end
353
-
354
- it 'raises error' do
355
- expect { provider.home = 'new' }.to \
356
- raise_error(Puppet::Error, "OS X version 10.14 does not allow changing home using puppet")
357
- end
358
- end
359
- end
360
-
361
- describe 'uid=' do
362
- context 'on OS X 10.14' do
363
- before do
364
- provider.instance_variable_set(:@property_hash, { uid: 'value' })
365
- allow(provider.class).to receive(:get_os_version).and_return('10.14')
366
- end
367
-
368
- it 'raises error' do
369
- expect { provider.uid = 'new' }.to \
370
- raise_error(Puppet::Error, "OS X version 10.14 does not allow changing uid using puppet")
371
- end
372
- end
373
- end
374
- end
375
-
376
- describe 'self#instances' do
377
- it 'should create an array of provider instances' do
378
- expect(provider.class).to receive(:get_all_users).and_return(['foo', 'bar'])
379
- ['foo', 'bar'].each do |user|
380
- expect(provider.class).to receive(:generate_attribute_hash).with(user).and_return({})
381
- end
382
- instances = provider.class.instances
383
-
384
- expect(instances).to be_a_kind_of Array
385
- instances.each do |instance|
386
- expect(instance).to be_a_kind_of Puppet::Provider
387
- end
388
- end
389
- end
390
-
391
- describe 'self#get_all_users', :if => Puppet.features.cfpropertylist? do
392
- let(:empty_plist) do
393
- '<?xml version="1.0" encoding="UTF-8"?>
394
- <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
395
- <plist version="1.0">
396
- <dict>
397
- </dict>
398
- </plist>'
399
- end
400
-
401
- it 'should return a hash of user attributes' do
402
- expect(provider.class).to receive(:dscl).with('-plist', '.', 'readall', '/Users').and_return(user_plist_xml)
403
- expect(provider.class.get_all_users).to eq(user_plist_hash)
404
- end
405
-
406
- it 'should return a hash when passed an empty plist' do
407
- expect(provider.class).to receive(:dscl).with('-plist', '.', 'readall', '/Users').and_return(empty_plist)
408
- expect(provider.class.get_all_users).to eq({})
409
- end
410
- end
411
-
412
- describe 'self#generate_attribute_hash' do
413
- let(:user_plist_resource) do
414
- {
415
- :ensure => :present,
416
- :provider => :directoryservice,
417
- :groups => 'testgroup,third',
418
- :comment => username,
419
- :password => sha512_password_hash,
420
- :shadowhashdata => sha512_shadowhashdata_array,
421
- :name => username,
422
- :uid => 1000,
423
- :gid => 22,
424
- :home => user_path
425
- }
426
- end
427
-
428
- before :each do
429
- allow(provider.class).to receive(:get_os_version).and_return('10.7')
430
- allow(provider.class).to receive(:get_all_users).and_return(testuser_hash)
431
- allow(provider.class).to receive(:get_list_of_groups).and_return(group_plist_hash_guid)
432
- allow(provider.class).to receive(:convert_binary_to_hash).with(sha512_embedded_bplist).and_return(sha512_embedded_bplist_hash)
433
- allow(provider.class).to receive(:convert_binary_to_hash).with(pbkdf2_embedded_plist).and_return(pbkdf2_embedded_bplist_hash)
434
- provider.class.prefetch({})
435
- end
436
-
437
- it 'should return :uid values as an Integer' do
438
- expect(provider.class.generate_attribute_hash(user_plist_hash)[:uid]).to be_a Integer
439
- end
440
-
441
- it 'should return :gid values as an Integer' do
442
- expect(provider.class.generate_attribute_hash(user_plist_hash)[:gid]).to be_a Integer
443
- end
444
-
445
- it 'should return a hash of resource attributes' do
446
- expect(provider.class.generate_attribute_hash(user_plist_hash.merge(sha512_shadowhashdata_hash))).to eq(user_plist_resource)
447
- end
448
- end
449
-
450
- describe 'self#generate_attribute_hash with pbkdf2 and ssha512' do
451
- let(:user_plist_resource) do
452
- {
453
- :ensure => :present,
454
- :provider => :directoryservice,
455
- :groups => 'testgroup,third',
456
- :comment => username,
457
- :password => pbkdf2_password_hash,
458
- :iterations => pbkdf2_iterations_value,
459
- :salt => pbkdf2_salt_value,
460
- :shadowhashdata => pbkdf2_and_ssha512_shadowhashdata_array,
461
- :name => username,
462
- :uid => 1000,
463
- :gid => 22,
464
- :home => user_path
465
- }
466
- end
467
-
468
- before :each do
469
- allow(provider.class).to receive(:get_os_version).and_return('10.7')
470
- allow(provider.class).to receive(:get_all_users).and_return(testuser_hash)
471
- allow(provider.class).to receive(:get_list_of_groups).and_return(group_plist_hash_guid)
472
- provider.class.prefetch({})
473
- end
474
-
475
- it 'should return a hash of resource attributes' do
476
- expect(provider.class.generate_attribute_hash(user_plist_hash.merge(pbkdf2_and_ssha512_shadowhashdata_hash))).to eq(user_plist_resource)
477
- end
478
- end
479
-
480
- describe 'self#generate_attribute_hash empty shadowhashdata' do
481
- let(:user_plist_resource) do
482
- {
483
- :ensure => :present,
484
- :provider => :directoryservice,
485
- :groups => 'testgroup,third',
486
- :comment => username,
487
- :password => '*',
488
- :shadowhashdata => nil,
489
- :name => username,
490
- :uid => 1000,
491
- :gid => 22,
492
- :home => user_path
493
- }
494
- end
495
-
496
- it 'should handle empty shadowhashdata' do
497
- allow(provider.class).to receive(:get_os_version).and_return('10.7')
498
- allow(provider.class).to receive(:get_all_users).and_return([testuser_base])
499
- allow(provider.class).to receive(:get_list_of_groups).and_return(group_plist_hash_guid)
500
- provider.class.prefetch({})
501
- expect(provider.class.generate_attribute_hash(user_plist_hash)).to eq(user_plist_resource)
502
- end
503
- end
504
-
505
- describe '#delete' do
506
- it 'should call dscl when destroying/deleting a resource' do
507
- expect(provider).to receive(:dscl).with('.', '-delete', user_path)
508
- provider.delete
509
- end
510
- end
511
-
512
- describe 'the groups property' do
513
- # The below represents the result of running Plist.parse_xml on XML
514
- # data returned from the `dscl -plist . readall /Groups` command.
515
- # (AKA: What the get_list_of_groups method returns)
516
- let(:group_plist_hash) do
517
- [{
518
- 'dsAttrTypeStandard:RecordName' => ['testgroup'],
519
- 'dsAttrTypeStandard:GroupMembership' => [
520
- 'testuser',
521
- username,
522
- 'jeff',
523
- 'zack'
524
- ],
525
- 'dsAttrTypeStandard:GroupMembers' => [
526
- 'guidtestuser',
527
- 'guidjeff',
528
- 'guidzack'
529
- ],
530
- },
531
- {
532
- 'dsAttrTypeStandard:RecordName' => ['second'],
533
- 'dsAttrTypeStandard:GroupMembership' => [
534
- username,
535
- 'testuser',
536
- 'jeff',
537
- ],
538
- 'dsAttrTypeStandard:GroupMembers' => [
539
- 'guidtestuser',
540
- 'guidjeff',
541
- ],
542
- },
543
- {
544
- 'dsAttrTypeStandard:RecordName' => ['third'],
545
- 'dsAttrTypeStandard:GroupMembership' => [
546
- 'jeff',
547
- 'zack'
548
- ],
549
- 'dsAttrTypeStandard:GroupMembers' => [
550
- 'guidjeff',
551
- 'guidzack'
552
- ],
553
- }]
554
- end
555
-
556
- before :each do
557
- allow(provider.class).to receive(:get_all_users).and_return(testuser_hash)
558
- allow(provider.class).to receive(:get_os_version).and_return('10.7')
559
- end
560
-
561
- it "should return a list of groups if the user's name matches GroupMembership" do
562
- expect(provider.class).to receive(:get_list_of_groups).and_return(group_plist_hash)
563
- expect(provider.class).to receive(:get_list_of_groups).and_return(group_plist_hash)
564
- expect(provider.class.prefetch({}).first.groups).to eq('second,testgroup')
565
- end
566
-
567
- it "should return a list of groups if the user's GUID matches GroupMembers" do
568
- expect(provider.class).to receive(:get_list_of_groups).and_return(group_plist_hash_guid)
569
- expect(provider.class).to receive(:get_list_of_groups).and_return(group_plist_hash_guid)
570
- expect(provider.class.prefetch({}).first.groups).to eq('testgroup,third')
571
- end
572
- end
573
-
574
- describe '#groups=' do
575
- let(:group_plist_one_two_three) do
576
- [{
577
- 'dsAttrTypeStandard:RecordName' => ['one'],
578
- 'dsAttrTypeStandard:GroupMembership' => [
579
- 'jeff',
580
- 'zack'
581
- ],
582
- 'dsAttrTypeStandard:GroupMembers' => [
583
- 'guidjeff',
584
- 'guidzack'
585
- ],
586
- },
587
- {
588
- 'dsAttrTypeStandard:RecordName' => ['two'],
589
- 'dsAttrTypeStandard:GroupMembership' => [
590
- 'jeff',
591
- 'zack',
592
- username
593
- ],
594
- 'dsAttrTypeStandard:GroupMembers' => [
595
- 'guidjeff',
596
- 'guidzack'
597
- ],
598
- },
599
- {
600
- 'dsAttrTypeStandard:RecordName' => ['three'],
601
- 'dsAttrTypeStandard:GroupMembership' => [
602
- 'jeff',
603
- 'zack',
604
- username
605
- ],
606
- 'dsAttrTypeStandard:GroupMembers' => [
607
- 'guidjeff',
608
- 'guidzack'
609
- ],
610
- }]
611
- end
612
-
613
- before :each do
614
- allow(provider.class).to receive(:get_all_users).and_return(testuser_hash)
615
- allow(provider.class).to receive(:get_list_of_groups).and_return(group_plist_one_two_three)
616
- end
617
-
618
- it 'should call dscl to add necessary groups' do
619
- expect(provider.class).to receive(:get_attribute_from_dscl).with('Users', username, 'GeneratedUID').and_return({'dsAttrTypeStandard:GeneratedUID' => ['guidnonexistent_user']})
620
- expect(provider).to receive(:groups).and_return('two,three')
621
- expect(provider).to receive(:dscl).with('.', '-merge', '/Groups/one', 'GroupMembership', 'nonexistent_user')
622
- expect(provider).to receive(:dscl).with('.', '-merge', '/Groups/one', 'GroupMembers', 'guidnonexistent_user')
623
- provider.class.prefetch({})
624
- provider.groups= 'one,two,three'
625
- end
626
-
627
- it 'should call the get_salted_sha512 method on 10.7 and return the correct hash' do
628
- expect(provider.class).to receive(:convert_binary_to_hash).with(sha512_embedded_bplist).and_return(sha512_embedded_bplist_hash)
629
- expect(provider.class).to receive(:convert_binary_to_hash).with(pbkdf2_embedded_plist).and_return(pbkdf2_embedded_bplist_hash)
630
- expect(provider.class.prefetch({}).first.password).to eq(sha512_password_hash)
631
- end
632
-
633
- it 'should call the get_salted_sha512_pbkdf2 method on 10.8 and return the correct hash' do
634
- expect(provider.class).to receive(:convert_binary_to_hash).with(sha512_embedded_bplist).and_return(sha512_embedded_bplist_hash)
635
- expect(provider.class).to receive(:convert_binary_to_hash).with(pbkdf2_embedded_plist).and_return(pbkdf2_embedded_bplist_hash)
636
- expect(provider.class.prefetch({}).last.password).to eq(pbkdf2_password_hash)
637
- end
638
- end
639
-
640
- describe '#password=' do
641
- before :each do
642
- allow(provider).to receive(:sleep)
643
- allow(provider).to receive(:flush_dscl_cache)
644
- end
645
-
646
- it 'should call write_password_to_users_plist when setting the password' do
647
- allow(provider.class).to receive(:get_os_version).and_return('10.7')
648
- expect(provider).to receive(:write_password_to_users_plist).with(sha512_password_hash)
649
- provider.password = sha512_password_hash
650
- end
651
-
652
- it 'should call write_password_to_users_plist when setting the password' do
653
- allow(provider.class).to receive(:get_os_version).and_return('10.8')
654
- resource[:salt] = pbkdf2_salt_value
655
- resource[:iterations] = pbkdf2_iterations_value
656
- resource[:password] = pbkdf2_password_hash
657
-
658
- expect(provider).to receive(:write_password_to_users_plist).with(pbkdf2_password_hash)
659
-
660
- provider.password = resource[:password]
661
- end
662
-
663
-
664
- it "should raise an error on 10.7 if a password hash that doesn't contain 136 characters is passed" do
665
- allow(provider.class).to receive(:get_os_version).and_return('10.7')
666
- expect { provider.password = 'password' }.to raise_error Puppet::Error, /OS X 10\.7 requires a Salted SHA512 hash password of 136 characters\. Please check your password and try again/
667
- end
668
- end
669
-
670
- describe "passwords on 10.8" do
671
- before :each do
672
- allow(provider.class).to receive(:get_os_version).and_return('10.8')
673
- end
674
-
675
- it "should raise an error on 10.8 if a password hash that doesn't contain 256 characters is passed" do
676
- expect do
677
- provider.password = 'password'
678
- end.to raise_error(Puppet::Error, /OS X versions > 10\.7 require a Salted SHA512 PBKDF2 password hash of 256 characters\. Please check your password and try again\./)
679
- end
680
-
681
- it "fails if a password is given but not salt and iterations" do
682
- resource[:password] = pbkdf2_password_hash
683
-
684
- expect do
685
- provider.password = resource[:password]
686
- end.to raise_error(Puppet::Error, /OS X versions > 10\.7 use PBKDF2 password hashes, which requires all three of salt, iterations, and password hash\. This resource is missing: salt, iterations\./)
687
- end
688
-
689
- it "fails if salt is given but not password and iterations" do
690
- resource[:salt] = pbkdf2_salt_value
691
-
692
- expect do
693
- provider.salt = resource[:salt]
694
- end.to raise_error(Puppet::Error, /OS X versions > 10\.7 use PBKDF2 password hashes, which requires all three of salt, iterations, and password hash\. This resource is missing: password, iterations\./)
695
- end
696
-
697
- it "fails if iterations is given but not password and salt" do
698
- resource[:iterations] = pbkdf2_iterations_value
699
-
700
- expect do
701
- provider.iterations = resource[:iterations]
702
- end.to raise_error(Puppet::Error, /OS X versions > 10\.7 use PBKDF2 password hashes, which requires all three of salt, iterations, and password hash\. This resource is missing: password, salt\./)
703
- end
704
- end
705
-
706
- describe '#get_list_of_groups', :if => Puppet.features.cfpropertylist? do
707
- # The below value is the result of running `dscl -plist . readall /Groups`
708
- # on an OS X system.
709
- let(:groups_xml) do
710
- '<?xml version="1.0" encoding="UTF-8"?>
711
- <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
712
- <plist version="1.0">
713
- <array>
714
- <dict>
715
- <key>dsAttrTypeStandard:AppleMetaNodeLocation</key>
716
- <array>
717
- <string>/Local/Default</string>
718
- </array>
719
- <key>dsAttrTypeStandard:GeneratedUID</key>
720
- <array>
721
- <string>ABCDEFAB-CDEF-ABCD-EFAB-CDEF00000053</string>
722
- </array>
723
- <key>dsAttrTypeStandard:Password</key>
724
- <array>
725
- <string>*</string>
726
- </array>
727
- <key>dsAttrTypeStandard:PrimaryGroupID</key>
728
- <array>
729
- <string>83</string>
730
- </array>
731
- <key>dsAttrTypeStandard:RealName</key>
732
- <array>
733
- <string>SPAM Assassin Group 2</string>
734
- </array>
735
- <key>dsAttrTypeStandard:RecordName</key>
736
- <array>
737
- <string>_amavisd</string>
738
- <string>amavisd</string>
739
- </array>
740
- <key>dsAttrTypeStandard:RecordType</key>
741
- <array>
742
- <string>dsRecTypeStandard:Groups</string>
743
- </array>
744
- </dict>
745
- </array>
746
- </plist>'
747
- end
748
-
749
- # The below value is the result of executing Plist.parse_xml on
750
- # groups_xml
751
- let(:groups_hash) do
752
- [{ 'dsAttrTypeStandard:AppleMetaNodeLocation' => ['/Local/Default'],
753
- 'dsAttrTypeStandard:GeneratedUID' => ['ABCDEFAB-CDEF-ABCD-EFAB-CDEF00000053'],
754
- 'dsAttrTypeStandard:Password' => ['*'],
755
- 'dsAttrTypeStandard:PrimaryGroupID' => ['83'],
756
- 'dsAttrTypeStandard:RealName' => ['SPAM Assassin Group 2'],
757
- 'dsAttrTypeStandard:RecordName' => ['_amavisd', 'amavisd'],
758
- 'dsAttrTypeStandard:RecordType' => ['dsRecTypeStandard:Groups']
759
- }]
760
- end
761
-
762
- before :each do
763
- # Ensure we don't have a value cached from another spec
764
- provider.class.instance_variable_set(:@groups, nil) if provider.class.instance_variable_defined? :@groups
765
- end
766
-
767
- it 'should return an array of hashes containing group data' do
768
- expect(provider.class).to receive(:dscl).with('-plist', '.', 'readall', '/Groups').and_return(groups_xml)
769
- expect(provider.class.get_list_of_groups).to eq(groups_hash)
770
- end
771
- end
772
-
773
- describe '#get_attribute_from_dscl', :if => Puppet.features.cfpropertylist? do
774
- # The below value is the result of executing
775
- # `dscl -plist . read /Users/<username/ GeneratedUID`
776
- # on an OS X system.
777
- let(:user_guid_xml) do
778
- '<?xml version="1.0" encoding="UTF-8"?>
779
- <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
780
- <plist version="1.0">
781
- <dict>
782
- <key>dsAttrTypeStandard:GeneratedUID</key>
783
- <array>
784
- <string>DCC660C6-F5A9-446D-B9FF-3C0258AB5BA0</string>
785
- </array>
786
- </dict>
787
- </plist>'
788
- end
789
-
790
- # The below value is the result of parsing user_guid_xml with
791
- # Plist.parse_xml
792
- let(:user_guid_hash) do
793
- { 'dsAttrTypeStandard:GeneratedUID' => ['DCC660C6-F5A9-446D-B9FF-3C0258AB5BA0'] }
794
- end
795
-
796
- it 'should return a hash containing a user\'s dscl attribute data' do
797
- expect(provider.class).to receive(:dscl).with('-plist', '.', 'read', user_path, 'GeneratedUID').and_return(user_guid_xml)
798
- expect(provider.class.get_attribute_from_dscl('Users', username, 'GeneratedUID')).to eq(user_guid_hash)
799
- end
800
- end
801
-
802
- describe '#convert_hash_to_binary' do
803
- it 'should use plutil to successfully convert an xml plist to a binary plist' do
804
- expect(Puppet::Util::Plist).to receive(:dump_plist).with('ruby_hash', :binary).and_return('binary_plist_data')
805
- expect(provider.class.convert_hash_to_binary('ruby_hash')).to eq('binary_plist_data')
806
- end
807
- end
808
-
809
- describe '#convert_binary_to_hash' do
810
- it 'should accept a binary plist and return a ruby hash containing the plist data' do
811
- expect(Puppet::Util::Plist).to receive(:parse_plist).with('binary_plist_data').and_return(user_plist_hash)
812
- expect(provider.class.convert_binary_to_hash('binary_plist_data')).to eq(user_plist_hash)
813
- end
814
- end
815
-
816
- describe '#next_system_id' do
817
- it 'should return the next available UID number that is not in the list obtained from dscl and is greater than the passed integer value' do
818
- expect(provider).to receive(:dscl).with('.', '-list', '/Users', 'uid').and_return("kathee 312\ngary 11\ntanny 33\njohn 9\nzach 5")
819
- expect(provider.next_system_id(30)).to eq(34)
820
- end
821
- end
822
-
823
- describe '#get_salted_sha512' do
824
- it "should accept a hash whose 'SALTED-SHA512' key contains a base64 encoded salted-SHA512 password hash and return the hex value of that password hash" do
825
- expect(provider.class.get_salted_sha512(sha512_embedded_bplist_hash)).to eq(sha512_password_hash)
826
- end
827
- end
828
-
829
- describe '#get_salted_sha512_pbkdf2' do
830
- it "should accept a hash containing a PBKDF2 password hash, salt, and iterations value and return the correct password hash" do
831
- expect(provider.class.get_salted_sha512_pbkdf2('entropy', pbkdf2_embedded_bplist_hash)).to eq(pbkdf2_password_hash)
832
- end
833
- it "should accept a hash containing a PBKDF2 password hash, salt, and iterations value and return the correct salt value" do
834
- expect(provider.class.get_salted_sha512_pbkdf2('salt', pbkdf2_embedded_bplist_hash)).to eq(pbkdf2_salt_value)
835
- end
836
- it "should accept a hash containing a PBKDF2 password hash, salt, and iterations value and return the correct iterations value" do
837
- expect(provider.class.get_salted_sha512_pbkdf2('iterations', pbkdf2_embedded_bplist_hash)).to eq(pbkdf2_iterations_value)
838
- end
839
- it "should return an Integer value when looking up the PBKDF2 iterations value" do
840
- expect(provider.class.get_salted_sha512_pbkdf2('iterations', pbkdf2_embedded_bplist_hash)).to be_a(Integer)
841
- end
842
- it "should raise an error if a field other than 'entropy', 'salt', or 'iterations' is passed" do
843
- expect { provider.class.get_salted_sha512_pbkdf2('othervalue', pbkdf2_embedded_bplist_hash, 'test_user') }.to raise_error(Puppet::Error, /Puppet has tried to read an incorrect value from the user test_user in the SALTED-SHA512-PBKDF2 hash. Acceptable fields are 'salt', 'entropy', or 'iterations'/)
844
- end
845
- end
846
-
847
- describe '#get_sha1' do
848
- let(:password_hash_file) { '/var/db/shadow/hash/user_guid' }
849
- let(:stub_password_file) { double('connection') }
850
-
851
- it 'should return a sha1 hash read from disk' do
852
- expect(Puppet::FileSystem).to receive(:exist?).with(password_hash_file).and_return(true)
853
- expect(File).to receive(:file?).with(password_hash_file).and_return(true)
854
- expect(File).to receive(:readable?).with(password_hash_file).and_return(true)
855
- expect(File).to receive(:new).with(password_hash_file).and_return(stub_password_file)
856
- expect(stub_password_file).to receive(:read).and_return('sha1_password_hash')
857
- expect(stub_password_file).to receive(:close)
858
- expect(provider.class.get_sha1('user_guid')).to eq('sha1_password_hash')
859
- end
860
-
861
- it 'should return nil if the password_hash_file does not exist' do
862
- expect(Puppet::FileSystem).to receive(:exist?).with(password_hash_file).and_return(false)
863
- expect(provider.class.get_sha1('user_guid')).to eq(nil)
864
- end
865
-
866
- it 'should return nil if the password_hash_file is not a file' do
867
- expect(Puppet::FileSystem).to receive(:exist?).with(password_hash_file).and_return(true)
868
- expect(File).to receive(:file?).with(password_hash_file).and_return(false)
869
- expect(provider.class.get_sha1('user_guid')).to eq(nil)
870
- end
871
-
872
- it 'should raise an error if the password_hash_file is not readable' do
873
- expect(Puppet::FileSystem).to receive(:exist?).with(password_hash_file).and_return(true)
874
- expect(File).to receive(:file?).with(password_hash_file).and_return(true)
875
- expect(File).to receive(:readable?).with(password_hash_file).and_return(false)
876
- expect { expect(provider.class.get_sha1('user_guid')).to eq(nil) }.to raise_error(Puppet::Error, /Could not read password hash file at #{password_hash_file}/)
877
- end
878
- end
879
-
880
- describe '#write_password_to_users_plist' do
881
- let(:sha512_plist_xml) do
882
- "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>KerberosKeys</key>\n\t<array>\n\t\t<data>\n\t\tMIIBS6EDAgEBoIIBQjCCAT4wcKErMCmgAwIBEqEiBCCS/0Im7BAps/YhX/ED\n\t\tKOpDeSMFkUsu3UzEa6gqDu35BKJBMD+gAwIBA6E4BDZMS0RDOlNIQTEuNDM4\n\t\tM0UxNTJEOUQzOTRBQTMyRDEzQUU5OEY2RjZFMUZFOEQwMEY4MWplZmYwYKEb\n\t\tMBmgAwIBEaESBBAk8a3rrFk5mHAdEU5nRgFwokEwP6ADAgEDoTgENkxLREM6\n\t\tU0hBMS40MzgzRTE1MkQ5RDM5NEFBMzJEMTNBRTk4RjZGNkUxRkU4RDAwRjgx\n\t\tamVmZjBooSMwIaADAgEQoRoEGFg71irsV+9ddRNPSn9houo3Q6jZuj55XaJB\n\t\tMD+gAwIBA6E4BDZMS0RDOlNIQTEuNDM4M0UxNTJEOUQzOTRBQTMyRDEzQUU5\n\t\tOEY2RjZFMUZFOEQwMEY4MWplZmY=\n\t\t</data>\n\t</array>\n\t<key>ShadowHashData</key>\n\t<array>\n\t\t<data>\n\t\tYnBsaXN0MDDRAQJdU0FMVEVELVNIQTUxMk8QRFNL0iuruijP6becUWe43GTX\n\t\t5WTgOTi2emx41DMnwnB4vbKieVOE4eNHiyocX5c0GX1LWJ6VlZqZ9EnDLsuA\n\t\tNC5Ga9qlCAsZAAAAAAAAAQEAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAGA=\n\t\t</data>\n\t</array>\n\t<key>authentication_authority</key>\n\t<array>\n\t\t<string>;Kerberosv5;;jeff@LKDC:SHA1.4383E152D9D394AA32D13AE98F6F6E1FE8D00F81;LKDC:SHA1.4383E152D9D394AA32D13AE98F6F6E1FE8D00F81</string>\n\t\t<string>;ShadowHash;HASHLIST:&lt;SALTED-SHA512&gt;</string>\n\t</array>\n\t<key>dsAttrTypeStandard:ShadowHashData</key>\n\t<array>\n\t\t<data>\n\t\tYnBsaXN0MDDRAQJdU0FMVEVELVNIQTUxMk8QRH6n1ZITH1eyyPi9vOyNnfEh\n\t\tKKOGOTpPAMdhm6wmIqRNRRQZ0R2lEtWRWrmOOXGKyUCD/i79a/cQpU1Hf4/3\n\t\tNbElhxktCAsZAAAAAAAAAQEAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAGA=\n\t\t</data>\n\t</array>\n\t<key>generateduid</key>\n\t<array>\n\t\t<string>3AC74939-C14F-45DD-B6A9-D1A82373F0B0</string>\n\t</array>\n\t<key>name</key>\n\t<array>\n\t\t<string>jeff</string>\n\t</array>\n\t<key>passwd</key>\n\t<array>\n\t\t<string>********</string>\n\t</array>\n\t<key>passwordpolicyoptions</key>\n\t<array>\n\t\t<data>\n\t\tPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NU\n\t\tWVBFIHBsaXN0IFBVQkxJQyAiLS8vQXBwbGUvL0RURCBQTElTVCAxLjAvL0VO\n\t\tIiAiaHR0cDovL3d3dy5hcHBsZS5jb20vRFREcy9Qcm9wZXJ0eUxpc3QtMS4w\n\t\tLmR0ZCI+CjxwbGlzdCB2ZXJzaW9uPSIxLjAiPgo8ZGljdD4KCTxrZXk+ZmFp\n\t\tbGVkTG9naW5Db3VudDwva2V5PgoJPGludGVnZXI+MDwvaW50ZWdlcj4KCTxr\n\t\tZXk+ZmFpbGVkTG9naW5UaW1lc3RhbXA8L2tleT4KCTxkYXRlPjIwMDEtMDEt\n\t\tMDFUMDA6MDA6MDBaPC9kYXRlPgoJPGtleT5sYXN0TG9naW5UaW1lc3RhbXA8\n\t\tL2tleT4KCTxkYXRlPjIwMDEtMDEtMDFUMDA6MDA6MDBaPC9kYXRlPgoJPGtl\n\t\teT5wYXNzd29yZFRpbWVzdGFtcDwva2V5PgoJPGRhdGU+MjAxMi0wOC0xMVQw\n\t\tMDozNTo1MFo8L2RhdGU+CjwvZGljdD4KPC9wbGlzdD4K\n\t\t</data>\n\t</array>\n\t<key>uid</key>\n\t<array>\n\t\t<string>28</string>\n\t</array>\n</dict>\n</plist>"
883
- end
884
-
885
- let(:pbkdf2_plist_xml) do
886
- "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>KerberosKeys</key>\n\t<array>\n\t\t<data>\n\t\tMIIBS6EDAgEBoIIBQjCCAT4wcKErMCmgAwIBEqEiBCDrboPy0gxu7oTZR/Pc\n\t\tYdCBC9ivXo1k05gt036/aNe5VqJBMD+gAwIBA6E4BDZMS0RDOlNIQTEuNDEz\n\t\tQTMwRjU5MEVFREM3ODdENTMyOTgxODUwQTk3NTI0NUIwQTcyM2plZmYwYKEb\n\t\tMBmgAwIBEaESBBCm02SYYdsxo2fiDP4KuPtmokEwP6ADAgEDoTgENkxLREM6\n\t\tU0hBMS40MTNBMzBGNTkwRUVEQzc4N0Q1MzI5ODE4NTBBOTc1MjQ1QjBBNzIz\n\t\tamVmZjBooSMwIaADAgEQoRoEGHPBc7Dg7zjaE8g+YXObwupiBLMIlCrN5aJB\n\t\tMD+gAwIBA6E4BDZMS0RDOlNIQTEuNDEzQTMwRjU5MEVFREM3ODdENTMyOTgx\n\t\tODUwQTk3NTI0NUIwQTcyM2plZmY=\n\t\t</data>\n\t</array>\n\t<key>ShadowHashData</key>\n\t<array>\n\t\t<data>\n\t\tYnBsaXN0MDDRAQJfEBRTQUxURUQtU0hBNTEyLVBCS0RGMtMDBAUGBwhXZW50\n\t\tcm9weVRzYWx0Wml0ZXJhdGlvbnNPEIAFkK3hnmlTwTWuhyrndhgjXffUbGPe\n\t\tf5oPzfLNnn2F5LfKhoEBI1thWOBaMJgF7kgUsCekvpwj7CkmvIFyJpr/ulya\n\t\tWYXoEJH6aJgHbSl/H6p1+mF1Ue8WcddSAFXEoNl7m5xYBaoyK67bzY7pxSOB\n\t\tFlOsLqnpyNjxrFGaDytZXk8QIJN3xGkIocisLD5FwNRNqK0PzYXsXBTZpZ/8\n\t\tQMnaMfDsEWCwCAsiKTE2QcTnAAAAAAAAAQEAAAAAAAAACQAAAAAAAAAAAAAA\n\t\tAAAAAOo=\n\t\t</data>\n\t</array>\n\t<key>authentication_authority</key>\n\t<array>\n\t\t<string>;Kerberosv5;;jeff@LKDC:SHA1.413A30F590EEDC787D532981850A975245B0A723;LKDC:SHA1.413A30F590EEDC787D532981850A975245B0A723</string>\n\t\t<string>;ShadowHash;HASHLIST:&lt;SALTED-SHA512-PBKDF2&gt;</string>\n\t</array>\n\t<key>generateduid</key>\n\t<array>\n\t\t<string>1CB825D1-2DF7-43CC-B874-DB6BBB76C402</string>\n\t</array>\n\t<key>gid</key>\n\t<array>\n\t\t<string>21</string>\n\t</array>\n\t<key>name</key>\n\t<array>\n\t\t<string>jeff</string>\n\t</array>\n\t<key>passwd</key>\n\t<array>\n\t\t<string>********</string>\n\t</array>\n\t<key>passwordpolicyoptions</key>\n\t<array>\n\t\t<data>\n\t\tPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NU\n\t\tWVBFIHBsaXN0IFBVQkxJQyAiLS8vQXBwbGUvL0RURCBQTElTVCAxLjAvL0VO\n\t\tIiAiaHR0cDovL3d3dy5hcHBsZS5jb20vRFREcy9Qcm9wZXJ0eUxpc3QtMS4w\n\t\tLmR0ZCI+CjxwbGlzdCB2ZXJzaW9uPSIxLjAiPgo8ZGljdD4KCTxrZXk+ZmFp\n\t\tbGVkTG9naW5Db3VudDwva2V5PgoJPGludGVnZXI+MDwvaW50ZWdlcj4KCTxr\n\t\tZXk+ZmFpbGVkTG9naW5UaW1lc3RhbXA8L2tleT4KCTxkYXRlPjIwMDEtMDEt\n\t\tMDFUMDA6MDA6MDBaPC9kYXRlPgoJPGtleT5sYXN0TG9naW5UaW1lc3RhbXA8\n\t\tL2tleT4KCTxkYXRlPjIwMDEtMDEtMDFUMDA6MDA6MDBaPC9kYXRlPgoJPGtl\n\t\teT5wYXNzd29yZExhc3RTZXRUaW1lPC9rZXk+Cgk8ZGF0ZT4yMDEyLTA3LTI1\n\t\tVDE4OjQ3OjU5WjwvZGF0ZT4KPC9kaWN0Pgo8L3BsaXN0Pgo=\n\t\t</data>\n\t</array>\n\t<key>uid</key>\n\t<array>\n\t\t<string>28</string>\n\t</array>\n</dict>\n</plist>"
887
- end
888
-
889
- let(:sha512_shadowhashdata) do
890
- {
891
- 'SALTED-SHA512' => 'blankvalue'
892
- }
893
- end
894
-
895
- let(:pbkdf2_shadowhashdata) do
896
- {
897
- 'SALTED-SHA512-PBKDF2' => {
898
- 'entropy' => 'blank_entropy',
899
- 'salt' => 'blank_salt',
900
- 'iterations' => 100
901
- }
902
- }
903
- end
904
-
905
- let(:sample_users_plist) do
906
- {
907
- "shell" => ["/bin/zsh"],
908
- "passwd" => ["********"],
909
- "picture" => ["/Library/User Pictures/Animals/Eagle.tif"],
910
- "_writers_LinkedIdentity" => ["puppet"], "name"=>["puppet"],
911
- "home" => ["/Users/puppet"],
912
- "_writers_UserCertificate" => ["puppet"],
913
- "_writers_passwd" => ["puppet"],
914
- "gid" => ["20"],
915
- "generateduid" => ["DA8A0E67-E9BE-4B4F-B34E-8977BAE0D3D4"],
916
- "realname" => ["Puppet"],
917
- "_writers_picture" => ["puppet"],
918
- "uid" => ["501"],
919
- "hint" => [""],
920
- "authentication_authority" => [";ShadowHash;HASHLIST:<SALTED-SHA512>",
921
- ";Kerberosv5;;puppet@LKDC:S HA1.35580B1D6366D2890A35D430373FF653297F377D;LKDC:SHA1.35580B1D6366D2890A35D430373FF653297F377D"],
922
- "_writers_realname" => ["puppet"],
923
- "_writers_hint" => ["puppet"],
924
- "ShadowHashData" => ['blank']
925
- }
926
- end
927
-
928
- before do
929
- allow(provider).to receive(:merge_attribute_with_dscl).with('Users', username, 'AuthenticationAuthority', any_args)
930
- end
931
-
932
- describe 'when on macOS 11 (Big Sur) or greater' do
933
- before do
934
- allow(provider.class).to receive(:get_os_version).and_return('11.0.0')
935
- end
936
-
937
- it 'should add salted_sha512_pbkdf2 AuthenticationAuthority key if missing' do
938
- expect(provider).to receive(:get_users_plist).and_return(sample_users_plist)
939
- expect(provider).to receive(:get_shadow_hash_data).with(sample_users_plist).and_return(pbkdf2_shadowhashdata)
940
- expect(provider).to receive(:set_salted_pbkdf2).with(sample_users_plist, pbkdf2_shadowhashdata, 'entropy', pbkdf2_password_hash)
941
- expect(provider).to receive(:needs_sha512_pbkdf2_authentication_authority_to_be_added?).and_return(true)
942
-
943
- expect(Puppet).to receive(:debug).with("Adding 'SALTED-SHA512-PBKDF2' AuthenticationAuthority key for ShadowHash to user 'nonexistent_user'")
944
- provider.write_password_to_users_plist(pbkdf2_password_hash)
945
- end
946
-
947
- it 'should not add salted_sha512_pbkdf2 AuthenticationAuthority key if not missing' do
948
- expect(provider).to receive(:get_users_plist).and_return(sample_users_plist)
949
- expect(provider).to receive(:get_shadow_hash_data).with(sample_users_plist).and_return(pbkdf2_shadowhashdata)
950
- expect(provider).to receive(:set_salted_pbkdf2).with(sample_users_plist, pbkdf2_shadowhashdata, 'entropy', pbkdf2_password_hash)
951
- expect(provider).to receive(:needs_sha512_pbkdf2_authentication_authority_to_be_added?).and_return(false)
952
-
953
- expect(Puppet).not_to receive(:debug).with("Adding 'SALTED-SHA512-PBKDF2' AuthenticationAuthority key for ShadowHash to user 'nonexistent_user'")
954
- provider.write_password_to_users_plist(pbkdf2_password_hash)
955
- end
956
- end
957
-
958
- describe 'when on macOS version lower than 11' do
959
- before do
960
- allow(provider.class).to receive(:get_os_version)
961
- allow(provider).to receive(:needs_sha512_pbkdf2_authentication_authority_to_be_added?).and_return(false)
962
- end
963
-
964
- it 'should not add salted_sha512_pbkdf2 AuthenticationAuthority' do
965
- expect(provider).to receive(:get_users_plist).and_return(sample_users_plist)
966
- expect(provider).to receive(:get_shadow_hash_data).with(sample_users_plist).and_return(pbkdf2_shadowhashdata)
967
- expect(provider).to receive(:set_salted_pbkdf2).with(sample_users_plist, pbkdf2_shadowhashdata, 'entropy', pbkdf2_password_hash)
968
- expect(provider).to receive(:needs_sha512_pbkdf2_authentication_authority_to_be_added?).and_return(false)
969
-
970
- expect(Puppet).not_to receive(:debug).with("Adding 'SALTED-SHA512-PBKDF2' AuthenticationAuthority key for ShadowHash to user 'nonexistent_user'")
971
- provider.write_password_to_users_plist(pbkdf2_password_hash)
972
- end
973
-
974
- it 'should call set_salted_sha512 on 10.7 when given a salted-SHA512 password hash' do
975
- expect(provider).to receive(:get_users_plist).and_return(sample_users_plist)
976
- expect(provider).to receive(:get_shadow_hash_data).with(sample_users_plist).and_return(sha512_shadowhashdata)
977
- expect(provider.class).to receive(:get_os_version).and_return('10.7')
978
- expect(provider).to receive(:set_salted_sha512).with(sample_users_plist, sha512_shadowhashdata, sha512_password_hash)
979
- provider.write_password_to_users_plist(sha512_password_hash)
980
- end
981
-
982
- it 'should call set_salted_pbkdf2 on 10.8 when given a PBKDF2 password hash' do
983
- expect(provider).to receive(:get_users_plist).and_return(sample_users_plist)
984
- expect(provider).to receive(:get_shadow_hash_data).with(sample_users_plist).and_return(pbkdf2_shadowhashdata)
985
- expect(provider.class).to receive(:get_os_version).and_return('10.8')
986
- expect(provider).to receive(:set_salted_pbkdf2).with(sample_users_plist, pbkdf2_shadowhashdata, 'entropy', pbkdf2_password_hash)
987
- provider.write_password_to_users_plist(pbkdf2_password_hash)
988
- end
989
-
990
- it "should delete the SALTED-SHA512 key in the shadow_hash_data hash if it exists on a 10.8 system and write_password_to_users_plist has been called to set the user's password" do
991
- expect(provider).to receive(:get_users_plist).and_return('users_plist')
992
- expect(provider).to receive(:get_shadow_hash_data).with('users_plist').and_return(sha512_shadowhashdata)
993
- expect(provider.class).to receive(:get_os_version).and_return('10.8')
994
- expect(provider).to receive(:set_salted_pbkdf2).with('users_plist', {}, 'entropy', pbkdf2_password_hash)
995
- provider.write_password_to_users_plist(pbkdf2_password_hash)
996
- end
997
- end
998
- end
999
-
1000
- describe '#set_salted_sha512' do
1001
- let(:users_plist) { {'ShadowHashData' => ['string_data'] } }
1002
- let(:sha512_shadow_hash_data) do
1003
- {
1004
- 'SALTED-SHA512' => sha512_pw_string
1005
- }
1006
- end
1007
-
1008
- it 'should set the SALTED-SHA512 password hash for a user in 10.7 and call the set_shadow_hash_data method to write the plist to disk' do
1009
- expect(provider.class).to receive(:convert_hash_to_binary).with(sha512_embedded_bplist_hash).and_return(sha512_embedded_bplist)
1010
- expect(provider).to receive(:set_shadow_hash_data).with(users_plist, sha512_embedded_bplist)
1011
- provider.set_salted_sha512(users_plist, sha512_embedded_bplist_hash, sha512_password_hash)
1012
- end
1013
-
1014
- it 'should set the salted-SHA512 password, even if a blank shadow_hash_data hash is passed' do
1015
- expect(provider.class).to receive(:convert_hash_to_binary).with(sha512_shadow_hash_data).and_return(sha512_embedded_bplist)
1016
- expect(provider).to receive(:set_shadow_hash_data).with(users_plist, sha512_embedded_bplist)
1017
- provider.set_salted_sha512(users_plist, false, sha512_password_hash)
1018
- end
1019
- end
1020
-
1021
- describe '#set_shadow_hash_data' do
1022
- let(:users_plist) { {'ShadowHashData' => ['string_data'] } }
1023
-
1024
- it 'should flush the plist data to a temporary file' do
1025
- expect(provider).to receive(:write_and_import_shadow_hash_data)
1026
- provider.set_shadow_hash_data(users_plist, pbkdf2_embedded_plist)
1027
- end
1028
- end
1029
-
1030
- describe '#set_salted_pbkdf2' do
1031
- let(:users_plist) { {'ShadowHashData' => ['string_data'] } }
1032
- let(:entropy_shadow_hash_data) do
1033
- {
1034
- 'SALTED-SHA512-PBKDF2' =>
1035
- {
1036
- 'entropy' => 'binary_string'
1037
- }
1038
- }
1039
- end
1040
-
1041
- # This will also catch the edge-case where a 10.6-style user exists on
1042
- # a 10.8 system and Puppet attempts to set a password
1043
- it 'should not fail if shadow_hash_data is not a Hash' do
1044
- expect(Puppet::Util::Plist).to receive(:string_to_blob).with(provider.base64_decode_string(pbkdf2_password_hash)).and_return('binary_string')
1045
- expect(provider.class).to receive(:convert_hash_to_binary).with(entropy_shadow_hash_data).and_return('binary_plist')
1046
- expect(provider).to receive(:set_shadow_hash_data).with({'passwd' => '********'}, 'binary_plist')
1047
- provider.set_salted_pbkdf2({}, false, 'entropy', pbkdf2_password_hash)
1048
- end
1049
-
1050
- it "should set the PBKDF2 password hash when the 'entropy' field is passed with a valid password hash" do
1051
- expect(Puppet::Util::Plist).to receive(:string_to_blob).with(provider.base64_decode_string(pbkdf2_password_hash))
1052
- expect(provider.class).to receive(:convert_hash_to_binary).with(pbkdf2_embedded_bplist_hash).and_return(pbkdf2_embedded_plist)
1053
- expect(provider).to receive(:set_shadow_hash_data).with(users_plist, pbkdf2_embedded_plist)
1054
- expect(users_plist).to receive(:[]=).with('passwd', '********')
1055
- provider.set_salted_pbkdf2(users_plist, pbkdf2_embedded_bplist_hash, 'entropy', pbkdf2_password_hash)
1056
- end
1057
-
1058
- it "should set the PBKDF2 password hash when the 'salt' field is passed with a valid password hash" do
1059
- expect(Puppet::Util::Plist).to receive(:string_to_blob).with(provider.base64_decode_string(pbkdf2_salt_value))
1060
- expect(provider.class).to receive(:convert_hash_to_binary).with(pbkdf2_embedded_bplist_hash).and_return(pbkdf2_embedded_plist)
1061
- expect(provider).to receive(:set_shadow_hash_data).with(users_plist, pbkdf2_embedded_plist)
1062
- expect(users_plist).to receive(:[]=).with('passwd', '********')
1063
- provider.set_salted_pbkdf2(users_plist, pbkdf2_embedded_bplist_hash, 'salt', pbkdf2_salt_value)
1064
- end
1065
-
1066
- it "should set the PBKDF2 password hash when the 'iterations' field is passed with a valid password hash" do
1067
- expect(provider.class).to receive(:convert_hash_to_binary).with(pbkdf2_embedded_bplist_hash).and_return(pbkdf2_embedded_plist)
1068
- expect(provider).to receive(:set_shadow_hash_data).with(users_plist, pbkdf2_embedded_plist)
1069
- expect(users_plist).to receive(:[]=).with('passwd', '********')
1070
- provider.set_salted_pbkdf2(users_plist, pbkdf2_embedded_bplist_hash, 'iterations', pbkdf2_iterations_value)
1071
- end
1072
- end
1073
-
1074
- describe '#write_and_import_shadow_hash_data' do
1075
- it 'should save the passed plist to a temporary file and import it' do
1076
- tmpfile = double('tempfile', :path => "/tmp/dsimport_#{username}", :flush => nil)
1077
- allow(Tempfile).to receive(:create).and_yield(tmpfile)
1078
- allow(provider).to receive(:dscl).with('.', 'delete', user_path, 'ShadowHashData')
1079
-
1080
- expect(tmpfile).to receive(:write).with(dsimport_contents)
1081
- expect(provider).to receive(:dsimport).with(tmpfile.path, '/Local/Default', 'M')
1082
- provider.write_and_import_shadow_hash_data(sha512_embedded_bplist)
1083
- end
1084
- end
1085
-
1086
- describe '#merge_attribute_with_dscl' do
1087
- it 'should raise an error if a dscl command raises an error' do
1088
- expect(provider).to receive(:dscl).with('.', '-merge', user_path, 'GeneratedUID', 'GUID').and_raise(Puppet::ExecutionFailure, 'boom')
1089
- expect { provider.merge_attribute_with_dscl('Users', username, 'GeneratedUID', 'GUID') }.to raise_error Puppet::Error, /Could not set the dscl GeneratedUID key with value: GUID/
1090
- end
1091
- end
1092
-
1093
- describe '#create_attribute_with_dscl' do
1094
- it 'should raise an error if a dscl command raises an error' do
1095
- expect(provider).to receive(:dscl).with('.', '-create', user_path, 'GeneratedUID', 'GUID').and_raise(Puppet::ExecutionFailure, 'boom')
1096
- expect { provider.create_attribute_with_dscl('Users', username, 'GeneratedUID', 'GUID') }.to raise_error Puppet::Error, /Could not set the dscl GeneratedUID key with value: GUID/
1097
- end
1098
- end
1099
-
1100
- describe '#get_users_plist' do
1101
- let(:test_hash) do
1102
- {
1103
- 'user' => 'puppet',
1104
- 'shell' => '/bin/bash'
1105
- }
1106
- end
1107
-
1108
- it 'should convert a plist to a valid Ruby hash' do
1109
- expect(Puppet::Util::Plist).to receive(:read_plist_file).with("#{users_plist_dir}/#{username}.plist").and_return(test_hash)
1110
- expect(provider.get_users_plist(username)).to eq(test_hash, )
1111
- end
1112
- end
1113
-
1114
- describe '#get_shadow_hash_data' do
1115
- let(:shadow_hash) do
1116
- {
1117
- 'ShadowHashData' => ['test']
1118
- }
1119
- end
1120
-
1121
- let(:no_shadow_hash) do
1122
- {
1123
- 'no' => 'Shadow Hash Data'
1124
- }
1125
- end
1126
-
1127
- it 'should return false if the passed users_plist does NOT have a ShadowHashData key' do
1128
- expect(provider.get_shadow_hash_data(no_shadow_hash)).to eq(false)
1129
- end
1130
-
1131
- it 'should call convert_binary_to_hash() with the string ' +
1132
- 'located in the first element of the array of the ShadowHashData key if the ' +
1133
- 'passed users_plist contains a ShadowHashData key' do
1134
- expect(provider.class).to receive(:convert_binary_to_hash).with('test').and_return('returnvalue')
1135
- expect(provider.get_shadow_hash_data(shadow_hash)).to eq('returnvalue')
1136
- end
1137
- end
1138
-
1139
- describe 'self#get_os_version' do
1140
- before :each do
1141
- # Ensure we don't have a value cached from another spec
1142
- provider.class.instance_variable_set(:@os_version, nil) if provider.class.instance_variable_defined? :@os_version
1143
- end
1144
-
1145
- it 'should call Puppet.runtime[:facter].value(:macosx_productversion_major) ONLY ONCE no matter how ' +
1146
- 'many times get_os_version() is called' do
1147
- expect(Facter).to receive(:value).with(:macosx_productversion_major).once.and_return('10.8')
1148
- expect(provider.class.get_os_version).to eq('10.8')
1149
- expect(provider.class.get_os_version).to eq('10.8')
1150
- expect(provider.class.get_os_version).to eq('10.8')
1151
- expect(provider.class.get_os_version).to eq('10.8')
1152
- end
1153
- end
1154
-
1155
- describe '#base64_decode_string' do
1156
- it 'should return a Base64-decoded string appropriate for use in a user\'s plist' do
1157
- expect(provider.base64_decode_string(sha512_password_hash)).to eq(sha512_pw_string)
1158
- end
1159
- end
1160
-
1161
- describe '(#12833) 10.6-style users on 10.8' do
1162
- # The below represents output of 'dscl -plist . readall /Users'
1163
- # converted to a Ruby hash if only one user were installed on the system.
1164
- # This lets us check the behavior of all the methods necessary to return
1165
- # a user's groups property by controlling the data provided by dscl. The
1166
- # differentiating aspect about this plist is that it's from a 10.6-style
1167
- # user. There's an edge case whereby a user that was created in 10.6, but
1168
- # who hasn't attempted to login to the system until after it's been
1169
- # upgraded to 10.8, will experience errors due to assumptions in Puppet
1170
- # based solely on operatingsystem.
1171
- let(:all_users_hash) do
1172
- [
1173
- {
1174
- "dsAttrTypeNative:_writers_UserCertificate" => ["testuser"],
1175
- "dsAttrTypeStandard:RealName" => ["testuser"],
1176
- "dsAttrTypeStandard:NFSHomeDirectory" => ["/Users/testuser"],
1177
- "dsAttrTypeNative:_writers_realname" => ["testuser"],
1178
- "dsAttrTypeNative:_writers_picture" => ["testuser"],
1179
- "dsAttrTypeStandard:AppleMetaNodeLocation" => ["/Local/Default"],
1180
- "dsAttrTypeStandard:PrimaryGroupID" => ["20"],
1181
- "dsAttrTypeNative:_writers_LinkedIdentity" => ["testuser"],
1182
- "dsAttrTypeStandard:UserShell" => ["/bin/bash"],
1183
- "dsAttrTypeStandard:UniqueID" => ["1234"],
1184
- "dsAttrTypeStandard:RecordName" => ["testuser"],
1185
- "dsAttrTypeStandard:Password" => ["********"],
1186
- "dsAttrTypeNative:_writers_jpegphoto" => ["testuser"],
1187
- "dsAttrTypeNative:_writers_hint" => ["testuser"],
1188
- "dsAttrTypeNative:_writers_passwd" => ["testuser"],
1189
- "dsAttrTypeStandard:RecordType" => ["dsRecTypeStandard:Users"],
1190
- "dsAttrTypeStandard:AuthenticationAuthority" => [
1191
- ";ShadowHash;",
1192
- ";Kerberosv5;;testuser@LKDC:SHA1.48AC4BCFEFE9 D66847B5E7D813BC4B12C5513A07;LKDC:SHA1.48AC4BCFEFE9D66847B5E7D813BC4B12C5513A07;"
1193
- ],
1194
- "dsAttrTypeStandard:GeneratedUID" => ["D1AC2ECC-F177-4B45-8B18-59CF002F97FF"]
1195
- }
1196
- ]
1197
- end
1198
-
1199
- let(:username) { 'testuser' }
1200
- let(:user_path) { "/Users/#{username}" }
1201
- let(:resource) do
1202
- Puppet::Type.type(:user).new(
1203
- :name => username,
1204
- :provider => :directoryservice
1205
- )
1206
- end
1207
- let(:provider) { resource.provider }
1208
-
1209
- # The below represents the result of get_users_plist on the testuser
1210
- # account from the 'all_users_hash' helper method. The get_users_plist
1211
- # method calls the `plutil` binary to do its work, so we want to stub
1212
- # that out
1213
- let(:user_plist_hash) do
1214
- {
1215
- 'realname' => ['testuser'],
1216
- 'authentication_authority' => [';ShadowHash;', ';Kerberosv5;;testuser@LKDC:SHA1.48AC4BCFEFE9D66847B5E7D813BC4B12C5513A07;LKDC:SHA1.48AC4BCFEFE9D66847B5E7D813BC4B12C5513A07;'],
1217
- 'home' => ['/Users/testuser'],
1218
- '_writers_realname' => ['testuser'],
1219
- 'passwd' => '********',
1220
- '_writers_LinkedIdentity' => ['testuser'],
1221
- '_writers_picture' => ['testuser'],
1222
- 'gid' => ['20'],
1223
- '_writers_passwd' => ['testuser'],
1224
- '_writers_hint' => ['testuser'],
1225
- '_writers_UserCertificate' => ['testuser'],
1226
- '_writers_jpegphoto' => ['testuser'],
1227
- 'shell' => ['/bin/bash'],
1228
- 'uid' => ['1234'],
1229
- 'generateduid' => ['D1AC2ECC-F177-4B45-8B18-59CF002F97FF'],
1230
- 'name' => ['testuser']
1231
- }
1232
- end
1233
-
1234
- before :each do
1235
- allow(provider.class).to receive(:get_all_users).and_return(all_users_hash)
1236
- allow(provider.class).to receive(:get_list_of_groups).and_return(group_plist_hash_guid)
1237
- allow(provider).to receive(:merge_attribute_with_dscl).with('Users', username, 'AuthenticationAuthority', any_args)
1238
- provider.class.prefetch({})
1239
- end
1240
-
1241
- it 'should not raise an error if the password=() method is called on ' +
1242
- 'a user without a ShadowHashData key in their user\'s plist on OS X ' +
1243
- 'version 10.8' do
1244
- resource[:salt] = pbkdf2_salt_value
1245
- resource[:iterations] = pbkdf2_iterations_value
1246
- resource[:password] = pbkdf2_password_hash
1247
- allow(provider.class).to receive(:get_os_version).and_return('10.8')
1248
- allow(provider).to receive(:sleep)
1249
- allow(provider).to receive(:flush_dscl_cache)
1250
-
1251
- expect(provider).to receive(:get_users_plist).with('testuser').and_return(user_plist_hash)
1252
- expect(provider).to receive(:set_salted_pbkdf2).with(user_plist_hash, false, 'entropy', pbkdf2_password_hash)
1253
- provider.password = resource[:password]
1254
- end
1255
- end
1256
- end