puppet 6.20.0-x86-mingw32 → 7.4.0-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of puppet might be problematic. Click here for more details.

Files changed (430) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -4
  3. data/Gemfile.lock +13 -13
  4. data/README.md +1 -1
  5. data/conf/fileserver.conf +5 -10
  6. data/ext/build_defaults.yaml +1 -2
  7. data/ext/osx/file_mapping.yaml +0 -5
  8. data/ext/project_data.yaml +2 -14
  9. data/ext/redhat/puppet.spec.erb +0 -1
  10. data/ext/windows/service/daemon.rb +6 -5
  11. data/install.rb +21 -17
  12. data/lib/puppet.rb +11 -20
  13. data/lib/puppet/application.rb +172 -98
  14. data/lib/puppet/application/device.rb +100 -104
  15. data/lib/puppet/application/filebucket.rb +13 -9
  16. data/lib/puppet/application/ssl.rb +1 -1
  17. data/lib/puppet/configurer.rb +27 -29
  18. data/lib/puppet/configurer/plugin_handler.rb +21 -19
  19. data/lib/puppet/defaults.rb +57 -162
  20. data/lib/puppet/environments.rb +8 -23
  21. data/lib/puppet/face/facts.rb +73 -49
  22. data/lib/puppet/face/help.rb +1 -1
  23. data/lib/puppet/face/node/clean.rb +8 -0
  24. data/lib/puppet/face/plugin.rb +5 -8
  25. data/lib/puppet/ffi/windows.rb +12 -0
  26. data/lib/puppet/ffi/windows/api_types.rb +311 -0
  27. data/lib/puppet/ffi/windows/constants.rb +404 -0
  28. data/lib/puppet/ffi/windows/functions.rb +628 -0
  29. data/lib/puppet/ffi/windows/structs.rb +338 -0
  30. data/lib/puppet/file_serving/configuration.rb +0 -5
  31. data/lib/puppet/file_serving/configuration/parser.rb +6 -32
  32. data/lib/puppet/file_serving/http_metadata.rb +1 -1
  33. data/lib/puppet/file_serving/mount.rb +1 -2
  34. data/lib/puppet/forge/repository.rb +0 -1
  35. data/lib/puppet/generate/models/type/type.rb +4 -1
  36. data/lib/puppet/http.rb +22 -13
  37. data/lib/puppet/http/client.rb +164 -114
  38. data/lib/puppet/{network/resolver.rb → http/dns.rb} +2 -2
  39. data/lib/puppet/http/errors.rb +16 -0
  40. data/lib/puppet/http/external_client.rb +5 -7
  41. data/lib/puppet/{network/http → http}/factory.rb +8 -11
  42. data/lib/puppet/{network/http → http}/pool.rb +61 -26
  43. data/lib/puppet/{network/http/session.rb → http/pool_entry.rb} +2 -3
  44. data/lib/puppet/http/proxy.rb +137 -0
  45. data/lib/puppet/http/redirector.rb +4 -12
  46. data/lib/puppet/http/resolver.rb +5 -15
  47. data/lib/puppet/http/resolver/server_list.rb +6 -10
  48. data/lib/puppet/http/resolver/settings.rb +4 -7
  49. data/lib/puppet/http/resolver/srv.rb +7 -11
  50. data/lib/puppet/http/response.rb +36 -54
  51. data/lib/puppet/http/response_converter.rb +24 -0
  52. data/lib/puppet/http/response_net_http.rb +42 -0
  53. data/lib/puppet/http/retry_after_handler.rb +4 -13
  54. data/lib/puppet/http/service.rb +12 -26
  55. data/lib/puppet/http/service/ca.rb +11 -22
  56. data/lib/puppet/http/service/compiler.rb +22 -69
  57. data/lib/puppet/http/service/file_server.rb +18 -27
  58. data/lib/puppet/http/service/puppetserver.rb +26 -12
  59. data/lib/puppet/http/service/report.rb +8 -10
  60. data/lib/puppet/http/session.rb +11 -20
  61. data/lib/puppet/{network/http → http}/site.rb +1 -2
  62. data/lib/puppet/indirector/catalog/rest.rb +2 -4
  63. data/lib/puppet/indirector/facts/facter.rb +25 -3
  64. data/lib/puppet/indirector/facts/rest.rb +3 -22
  65. data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -9
  66. data/lib/puppet/indirector/file_content/rest.rb +2 -6
  67. data/lib/puppet/indirector/file_metadata/rest.rb +3 -9
  68. data/lib/puppet/indirector/file_server.rb +1 -8
  69. data/lib/puppet/indirector/generic_http.rb +0 -11
  70. data/lib/puppet/indirector/node/rest.rb +2 -4
  71. data/lib/puppet/indirector/report/rest.rb +3 -8
  72. data/lib/puppet/indirector/request.rb +0 -101
  73. data/lib/puppet/indirector/rest.rb +12 -263
  74. data/lib/puppet/module_tool/applications.rb +0 -1
  75. data/lib/puppet/network/authconfig.rb +2 -96
  76. data/lib/puppet/network/authorization.rb +13 -35
  77. data/lib/puppet/network/formats.rb +67 -0
  78. data/lib/puppet/network/http.rb +3 -3
  79. data/lib/puppet/network/http/api/indirected_routes.rb +2 -20
  80. data/lib/puppet/network/http/api/master/v3.rb +11 -13
  81. data/lib/puppet/network/http/connection.rb +247 -316
  82. data/lib/puppet/network/http/handler.rb +0 -1
  83. data/lib/puppet/network/http_pool.rb +16 -34
  84. data/lib/puppet/node.rb +1 -30
  85. data/lib/puppet/pal/json_catalog_encoder.rb +4 -0
  86. data/lib/puppet/pal/pal_impl.rb +3 -1
  87. data/lib/puppet/parser/ast/pops_bridge.rb +0 -38
  88. data/lib/puppet/parser/compiler.rb +0 -198
  89. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +14 -39
  90. data/lib/puppet/parser/resource.rb +0 -69
  91. data/lib/puppet/pops/evaluator/evaluator_impl.rb +0 -5
  92. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +3 -3
  93. data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
  94. data/lib/puppet/pops/issues.rb +0 -5
  95. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -8
  96. data/lib/puppet/pops/model/ast.pp +0 -42
  97. data/lib/puppet/pops/model/ast.rb +0 -290
  98. data/lib/puppet/pops/model/factory.rb +0 -45
  99. data/lib/puppet/pops/model/model_label_provider.rb +0 -5
  100. data/lib/puppet/pops/model/model_tree_dumper.rb +0 -22
  101. data/lib/puppet/pops/model/pn_transformer.rb +0 -16
  102. data/lib/puppet/pops/parser/egrammar.ra +0 -56
  103. data/lib/puppet/pops/parser/eparser.rb +1520 -1712
  104. data/lib/puppet/pops/parser/lexer2.rb +4 -4
  105. data/lib/puppet/pops/parser/parser_support.rb +0 -5
  106. data/lib/puppet/pops/resource/resource_type_impl.rb +2 -24
  107. data/lib/puppet/pops/types/type_calculator.rb +0 -7
  108. data/lib/puppet/pops/types/type_parser.rb +0 -4
  109. data/lib/puppet/pops/types/types.rb +0 -1
  110. data/lib/puppet/pops/validation/checker4_0.rb +9 -37
  111. data/lib/puppet/pops/validation/tasks_checker.rb +0 -12
  112. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -2
  113. data/lib/puppet/property/list.rb +1 -1
  114. data/lib/puppet/provider.rb +0 -13
  115. data/lib/puppet/provider/group/groupadd.rb +13 -8
  116. data/lib/puppet/provider/nameservice.rb +0 -18
  117. data/lib/puppet/provider/package/apt.rb +30 -2
  118. data/lib/puppet/provider/package/aptitude.rb +6 -0
  119. data/lib/puppet/provider/package/dpkg.rb +0 -10
  120. data/lib/puppet/provider/package/gem.rb +23 -3
  121. data/lib/puppet/provider/package/pip.rb +0 -1
  122. data/lib/puppet/provider/package/pkg.rb +0 -4
  123. data/lib/puppet/provider/package/portage.rb +1 -1
  124. data/lib/puppet/provider/package/puppet_gem.rb +1 -4
  125. data/lib/puppet/provider/service/debian.rb +2 -0
  126. data/lib/puppet/provider/service/smf.rb +191 -73
  127. data/lib/puppet/provider/user/directoryservice.rb +0 -10
  128. data/lib/puppet/provider/user/useradd.rb +55 -8
  129. data/lib/puppet/reference/configuration.rb +7 -5
  130. data/lib/puppet/reference/indirection.rb +1 -1
  131. data/lib/puppet/resource.rb +1 -89
  132. data/lib/puppet/resource/catalog.rb +1 -14
  133. data/lib/puppet/resource/type.rb +3 -119
  134. data/lib/puppet/resource/type_collection.rb +3 -48
  135. data/lib/puppet/runtime.rb +1 -2
  136. data/lib/puppet/settings.rb +45 -33
  137. data/lib/puppet/settings/integer_setting.rb +17 -0
  138. data/lib/puppet/settings/port_setting.rb +15 -0
  139. data/lib/puppet/settings/priority_setting.rb +5 -4
  140. data/lib/puppet/ssl.rb +10 -6
  141. data/lib/puppet/ssl/base.rb +3 -5
  142. data/lib/puppet/ssl/certificate.rb +0 -6
  143. data/lib/puppet/ssl/certificate_request.rb +1 -12
  144. data/lib/puppet/ssl/certificate_signer.rb +6 -0
  145. data/lib/puppet/ssl/oids.rb +3 -1
  146. data/lib/puppet/ssl/ssl_provider.rb +17 -0
  147. data/lib/puppet/ssl/state_machine.rb +3 -1
  148. data/lib/puppet/ssl/verifier.rb +2 -0
  149. data/lib/puppet/test/test_helper.rb +1 -3
  150. data/lib/puppet/transaction.rb +1 -7
  151. data/lib/puppet/transaction/report.rb +2 -4
  152. data/lib/puppet/type.rb +0 -76
  153. data/lib/puppet/type/file.rb +5 -7
  154. data/lib/puppet/type/file/checksum.rb +1 -1
  155. data/lib/puppet/type/file/source.rb +1 -1
  156. data/lib/puppet/type/filebucket.rb +3 -3
  157. data/lib/puppet/type/package.rb +8 -16
  158. data/lib/puppet/type/user.rb +1 -1
  159. data/lib/puppet/util/execution.rb +0 -11
  160. data/lib/puppet/util/http_proxy.rb +2 -215
  161. data/lib/puppet/util/monkey_patches.rb +0 -46
  162. data/lib/puppet/util/rdoc.rb +0 -7
  163. data/lib/puppet/util/retry_action.rb +1 -1
  164. data/lib/puppet/util/run_mode.rb +9 -1
  165. data/lib/puppet/util/windows.rb +3 -8
  166. data/lib/puppet/util/windows/daemon.rb +360 -0
  167. data/lib/puppet/util/windows/error.rb +1 -0
  168. data/lib/puppet/util/windows/eventlog.rb +4 -9
  169. data/lib/puppet/util/windows/file.rb +8 -242
  170. data/lib/puppet/util/windows/monkey_patches/process.rb +414 -0
  171. data/lib/puppet/util/windows/process.rb +4 -226
  172. data/lib/puppet/util/windows/service.rb +9 -460
  173. data/lib/puppet/util/windows/string.rb +12 -13
  174. data/lib/puppet/util/yaml.rb +0 -22
  175. data/lib/puppet/vendor/require_vendored.rb +0 -1
  176. data/lib/puppet/version.rb +1 -1
  177. data/lib/puppet/x509.rb +5 -1
  178. data/lib/puppet/x509/cert_provider.rb +29 -1
  179. data/locales/puppet.pot +521 -1226
  180. data/man/man5/puppet.conf.5 +35 -95
  181. data/man/man8/puppet-agent.8 +1 -1
  182. data/man/man8/puppet-apply.8 +1 -1
  183. data/man/man8/puppet-catalog.8 +1 -1
  184. data/man/man8/puppet-config.8 +1 -1
  185. data/man/man8/puppet-describe.8 +1 -1
  186. data/man/man8/puppet-device.8 +1 -1
  187. data/man/man8/puppet-doc.8 +1 -1
  188. data/man/man8/puppet-epp.8 +1 -1
  189. data/man/man8/puppet-facts.8 +57 -36
  190. data/man/man8/puppet-filebucket.8 +4 -4
  191. data/man/man8/puppet-generate.8 +1 -1
  192. data/man/man8/puppet-help.8 +1 -1
  193. data/man/man8/puppet-lookup.8 +1 -1
  194. data/man/man8/puppet-module.8 +1 -58
  195. data/man/man8/puppet-node.8 +1 -1
  196. data/man/man8/puppet-parser.8 +1 -1
  197. data/man/man8/puppet-plugin.8 +1 -1
  198. data/man/man8/puppet-report.8 +1 -1
  199. data/man/man8/puppet-resource.8 +1 -1
  200. data/man/man8/puppet-script.8 +1 -1
  201. data/man/man8/puppet-ssl.8 +1 -1
  202. data/man/man8/puppet.8 +2 -2
  203. data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
  204. data/spec/integration/application/agent_spec.rb +57 -11
  205. data/spec/integration/application/apply_spec.rb +1 -1
  206. data/spec/integration/application/filebucket_spec.rb +16 -16
  207. data/spec/integration/application/help_spec.rb +2 -0
  208. data/spec/integration/application/plugin_spec.rb +23 -1
  209. data/spec/integration/defaults_spec.rb +7 -3
  210. data/spec/integration/indirector/file_content/file_server_spec.rb +0 -2
  211. data/spec/integration/indirector/file_metadata/file_server_spec.rb +0 -2
  212. data/spec/integration/network/http_pool_spec.rb +3 -21
  213. data/spec/integration/parser/catalog_spec.rb +0 -38
  214. data/spec/integration/parser/node_spec.rb +0 -9
  215. data/spec/integration/parser/pcore_resource_spec.rb +0 -37
  216. data/spec/integration/type/file_spec.rb +5 -4
  217. data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -0
  218. data/spec/integration/util/windows/security_spec.rb +1 -1
  219. data/spec/lib/puppet_spec/puppetserver.rb +1 -1
  220. data/spec/lib/puppet_spec/settings.rb +1 -0
  221. data/spec/spec_helper.rb +2 -0
  222. data/spec/unit/agent_spec.rb +0 -2
  223. data/spec/unit/application/facts_spec.rb +86 -0
  224. data/spec/unit/application/filebucket_spec.rb +41 -39
  225. data/spec/unit/application/ssl_spec.rb +2 -2
  226. data/spec/unit/certificate_factory_spec.rb +1 -1
  227. data/spec/unit/configurer/downloader_spec.rb +6 -2
  228. data/spec/unit/configurer/plugin_handler_spec.rb +56 -18
  229. data/spec/unit/configurer_spec.rb +12 -9
  230. data/spec/unit/context/trusted_information_spec.rb +2 -6
  231. data/spec/unit/defaults_spec.rb +22 -47
  232. data/spec/unit/environments_spec.rb +0 -3
  233. data/spec/unit/face/facts_spec.rb +4 -0
  234. data/spec/unit/face/node_spec.rb +14 -2
  235. data/spec/unit/face/plugin_spec.rb +73 -33
  236. data/spec/unit/file_bucket/file_spec.rb +1 -1
  237. data/spec/unit/file_serving/configuration/parser_spec.rb +22 -18
  238. data/spec/unit/file_serving/configuration_spec.rb +6 -12
  239. data/spec/unit/functions/camelcase_spec.rb +1 -1
  240. data/spec/unit/functions/capitalize_spec.rb +1 -1
  241. data/spec/unit/functions/downcase_spec.rb +1 -1
  242. data/spec/unit/functions/upcase_spec.rb +1 -1
  243. data/spec/unit/http/client_spec.rb +7 -8
  244. data/spec/unit/{network/resolver_spec.rb → http/dns_spec.rb} +3 -3
  245. data/spec/unit/http/external_client_spec.rb +4 -4
  246. data/spec/unit/{network/http → http}/factory_spec.rb +5 -11
  247. data/spec/unit/{network/http/session_spec.rb → http/pool_entry_spec.rb} +3 -3
  248. data/spec/unit/{network/http → http}/pool_spec.rb +12 -17
  249. data/spec/unit/{util/http_proxy_spec.rb → http/proxy_spec.rb} +2 -69
  250. data/spec/unit/http/resolver_spec.rb +13 -13
  251. data/spec/unit/http/service/compiler_spec.rb +0 -62
  252. data/spec/unit/http/service/file_server_spec.rb +3 -3
  253. data/spec/unit/http/service/puppetserver_spec.rb +34 -4
  254. data/spec/unit/http/service_spec.rb +0 -1
  255. data/spec/unit/http/session_spec.rb +16 -14
  256. data/spec/unit/{network/http → http}/site_spec.rb +3 -3
  257. data/spec/unit/indirector/facts/facter_spec.rb +113 -0
  258. data/spec/unit/indirector/file_bucket_file/file_spec.rb +5 -3
  259. data/spec/unit/indirector/file_content/rest_spec.rb +0 -4
  260. data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -4
  261. data/spec/unit/indirector/file_server_spec.rb +1 -15
  262. data/spec/unit/indirector/report/rest_spec.rb +2 -17
  263. data/spec/unit/indirector/request_spec.rb +0 -264
  264. data/spec/unit/indirector/rest_spec.rb +98 -752
  265. data/spec/unit/network/authconfig_spec.rb +2 -129
  266. data/spec/unit/network/authorization_spec.rb +2 -55
  267. data/spec/unit/network/formats_spec.rb +45 -4
  268. data/spec/unit/network/http/api/indirected_routes_spec.rb +1 -92
  269. data/spec/unit/network/http/api/master/v3_spec.rb +28 -7
  270. data/spec/unit/network/http/api_spec.rb +10 -0
  271. data/spec/unit/network/http/connection_spec.rb +19 -41
  272. data/spec/unit/network/http/handler_spec.rb +0 -1
  273. data/spec/unit/network/http_pool_spec.rb +0 -4
  274. data/spec/unit/node/environment_spec.rb +33 -21
  275. data/spec/unit/node_spec.rb +2 -54
  276. data/spec/unit/parser/functions/create_resources_spec.rb +2 -20
  277. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +4 -7
  278. data/spec/unit/pops/loaders/loaders_spec.rb +6 -21
  279. data/spec/unit/pops/parser/parse_application_spec.rb +4 -22
  280. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -1
  281. data/spec/unit/pops/parser/parse_capabilities_spec.rb +8 -21
  282. data/spec/unit/pops/parser/parse_site_spec.rb +20 -24
  283. data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -71
  284. data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -1
  285. data/spec/unit/pops/types/type_calculator_spec.rb +6 -6
  286. data/spec/unit/pops/types/type_factory_spec.rb +1 -1
  287. data/spec/unit/pops/validator/validator_spec.rb +61 -46
  288. data/spec/unit/pops/visitor_spec.rb +1 -1
  289. data/spec/unit/provider/group/groupadd_spec.rb +5 -2
  290. data/spec/unit/provider/nameservice_spec.rb +0 -57
  291. data/spec/unit/provider/package/apt_spec.rb +24 -15
  292. data/spec/unit/provider/package/aptitude_spec.rb +1 -1
  293. data/spec/unit/provider/package/dpkg_spec.rb +0 -48
  294. data/spec/unit/provider/package/gem_spec.rb +32 -0
  295. data/spec/unit/provider/package/puppet_gem_spec.rb +3 -2
  296. data/spec/unit/provider/service/smf_spec.rb +401 -165
  297. data/spec/unit/provider/service/windows_spec.rb +0 -1
  298. data/spec/unit/provider/user/useradd_spec.rb +55 -3
  299. data/spec/unit/provider_spec.rb +0 -12
  300. data/spec/unit/resource/type_collection_spec.rb +2 -22
  301. data/spec/unit/resource_spec.rb +0 -56
  302. data/spec/unit/settings/http_extra_headers_spec.rb +2 -4
  303. data/spec/unit/settings/integer_setting_spec.rb +42 -0
  304. data/spec/unit/settings/port_setting_spec.rb +31 -0
  305. data/spec/unit/settings/priority_setting_spec.rb +4 -4
  306. data/spec/unit/settings_spec.rb +17 -0
  307. data/spec/unit/ssl/base_spec.rb +36 -3
  308. data/spec/unit/ssl/certificate_request_spec.rb +19 -55
  309. data/spec/unit/ssl/certificate_spec.rb +2 -11
  310. data/spec/unit/ssl/state_machine_spec.rb +0 -1
  311. data/spec/unit/ssl/verifier_spec.rb +0 -21
  312. data/spec/unit/transaction/report_spec.rb +0 -2
  313. data/spec/unit/transaction/resource_harness_spec.rb +2 -2
  314. data/spec/unit/transaction_spec.rb +45 -79
  315. data/spec/unit/type/file/checksum_spec.rb +6 -6
  316. data/spec/unit/type/file/content_spec.rb +1 -1
  317. data/spec/unit/type/file/ensure_spec.rb +1 -1
  318. data/spec/unit/type/file/mode_spec.rb +1 -1
  319. data/spec/unit/type/file/source_spec.rb +0 -1
  320. data/spec/unit/type/file_spec.rb +12 -6
  321. data/spec/unit/type/package_spec.rb +1 -1
  322. data/spec/unit/type_spec.rb +20 -0
  323. data/spec/unit/util/backups_spec.rb +0 -2
  324. data/spec/unit/util/execution_spec.rb +0 -29
  325. data/spec/unit/util/monkey_patches_spec.rb +0 -6
  326. data/spec/unit/util/run_mode_spec.rb +21 -121
  327. data/spec/unit/util/windows/string_spec.rb +1 -3
  328. data/spec/unit/util/yaml_spec.rb +0 -54
  329. data/spec/unit/util_spec.rb +0 -18
  330. metadata +48 -219
  331. data/conf/auth.conf +0 -150
  332. data/lib/puppet/application/cert.rb +0 -76
  333. data/lib/puppet/application/key.rb +0 -4
  334. data/lib/puppet/application/man.rb +0 -4
  335. data/lib/puppet/application/status.rb +0 -4
  336. data/lib/puppet/face/key.rb +0 -16
  337. data/lib/puppet/face/man.rb +0 -145
  338. data/lib/puppet/face/module/build.rb +0 -14
  339. data/lib/puppet/face/module/generate.rb +0 -14
  340. data/lib/puppet/face/module/search.rb +0 -103
  341. data/lib/puppet/face/status.rb +0 -51
  342. data/lib/puppet/indirector/certificate/file.rb +0 -9
  343. data/lib/puppet/indirector/certificate/rest.rb +0 -18
  344. data/lib/puppet/indirector/certificate_request/file.rb +0 -9
  345. data/lib/puppet/indirector/certificate_request/memory.rb +0 -7
  346. data/lib/puppet/indirector/certificate_request/rest.rb +0 -11
  347. data/lib/puppet/indirector/file_content/http.rb +0 -22
  348. data/lib/puppet/indirector/key/file.rb +0 -46
  349. data/lib/puppet/indirector/key/memory.rb +0 -7
  350. data/lib/puppet/indirector/ssl_file.rb +0 -162
  351. data/lib/puppet/indirector/status.rb +0 -3
  352. data/lib/puppet/indirector/status/local.rb +0 -12
  353. data/lib/puppet/indirector/status/rest.rb +0 -27
  354. data/lib/puppet/module_tool/applications/searcher.rb +0 -29
  355. data/lib/puppet/network/auth_config_parser.rb +0 -90
  356. data/lib/puppet/network/authstore.rb +0 -283
  357. data/lib/puppet/network/http/api/master/v3/authorization.rb +0 -18
  358. data/lib/puppet/network/http/api/master/v3/environment.rb +0 -88
  359. data/lib/puppet/network/http/base_pool.rb +0 -36
  360. data/lib/puppet/network/http/compression.rb +0 -127
  361. data/lib/puppet/network/http/connection_adapter.rb +0 -184
  362. data/lib/puppet/network/http/nocache_pool.rb +0 -28
  363. data/lib/puppet/network/rest_controller.rb +0 -2
  364. data/lib/puppet/network/rights.rb +0 -210
  365. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +0 -66
  366. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -22
  367. data/lib/puppet/parser/environment_compiler.rb +0 -202
  368. data/lib/puppet/pops/types/enumeration.rb +0 -16
  369. data/lib/puppet/resource/capability_finder.rb +0 -154
  370. data/lib/puppet/rest/errors.rb +0 -15
  371. data/lib/puppet/rest/response.rb +0 -35
  372. data/lib/puppet/rest/route.rb +0 -85
  373. data/lib/puppet/rest/routes.rb +0 -135
  374. data/lib/puppet/ssl/host.rb +0 -505
  375. data/lib/puppet/ssl/key.rb +0 -61
  376. data/lib/puppet/ssl/validator.rb +0 -61
  377. data/lib/puppet/ssl/validator/default_validator.rb +0 -209
  378. data/lib/puppet/ssl/validator/no_validator.rb +0 -22
  379. data/lib/puppet/ssl/verifier_adapter.rb +0 -58
  380. data/lib/puppet/status.rb +0 -40
  381. data/lib/puppet/util/connection.rb +0 -88
  382. data/lib/puppet/util/fact_dif.rb +0 -62
  383. data/lib/puppet/util/ssl.rb +0 -83
  384. data/lib/puppet/util/windows/api_types.rb +0 -309
  385. data/lib/puppet/util/windows/monkey_patches/dir.rb +0 -40
  386. data/lib/puppet/vendor/load_pathspec.rb +0 -1
  387. data/lib/puppet/vendor/pathspec/CHANGELOG.md +0 -2
  388. data/lib/puppet/vendor/pathspec/LICENSE +0 -201
  389. data/lib/puppet/vendor/pathspec/PUPPET_README.md +0 -6
  390. data/lib/puppet/vendor/pathspec/README.md +0 -53
  391. data/lib/puppet/vendor/pathspec/lib/pathspec.rb +0 -122
  392. data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +0 -275
  393. data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +0 -17
  394. data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +0 -14
  395. data/man/man8/puppet-key.8 +0 -126
  396. data/man/man8/puppet-man.8 +0 -76
  397. data/man/man8/puppet-status.8 +0 -108
  398. data/spec/integration/network/authconfig_spec.rb +0 -256
  399. data/spec/integration/util/windows/monkey_patches/dir_spec.rb +0 -11
  400. data/spec/unit/application/man_spec.rb +0 -52
  401. data/spec/unit/capability_spec.rb +0 -414
  402. data/spec/unit/face/key_spec.rb +0 -9
  403. data/spec/unit/face/module/search_spec.rb +0 -231
  404. data/spec/unit/face/status_spec.rb +0 -9
  405. data/spec/unit/indirector/certificate/file_spec.rb +0 -14
  406. data/spec/unit/indirector/certificate/rest_spec.rb +0 -61
  407. data/spec/unit/indirector/certificate_request/file_spec.rb +0 -14
  408. data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -25
  409. data/spec/unit/indirector/key/file_spec.rb +0 -78
  410. data/spec/unit/indirector/ssl_file_spec.rb +0 -305
  411. data/spec/unit/indirector/status/local_spec.rb +0 -10
  412. data/spec/unit/indirector/status/rest_spec.rb +0 -50
  413. data/spec/unit/module_tool/applications/searcher_spec.rb +0 -38
  414. data/spec/unit/network/auth_config_parser_spec.rb +0 -115
  415. data/spec/unit/network/authstore_spec.rb +0 -422
  416. data/spec/unit/network/http/api/master/v3/authorization_spec.rb +0 -57
  417. data/spec/unit/network/http/api/master/v3/environment_spec.rb +0 -185
  418. data/spec/unit/network/http/compression_spec.rb +0 -240
  419. data/spec/unit/network/http/nocache_pool_spec.rb +0 -64
  420. data/spec/unit/network/http_spec.rb +0 -9
  421. data/spec/unit/network/rights_spec.rb +0 -439
  422. data/spec/unit/parser/environment_compiler_spec.rb +0 -730
  423. data/spec/unit/pops/types/enumeration_spec.rb +0 -51
  424. data/spec/unit/resource/capability_finder_spec.rb +0 -148
  425. data/spec/unit/rest/route_spec.rb +0 -132
  426. data/spec/unit/ssl/host_spec.rb +0 -645
  427. data/spec/unit/ssl/key_spec.rb +0 -173
  428. data/spec/unit/ssl/validator_spec.rb +0 -278
  429. data/spec/unit/status_spec.rb +0 -45
  430. data/spec/unit/util/ssl_spec.rb +0 -91
@@ -1,185 +0,0 @@
1
- require 'spec_helper'
2
-
3
- require 'puppet/network/http'
4
-
5
- describe Puppet::Network::HTTP::API::Master::V3::Environment do
6
- let(:response) { Puppet::Network::HTTP::MemoryResponse.new }
7
-
8
- let(:environment) { Puppet::Node::Environment.create(:production, [], '/manifests') }
9
- let(:loader) { Puppet::Environments::Static.new(environment) }
10
-
11
- around :each do |example|
12
- Puppet.override(:environments => loader) do
13
- Puppet::Type.newtype :sql, :is_capability => true do
14
- newparam :name, :namevar => true
15
- end
16
- Puppet::Type.newtype :http, :is_capability => true do
17
- newparam :name, :namevar => true
18
- end
19
- example.run
20
- end
21
- end
22
-
23
- it "returns the environment catalog" do
24
- request = Puppet::Network::HTTP::Request.from_hash(:headers => { 'accept' => 'application/json' }, :routing_path => "environment/production")
25
-
26
- subject.call(request, response)
27
-
28
- expect(response.code).to eq(200)
29
-
30
- catalog = JSON.parse(response.body)
31
- expect(catalog['environment']).to eq('production')
32
- expect(catalog['applications']).to eq({})
33
- end
34
-
35
- describe "processing the environment catalog" do
36
- def compile_site_to_catalog(site, code_id=nil)
37
- Puppet[:code] = <<-MANIFEST
38
- define db() { }
39
- Db produces Sql { }
40
-
41
- define web() { }
42
- Web consumes Sql { }
43
- Web produces Http { }
44
-
45
- application myapp() {
46
- db { $name:
47
- export => Sql[$name],
48
- }
49
- web { $name:
50
- consume => Sql[$name],
51
- export => Http[$name],
52
- }
53
- }
54
- site {
55
- #{site}
56
- }
57
- MANIFEST
58
- Puppet::Parser::EnvironmentCompiler.compile(environment, code_id).filter { |r| r.virtual? }
59
- end
60
-
61
-
62
- it "includes specified applications" do
63
- catalog = compile_site_to_catalog <<-MANIFEST
64
- myapp { 'test':
65
- nodes => {
66
- Node['foo.example.com'] => Db['test'],
67
- Node['bar.example.com'] => Web['test'],
68
- },
69
- }
70
- MANIFEST
71
-
72
- result = subject.build_environment_graph(catalog)
73
-
74
- expect(result[:applications]).to eq({'Myapp[test]' =>
75
- {'Db[test]' => {:produces => ['Sql[test]'], :consumes => [], :node => 'foo.example.com'},
76
- 'Web[test]' => {:produces => ['Http[test]'], :consumes => ['Sql[test]'], :node => 'bar.example.com'}}})
77
- end
78
-
79
- it "fails if a component isn't mapped to a node" do
80
- catalog = compile_site_to_catalog <<-MANIFEST
81
- myapp { 'test':
82
- nodes => {
83
- Node['foo.example.com'] => Db['test'],
84
- }
85
- }
86
- MANIFEST
87
-
88
- expect { subject.build_environment_graph(catalog) }.to raise_error(Puppet::ParseError, /has components without assigned nodes/)
89
- end
90
-
91
- it "fails if a non-existent component is mapped to a node" do
92
- catalog = compile_site_to_catalog <<-MANIFEST
93
- myapp { 'test':
94
- nodes => {
95
- Node['foo.example.com'] => [ Db['test'], Web['test'], Web['foobar'] ],
96
- }
97
- }
98
- MANIFEST
99
-
100
- expect { subject.build_environment_graph(catalog) }.to raise_error(Puppet::ParseError, /assigns nodes to non-existent components/)
101
- end
102
-
103
- it "fails if a component is mapped twice" do
104
- catalog = compile_site_to_catalog <<-MANIFEST
105
- myapp { 'test':
106
- nodes => {
107
- Node['foo.example.com'] => [ Db['test'], Web['test'] ],
108
- Node['bar.example.com'] => [ Web['test'] ],
109
- }
110
- }
111
- MANIFEST
112
-
113
- expect { subject.build_environment_graph(catalog) }.to raise_error(Puppet::ParseError, /assigns multiple nodes to component/)
114
- end
115
-
116
- it "fails if an application maps components from other applications" do
117
- catalog = compile_site_to_catalog <<-MANIFEST
118
- myapp { 'test':
119
- nodes => {
120
- Node['foo.example.com'] => [ Db['test'], Web['test'] ],
121
- }
122
- }
123
- myapp { 'other':
124
- nodes => {
125
- Node['foo.example.com'] => [ Db['other'], Web['other'], Web['test'] ],
126
- }
127
- }
128
- MANIFEST
129
-
130
- expect { subject.build_environment_graph(catalog) }.to raise_error(Puppet::ParseError, /assigns nodes to non-existent components/)
131
- end
132
-
133
- it "doesn't fail if the catalog contains a node cycle" do
134
- catalog = compile_site_to_catalog <<-MANIFEST
135
- myapp { 'test':
136
- nodes => {
137
- Node['foo.example.com'] => [ Db['test'] ],
138
- Node['bar.example.com'] => [ Web['test'] ],
139
- }
140
- }
141
- myapp { 'other':
142
- nodes => {
143
- Node['foo.example.com'] => [ Web['other'] ],
144
- Node['bar.example.com'] => [ Db['other'] ],
145
- }
146
- }
147
- MANIFEST
148
-
149
- expect { subject.build_environment_graph(catalog) }.not_to raise_error
150
- end
151
- end
152
-
153
- it "returns 404 if the environment doesn't exist" do
154
- request = Puppet::Network::HTTP::Request.from_hash(:routing_path => "environment/development")
155
-
156
- expect { subject.call(request, response) }.to raise_error(Puppet::Network::HTTP::Error::HTTPNotFoundError, /development is not a known environment/)
157
- end
158
-
159
- it "omits code_id if unspecified" do
160
- request = Puppet::Network::HTTP::Request.from_hash(:routing_path => "environment/production")
161
-
162
- subject.call(request, response)
163
-
164
- expect(JSON.parse(response.body)['code_id']).to be_nil
165
- end
166
-
167
- it "includes code_id if specified" do
168
- request = Puppet::Network::HTTP::Request.from_hash(:params => {:code_id => '12345'}, :routing_path => "environment/production")
169
-
170
- subject.call(request, response)
171
-
172
- expect(JSON.parse(response.body)['code_id']).to eq('12345')
173
- end
174
-
175
- it "uses code_id from the catalog if it differs from the request" do
176
- request = Puppet::Network::HTTP::Request.from_hash(:params => {:code_id => '12345'}, :routing_path => "environment/production")
177
-
178
- allow_any_instance_of(Puppet::Resource::Catalog).to receive(:code_id).and_return('67890')
179
-
180
- subject.call(request, response)
181
-
182
- expect(JSON.parse(response.body)['code_id']).to eq('67890')
183
- end
184
- end
185
-
@@ -1,240 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "http compression" do
4
- let(:data) { "uncompresseddata" }
5
- let(:response) { double('response') }
6
- let(:compressed_zlib) { Zlib::Deflate.deflate(data) }
7
- let(:compressed_gzip) do
8
- str = StringIO.new
9
- writer = Zlib::GzipWriter.new(str)
10
- writer.write(data)
11
- writer.close
12
- str.string
13
- end
14
-
15
- def stubs_response_with(response, content_encoding, body)
16
- allow(response).to receive(:[]).with('content-encoding').and_return(content_encoding)
17
- allow(response).to receive(:body).and_return(body)
18
- end
19
-
20
- describe "when zlib is not available" do
21
- before(:each) do
22
- allow(Puppet.features).to receive(:zlib?).and_return(false)
23
-
24
- require 'puppet/network/http/compression'
25
- class HttpUncompressor
26
- include Puppet::Network::HTTP::Compression::None
27
- end
28
-
29
- @uncompressor = HttpUncompressor.new
30
- end
31
-
32
- it "should have a module function that returns the None underlying module" do
33
- expect(Puppet::Network::HTTP::Compression.module).to eq(Puppet::Network::HTTP::Compression::None)
34
- end
35
-
36
- it "should not add any Accept-Encoding header" do
37
- expect(@uncompressor.add_accept_encoding({})).to eq({})
38
- end
39
-
40
- it "should not tamper the body" do
41
- response = double('response', :body => data)
42
- expect(@uncompressor.uncompress_body(response)).to eq(data)
43
- end
44
-
45
- it "should yield an identity uncompressor" do
46
- response = double('response')
47
- @uncompressor.uncompress(response) { |u|
48
- expect(u).to be_instance_of(Puppet::Network::HTTP::Compression::IdentityAdapter)
49
- }
50
- end
51
- end
52
-
53
- describe "when zlib is available" do
54
- require 'puppet/network/http/compression'
55
- class ActiveUncompressor
56
- include Puppet::Network::HTTP::Compression::Active
57
- end
58
-
59
- let(:uncompressor) { ActiveUncompressor.new }
60
-
61
- it "should have a module function that returns the Active underlying module" do
62
- expect(Puppet::Network::HTTP::Compression.module).to eq(Puppet::Network::HTTP::Compression::Active)
63
- end
64
-
65
- it "should add an Accept-Encoding header supporting compression" do
66
- headers = uncompressor.add_accept_encoding({})
67
- expect(headers).to have_key('accept-encoding')
68
- expect(headers['accept-encoding']).to match(/gzip/)
69
- expect(headers['accept-encoding']).to match(/deflate/)
70
- expect(headers['accept-encoding']).to match(/identity/)
71
- end
72
-
73
- describe "when uncompressing response body" do
74
- context "without compression" do
75
- it "should return untransformed response body with no content-encoding" do
76
- stubs_response_with(response, nil, data)
77
-
78
- expect(uncompressor.uncompress_body(response)).to eq(data)
79
- end
80
-
81
- it "should return untransformed response body with 'identity' content-encoding" do
82
- stubs_response_with(response, 'identity', data)
83
-
84
- expect(uncompressor.uncompress_body(response)).to eq(data)
85
- end
86
- end
87
-
88
- context "with 'zlib' content-encoding" do
89
- it "should use a Zlib inflater" do
90
- stubs_response_with(response, 'deflate', compressed_zlib)
91
-
92
- expect(uncompressor.uncompress_body(response)).to eq(data)
93
- end
94
-
95
- end
96
-
97
- context "with 'gzip' content-encoding" do
98
- it "should use a GzipReader" do
99
- stubs_response_with(response, 'gzip', compressed_gzip)
100
-
101
- expect(uncompressor.uncompress_body(response)).to eq(data)
102
- end
103
-
104
- it "should correctly decompress PSON containing UTF-8 in Binary Encoding" do
105
- # Simulate a compressed response body containing PSON containing UTF-8
106
- # using different UTF-8 widths:
107
-
108
- # \u06ff - ۿ - http://www.fileformat.info/info/unicode/char/06ff/index.htm - 0xDB 0xBF / 219 191
109
- # \u16A0 - ᚠ - http://www.fileformat.info/info/unicode/char/16A0/index.htm - 0xE1 0x9A 0xA0 / 225 154 160
110
- # \u{2070E} - 𠜎 - http://www.fileformat.info/info/unicode/char/2070E/index.htm - 0xF0 0xA0 0x9C 0x8E / 240 160 156 142
111
-
112
- pson = "foo\u06ff\u16A0\u{2070E}".to_pson # unicode expression eqivalent of "foo\xDB\xBF\xE1\x9A\xA0\xF0\xA0\x9C\x8E\" per above
113
- compressed_body_io = StringIO.new
114
- writer = Zlib::GzipWriter.new(compressed_body_io)
115
- writer.write(pson)
116
- writer.close
117
- compressed_body = compressed_body_io.string
118
-
119
- begin
120
- default_external = Encoding.default_external
121
- Encoding.default_external = Encoding::ISO_8859_1
122
-
123
- stubs_response_with(response, 'gzip', compressed_body)
124
-
125
- uncompressed = uncompressor.uncompress_body(response)
126
- # By default Zlib::GzipReader decompresses into Encoding.default_external, and we want to ensure our result is BINARY too
127
- expect(uncompressed.encoding).to eq(Encoding::BINARY)
128
- expect(uncompressed).to eq("\"foo\xDB\xBF\xE1\x9A\xA0\xF0\xA0\x9C\x8E\"".force_encoding(Encoding::BINARY))
129
- ensure
130
- Encoding.default_external = default_external
131
- end
132
- end
133
- end
134
- end
135
-
136
- describe "when uncompressing by chunk" do
137
- it "should yield an identity uncompressor with no content-encoding" do
138
- stubs_response_with(response, nil, data)
139
-
140
- expect { |b|
141
- uncompressor.uncompress(response).yield_once_with(Puppet::Network::HTTP::Compression::IdentityAdapter, &b)
142
- }
143
- end
144
-
145
- it "should yield an identity uncompressor with 'identity' content-encoding" do
146
- stubs_response_with(response, 'identity', data)
147
-
148
- expect { |b|
149
- uncompressor.uncompress(response).yield_once_with(Puppet::Network::HTTP::Compression::IdentityAdapter, &b)
150
- }
151
- end
152
-
153
- it "should yield a Zlib uncompressor with 'gzip' content-encoding" do
154
- stubs_response_with(response, 'gzip', compressed_gzip)
155
-
156
- expect { |b|
157
- uncompressor.uncompress(response).yield_once_with(Puppet::Network::HTTP::Compression::ZlibAdapter, &b)
158
- }
159
- end
160
-
161
- it "should yield a Zlib uncompressor with 'deflate' content-encoding" do
162
- stubs_response_with(response, 'deflate', compressed_zlib)
163
-
164
- expect { |b|
165
- uncompressor.uncompress(response).yield_once_with(Puppet::Network::HTTP::Compression::ZlibAdapter, &b)
166
- }
167
- end
168
-
169
- it "should close the underlying adapter" do
170
- stubs_response_with(response, 'identity', data)
171
- adapter = double('adapter')
172
- expect(Puppet::Network::HTTP::Compression::IdentityAdapter).to receive(:new).and_return(adapter)
173
-
174
- expect(adapter).to receive(:close)
175
- uncompressor.uncompress(response) { |u| }
176
- end
177
-
178
- it "should close the underlying adapter if the yielded block raises" do
179
- stubs_response_with(response, 'identity', data)
180
- adapter = double('adapter')
181
- expect(Puppet::Network::HTTP::Compression::IdentityAdapter).to receive(:new).and_return(adapter)
182
-
183
- expect(adapter).to receive(:close)
184
- expect {
185
- uncompressor.uncompress(response) { |u| raise ArgumentError, "whoops" }
186
- }.to raise_error(ArgumentError, "whoops")
187
- end
188
- end
189
-
190
- describe "zlib adapter" do
191
- it "should initialize the underlying inflater with gzip/zlib header parsing" do
192
- expect(Zlib::Inflate).to receive(:new).with(15 + 32)
193
-
194
- Puppet::Network::HTTP::Compression::Active::ZlibAdapter.new
195
- end
196
-
197
- it "should return the given chunk" do
198
- adapter = Puppet::Network::HTTP::Compression::Active::ZlibAdapter.new
199
-
200
- expect(adapter.uncompress(compressed_zlib)).to eq(data)
201
- end
202
-
203
- it "should try a 'regular' inflater on Zlib::DataError" do
204
- inflater = Zlib::Inflate.new(15 + 32)
205
- expect(inflater).to receive(:inflate).and_raise(Zlib::DataError.new("not a zlib stream"))
206
- adapter = Puppet::Network::HTTP::Compression::Active::ZlibAdapter.new(inflater)
207
-
208
- expect(adapter.uncompress(compressed_zlib)).to eq(data)
209
- end
210
-
211
- it "should raise the error the second time" do
212
- inflater = Zlib::Inflate.new(15 + 32)
213
- expect(inflater).to receive(:inflate).and_raise(Zlib::DataError.new("not a zlib stream"))
214
- adapter = Puppet::Network::HTTP::Compression::Active::ZlibAdapter.new(inflater)
215
-
216
- expect { adapter.uncompress("this is not compressed data") }.to raise_error(Zlib::DataError, /incorrect header check/)
217
- end
218
-
219
- it "should finish and close the stream" do
220
- inflater = double('inflater')
221
- expect(inflater).to receive(:finish)
222
- expect(inflater).to receive(:close)
223
- adapter = Puppet::Network::HTTP::Compression::Active::ZlibAdapter.new(inflater)
224
-
225
- adapter.close
226
- end
227
-
228
- it "should close the stream even if finish raises" do
229
- inflater = double('inflater')
230
- expect(inflater).to receive(:finish).and_raise(Zlib::BufError)
231
- expect(inflater).to receive(:close)
232
-
233
- adapter = Puppet::Network::HTTP::Compression::Active::ZlibAdapter.new(inflater)
234
- expect {
235
- adapter.close
236
- }.to raise_error(Zlib::BufError)
237
- end
238
- end
239
- end
240
- end
@@ -1,64 +0,0 @@
1
- require 'spec_helper'
2
-
3
- require 'puppet/network/http'
4
- require 'puppet/network/http/connection'
5
-
6
- describe Puppet::Network::HTTP::NoCachePool do
7
- let(:site) { Puppet::Network::HTTP::Site.new('https', 'rubygems.org', 443) }
8
- let(:verifier) { double('verifier', :setup_connection => nil) }
9
-
10
- it 'yields a started connection' do
11
- http = double('http', start: nil, finish: nil, started?: true)
12
-
13
- factory = Puppet::Network::HTTP::Factory.new
14
- allow(factory).to receive(:create_connection).and_return(http)
15
- pool = Puppet::Network::HTTP::NoCachePool.new(factory)
16
-
17
- expect { |b|
18
- pool.with_connection(site, verifier, &b)
19
- }.to yield_with_args(http)
20
- end
21
-
22
- it 'yields a new connection each time' do
23
- http1 = double('http1', start: nil, finish: nil, started?: true)
24
- http2 = double('http2', start: nil, finish: nil, started?: true)
25
-
26
- factory = Puppet::Network::HTTP::Factory.new
27
- allow(factory).to receive(:create_connection).and_return(http1, http2)
28
- pool = Puppet::Network::HTTP::NoCachePool.new(factory)
29
-
30
- expect { |b|
31
- pool.with_connection(site, verifier, &b)
32
- }.to yield_with_args(http1)
33
-
34
- expect { |b|
35
- pool.with_connection(site, verifier, &b)
36
- }.to yield_with_args(http2)
37
- end
38
-
39
- it 'has a close method' do
40
- Puppet::Network::HTTP::NoCachePool.new.close
41
- end
42
-
43
- it 'logs a deprecation warning' do
44
- http = double('http', start: nil, finish: nil, started?: true)
45
-
46
- factory = Puppet::Network::HTTP::Factory.new
47
- allow(factory).to receive(:create_connection).and_return(http)
48
- Puppet::Network::HTTP::NoCachePool.new(factory)
49
-
50
- expect(@logs).to include(an_object_having_attributes(level: :warning, message: /Puppet::Network::HTTP::NoCachePool is deprecated/))
51
- end
52
-
53
- it 'omits the warning when deprecations are disabled' do
54
- Puppet[:disable_warnings] = 'deprecations'
55
-
56
- http = double('http', start: nil, finish: nil, started?: true)
57
-
58
- factory = Puppet::Network::HTTP::Factory.new
59
- allow(factory).to receive(:create_connection).and_return(http)
60
- Puppet::Network::HTTP::NoCachePool.new(factory)
61
-
62
- expect(@logs).to eq([])
63
- end
64
- end