fluid_cli 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (329) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +1 -0
  3. data/dev.yml +5 -0
  4. data/exe/fluid +24 -0
  5. data/lib/fluid_cli/api.rb +135 -0
  6. data/lib/fluid_cli/assets/post_auth_page/index.html.erb +34 -0
  7. data/lib/fluid_cli/assets/post_auth_page/style.css +58 -0
  8. data/lib/fluid_cli/command.rb +55 -0
  9. data/lib/fluid_cli/commands/help.rb +21 -0
  10. data/lib/fluid_cli/commands/login.rb +30 -0
  11. data/lib/fluid_cli/commands/logout.rb +38 -0
  12. data/lib/fluid_cli/commands/switch.rb +23 -0
  13. data/lib/fluid_cli/commands/theme/common/company_helper.rb +15 -0
  14. data/lib/fluid_cli/commands/theme/common/root_helper.rb +95 -0
  15. data/lib/fluid_cli/commands/theme/dev.rb +61 -0
  16. data/lib/fluid_cli/commands/theme/help.rb +21 -0
  17. data/lib/fluid_cli/commands/theme/init.rb +46 -0
  18. data/lib/fluid_cli/commands/theme/pull.rb +68 -0
  19. data/lib/fluid_cli/commands/theme/push.rb +132 -0
  20. data/lib/fluid_cli/commands/theme.rb +23 -0
  21. data/lib/fluid_cli/commands/whoami.rb +23 -0
  22. data/lib/fluid_cli/commands.rb +19 -0
  23. data/lib/fluid_cli/company_switcher.rb +69 -0
  24. data/lib/fluid_cli/context.rb +691 -0
  25. data/lib/fluid_cli/db.rb +114 -0
  26. data/lib/fluid_cli/entry_point.rb +10 -0
  27. data/lib/fluid_cli/environment.rb +32 -0
  28. data/lib/fluid_cli/file_system_listener.rb +29 -0
  29. data/lib/fluid_cli/form.rb +42 -0
  30. data/lib/fluid_cli/git.rb +319 -0
  31. data/lib/fluid_cli/http_request.rb +54 -0
  32. data/lib/fluid_cli/identity_auth/servlet.rb +39 -0
  33. data/lib/fluid_cli/identity_auth.rb +126 -0
  34. data/lib/fluid_cli/options.rb +38 -0
  35. data/lib/fluid_cli/theme/dev_server/certificate_manager.rb +79 -0
  36. data/lib/fluid_cli/theme/dev_server/errors.rb +9 -0
  37. data/lib/fluid_cli/theme/dev_server/header_hash.rb +98 -0
  38. data/lib/fluid_cli/theme/dev_server/hooks/file_change_hook.rb +39 -0
  39. data/lib/fluid_cli/theme/dev_server/hot_reload/resources/hot-reload-no-script.html +27 -0
  40. data/lib/fluid_cli/theme/dev_server/hot_reload/resources/hot_reload.js +28 -0
  41. data/lib/fluid_cli/theme/dev_server/hot_reload/resources/sse_client.js +43 -0
  42. data/lib/fluid_cli/theme/dev_server/hot_reload/resources/theme.js +16 -0
  43. data/lib/fluid_cli/theme/dev_server/hot_reload/script_injector.rb +54 -0
  44. data/lib/fluid_cli/theme/dev_server/hot_reload.rb +75 -0
  45. data/lib/fluid_cli/theme/dev_server/local_assets.rb +92 -0
  46. data/lib/fluid_cli/theme/dev_server/proxy.rb +235 -0
  47. data/lib/fluid_cli/theme/dev_server/proxy_param_builder.rb +82 -0
  48. data/lib/fluid_cli/theme/dev_server/reload_mode.rb +34 -0
  49. data/lib/fluid_cli/theme/dev_server/sse.rb +75 -0
  50. data/lib/fluid_cli/theme/dev_server/watcher.rb +57 -0
  51. data/lib/fluid_cli/theme/dev_server/web_server.rb +140 -0
  52. data/lib/fluid_cli/theme/dev_server.rb +289 -0
  53. data/lib/fluid_cli/theme/development_theme.rb +101 -0
  54. data/lib/fluid_cli/theme/file.rb +105 -0
  55. data/lib/fluid_cli/theme/forms/select.rb +33 -0
  56. data/lib/fluid_cli/theme/mime_type.rb +34 -0
  57. data/lib/fluid_cli/theme/presenters/theme_presenter.rb +49 -0
  58. data/lib/fluid_cli/theme/presenters/themes_presenter.rb +31 -0
  59. data/lib/fluid_cli/theme/root.rb +62 -0
  60. data/lib/fluid_cli/theme/syncer/checksums.rb +66 -0
  61. data/lib/fluid_cli/theme/syncer/downloader.rb +54 -0
  62. data/lib/fluid_cli/theme/syncer/error_reporter.rb +45 -0
  63. data/lib/fluid_cli/theme/syncer/merger.rb +53 -0
  64. data/lib/fluid_cli/theme/syncer/operation.rb +58 -0
  65. data/lib/fluid_cli/theme/syncer/standard_reporter.rb +32 -0
  66. data/lib/fluid_cli/theme/syncer/unsupported_script_warning.rb +90 -0
  67. data/lib/fluid_cli/theme/syncer/uploader/forms/apply_to_all.rb +41 -0
  68. data/lib/fluid_cli/theme/syncer/uploader/forms/apply_to_all_form.rb +37 -0
  69. data/lib/fluid_cli/theme/syncer/uploader/forms/base_strategy_form.rb +64 -0
  70. data/lib/fluid_cli/theme/syncer/uploader/forms/select_delete_strategy.rb +29 -0
  71. data/lib/fluid_cli/theme/syncer/uploader/forms/select_update_strategy.rb +30 -0
  72. data/lib/fluid_cli/theme/syncer/uploader/json_delete_handler.rb +49 -0
  73. data/lib/fluid_cli/theme/syncer/uploader/json_update_handler.rb +71 -0
  74. data/lib/fluid_cli/theme/syncer/uploader.rb +105 -0
  75. data/lib/fluid_cli/theme/syncer.rb +412 -0
  76. data/lib/fluid_cli/theme/theme.rb +186 -0
  77. data/lib/fluid_cli/theme/ui/sync_progress_bar.rb +22 -0
  78. data/lib/fluid_cli/thread_pool/job.rb +35 -0
  79. data/lib/fluid_cli/thread_pool.rb +49 -0
  80. data/lib/fluid_cli/version.rb +3 -0
  81. data/lib/fluid_cli.rb +59 -0
  82. data/vendor/deps/base64/.document +5 -0
  83. data/vendor/deps/base64/.gitignore +9 -0
  84. data/vendor/deps/base64/BSDL +22 -0
  85. data/vendor/deps/base64/COPYING +56 -0
  86. data/vendor/deps/base64/Gemfile +9 -0
  87. data/vendor/deps/base64/LEGAL +60 -0
  88. data/vendor/deps/base64/README.md +48 -0
  89. data/vendor/deps/base64/Rakefile +31 -0
  90. data/vendor/deps/base64/base64.gemspec +28 -0
  91. data/vendor/deps/base64/bin/console +14 -0
  92. data/vendor/deps/base64/bin/setup +8 -0
  93. data/vendor/deps/base64/lib/base64.rb +382 -0
  94. data/vendor/deps/base64/sig/base64.rbs +358 -0
  95. data/vendor/deps/base64/test/base64/test_base64.rb +115 -0
  96. data/vendor/deps/base64/test_sig/test_base64.rb +44 -0
  97. data/vendor/deps/cli-kit/REVISION +1 -0
  98. data/vendor/deps/cli-kit/lib/cli/kit/args/definition.rb +286 -0
  99. data/vendor/deps/cli-kit/lib/cli/kit/args/evaluation.rb +215 -0
  100. data/vendor/deps/cli-kit/lib/cli/kit/args/parser/node.rb +128 -0
  101. data/vendor/deps/cli-kit/lib/cli/kit/args/parser.rb +125 -0
  102. data/vendor/deps/cli-kit/lib/cli/kit/args/tokenizer.rb +130 -0
  103. data/vendor/deps/cli-kit/lib/cli/kit/args.rb +16 -0
  104. data/vendor/deps/cli-kit/lib/cli/kit/base_command.rb +30 -0
  105. data/vendor/deps/cli-kit/lib/cli/kit/command_help.rb +268 -0
  106. data/vendor/deps/cli-kit/lib/cli/kit/command_registry.rb +150 -0
  107. data/vendor/deps/cli-kit/lib/cli/kit/config.rb +137 -0
  108. data/vendor/deps/cli-kit/lib/cli/kit/core_ext.rb +28 -0
  109. data/vendor/deps/cli-kit/lib/cli/kit/error_handler.rb +166 -0
  110. data/vendor/deps/cli-kit/lib/cli/kit/executor.rb +92 -0
  111. data/vendor/deps/cli-kit/lib/cli/kit/ini.rb +91 -0
  112. data/vendor/deps/cli-kit/lib/cli/kit/levenshtein.rb +92 -0
  113. data/vendor/deps/cli-kit/lib/cli/kit/logger.rb +94 -0
  114. data/vendor/deps/cli-kit/lib/cli/kit/opts.rb +248 -0
  115. data/vendor/deps/cli-kit/lib/cli/kit/parse_args.rb +55 -0
  116. data/vendor/deps/cli-kit/lib/cli/kit/resolver.rb +66 -0
  117. data/vendor/deps/cli-kit/lib/cli/kit/support/test_helper.rb +260 -0
  118. data/vendor/deps/cli-kit/lib/cli/kit/support.rb +11 -0
  119. data/vendor/deps/cli-kit/lib/cli/kit/system.rb +290 -0
  120. data/vendor/deps/cli-kit/lib/cli/kit/util.rb +118 -0
  121. data/vendor/deps/cli-kit/lib/cli/kit/version.rb +7 -0
  122. data/vendor/deps/cli-kit/lib/cli/kit.rb +139 -0
  123. data/vendor/deps/cli-ui/REVISION +1 -0
  124. data/vendor/deps/cli-ui/lib/cli/ui/ansi.rb +218 -0
  125. data/vendor/deps/cli-ui/lib/cli/ui/color.rb +101 -0
  126. data/vendor/deps/cli-ui/lib/cli/ui/formatter.rb +219 -0
  127. data/vendor/deps/cli-ui/lib/cli/ui/frame/frame_stack.rb +67 -0
  128. data/vendor/deps/cli-ui/lib/cli/ui/frame/frame_style/box.rb +179 -0
  129. data/vendor/deps/cli-ui/lib/cli/ui/frame/frame_style/bracket.rb +152 -0
  130. data/vendor/deps/cli-ui/lib/cli/ui/frame/frame_style.rb +127 -0
  131. data/vendor/deps/cli-ui/lib/cli/ui/frame.rb +286 -0
  132. data/vendor/deps/cli-ui/lib/cli/ui/glyph.rb +92 -0
  133. data/vendor/deps/cli-ui/lib/cli/ui/os.rb +63 -0
  134. data/vendor/deps/cli-ui/lib/cli/ui/printer.rb +64 -0
  135. data/vendor/deps/cli-ui/lib/cli/ui/progress.rb +132 -0
  136. data/vendor/deps/cli-ui/lib/cli/ui/progress_reporter.rb +209 -0
  137. data/vendor/deps/cli-ui/lib/cli/ui/prompt/interactive_options.rb +583 -0
  138. data/vendor/deps/cli-ui/lib/cli/ui/prompt/options_handler.rb +36 -0
  139. data/vendor/deps/cli-ui/lib/cli/ui/prompt.rb +381 -0
  140. data/vendor/deps/cli-ui/lib/cli/ui/spinner/async.rb +48 -0
  141. data/vendor/deps/cli-ui/lib/cli/ui/spinner/spin_group.rb +602 -0
  142. data/vendor/deps/cli-ui/lib/cli/ui/spinner.rb +79 -0
  143. data/vendor/deps/cli-ui/lib/cli/ui/stdout_router.rb +399 -0
  144. data/vendor/deps/cli-ui/lib/cli/ui/table.rb +83 -0
  145. data/vendor/deps/cli-ui/lib/cli/ui/terminal.rb +55 -0
  146. data/vendor/deps/cli-ui/lib/cli/ui/truncater.rb +106 -0
  147. data/vendor/deps/cli-ui/lib/cli/ui/version.rb +8 -0
  148. data/vendor/deps/cli-ui/lib/cli/ui/widgets/base.rb +46 -0
  149. data/vendor/deps/cli-ui/lib/cli/ui/widgets/status.rb +79 -0
  150. data/vendor/deps/cli-ui/lib/cli/ui/widgets.rb +89 -0
  151. data/vendor/deps/cli-ui/lib/cli/ui/work_queue.rb +142 -0
  152. data/vendor/deps/cli-ui/lib/cli/ui/wrap.rb +61 -0
  153. data/vendor/deps/cli-ui/lib/cli/ui.rb +359 -0
  154. data/vendor/deps/cli-ui/vendor/reentrant_mutex.rb +78 -0
  155. data/vendor/deps/debug/CONTRIBUTING.md +573 -0
  156. data/vendor/deps/debug/Gemfile +10 -0
  157. data/vendor/deps/debug/LICENSE.txt +22 -0
  158. data/vendor/deps/debug/README.md +996 -0
  159. data/vendor/deps/debug/Rakefile +57 -0
  160. data/vendor/deps/debug/TODO.md +23 -0
  161. data/vendor/deps/debug/debug.gemspec +33 -0
  162. data/vendor/deps/debug/exe/rdbg +53 -0
  163. data/vendor/deps/debug/ext/debug/Makefile +273 -0
  164. data/vendor/deps/debug/ext/debug/debug.c +228 -0
  165. data/vendor/deps/debug/ext/debug/debug_version.h +1 -0
  166. data/vendor/deps/debug/ext/debug/extconf.rb +27 -0
  167. data/vendor/deps/debug/ext/debug/iseq_collector.c +93 -0
  168. data/vendor/deps/debug/lib/debug/abbrev_command.rb +77 -0
  169. data/vendor/deps/debug/lib/debug/breakpoint.rb +556 -0
  170. data/vendor/deps/debug/lib/debug/client.rb +263 -0
  171. data/vendor/deps/debug/lib/debug/color.rb +123 -0
  172. data/vendor/deps/debug/lib/debug/config.rb +592 -0
  173. data/vendor/deps/debug/lib/debug/console.rb +224 -0
  174. data/vendor/deps/debug/lib/debug/dap_custom/traceInspector.rb +336 -0
  175. data/vendor/deps/debug/lib/debug/debug.bundle +0 -0
  176. data/vendor/deps/debug/lib/debug/frame_info.rb +190 -0
  177. data/vendor/deps/debug/lib/debug/irb_integration.rb +37 -0
  178. data/vendor/deps/debug/lib/debug/local.rb +115 -0
  179. data/vendor/deps/debug/lib/debug/open.rb +13 -0
  180. data/vendor/deps/debug/lib/debug/open_nonstop.rb +15 -0
  181. data/vendor/deps/debug/lib/debug/prelude.rb +50 -0
  182. data/vendor/deps/debug/lib/debug/server.rb +534 -0
  183. data/vendor/deps/debug/lib/debug/server_cdp.rb +1348 -0
  184. data/vendor/deps/debug/lib/debug/server_dap.rb +1108 -0
  185. data/vendor/deps/debug/lib/debug/session.rb +2667 -0
  186. data/vendor/deps/debug/lib/debug/source_repository.rb +150 -0
  187. data/vendor/deps/debug/lib/debug/start.rb +5 -0
  188. data/vendor/deps/debug/lib/debug/thread_client.rb +1457 -0
  189. data/vendor/deps/debug/lib/debug/tracer.rb +241 -0
  190. data/vendor/deps/debug/lib/debug/version.rb +5 -0
  191. data/vendor/deps/debug/lib/debug.rb +9 -0
  192. data/vendor/deps/debug/misc/README.md.erb +660 -0
  193. data/vendor/deps/listen/.github/release-drafter.yml +17 -0
  194. data/vendor/deps/listen/.github/workflows/development.yml +67 -0
  195. data/vendor/deps/listen/.github/workflows/push.yml +12 -0
  196. data/vendor/deps/listen/.gitignore +28 -0
  197. data/vendor/deps/listen/.rspec +3 -0
  198. data/vendor/deps/listen/.rubocop.yml +283 -0
  199. data/vendor/deps/listen/.yardopts +11 -0
  200. data/vendor/deps/listen/CHANGELOG.md +1 -0
  201. data/vendor/deps/listen/CONTRIBUTING.md +45 -0
  202. data/vendor/deps/listen/Gemfile +33 -0
  203. data/vendor/deps/listen/Guardfile +26 -0
  204. data/vendor/deps/listen/LICENSE.txt +22 -0
  205. data/vendor/deps/listen/README.md +490 -0
  206. data/vendor/deps/listen/Rakefile +154 -0
  207. data/vendor/deps/listen/bin/listen +11 -0
  208. data/vendor/deps/listen/lib/listen/adapter/base.rb +129 -0
  209. data/vendor/deps/listen/lib/listen/adapter/bsd.rb +104 -0
  210. data/vendor/deps/listen/lib/listen/adapter/config.rb +31 -0
  211. data/vendor/deps/listen/lib/listen/adapter/darwin.rb +77 -0
  212. data/vendor/deps/listen/lib/listen/adapter/linux.rb +108 -0
  213. data/vendor/deps/listen/lib/listen/adapter/polling.rb +40 -0
  214. data/vendor/deps/listen/lib/listen/adapter/windows.rb +96 -0
  215. data/vendor/deps/listen/lib/listen/adapter.rb +43 -0
  216. data/vendor/deps/listen/lib/listen/backend.rb +40 -0
  217. data/vendor/deps/listen/lib/listen/change.rb +69 -0
  218. data/vendor/deps/listen/lib/listen/cli.rb +65 -0
  219. data/vendor/deps/listen/lib/listen/directory.rb +93 -0
  220. data/vendor/deps/listen/lib/listen/error.rb +11 -0
  221. data/vendor/deps/listen/lib/listen/event/config.rb +39 -0
  222. data/vendor/deps/listen/lib/listen/event/loop.rb +92 -0
  223. data/vendor/deps/listen/lib/listen/event/processor.rb +128 -0
  224. data/vendor/deps/listen/lib/listen/event/queue.rb +52 -0
  225. data/vendor/deps/listen/lib/listen/file.rb +95 -0
  226. data/vendor/deps/listen/lib/listen/fsm.rb +131 -0
  227. data/vendor/deps/listen/lib/listen/listener/config.rb +41 -0
  228. data/vendor/deps/listen/lib/listen/listener.rb +136 -0
  229. data/vendor/deps/listen/lib/listen/logger.rb +65 -0
  230. data/vendor/deps/listen/lib/listen/monotonic_time.rb +27 -0
  231. data/vendor/deps/listen/lib/listen/options.rb +24 -0
  232. data/vendor/deps/listen/lib/listen/queue_optimizer.rb +129 -0
  233. data/vendor/deps/listen/lib/listen/record/entry.rb +66 -0
  234. data/vendor/deps/listen/lib/listen/record/symlink_detector.rb +47 -0
  235. data/vendor/deps/listen/lib/listen/record.rb +122 -0
  236. data/vendor/deps/listen/lib/listen/silencer/controller.rb +50 -0
  237. data/vendor/deps/listen/lib/listen/silencer.rb +106 -0
  238. data/vendor/deps/listen/lib/listen/thread.rb +54 -0
  239. data/vendor/deps/listen/lib/listen/version.rb +5 -0
  240. data/vendor/deps/listen/lib/listen.rb +47 -0
  241. data/vendor/deps/listen/listen.gemspec +40 -0
  242. data/vendor/deps/listen/spec/acceptance/listen_spec.rb +320 -0
  243. data/vendor/deps/listen/spec/lib/listen/adapter/base_spec.rb +101 -0
  244. data/vendor/deps/listen/spec/lib/listen/adapter/bsd_spec.rb +13 -0
  245. data/vendor/deps/listen/spec/lib/listen/adapter/config_spec.rb +122 -0
  246. data/vendor/deps/listen/spec/lib/listen/adapter/darwin_spec.rb +82 -0
  247. data/vendor/deps/listen/spec/lib/listen/adapter/linux_spec.rb +199 -0
  248. data/vendor/deps/listen/spec/lib/listen/adapter/polling_spec.rb +83 -0
  249. data/vendor/deps/listen/spec/lib/listen/adapter/windows_spec.rb +13 -0
  250. data/vendor/deps/listen/spec/lib/listen/adapter_spec.rb +69 -0
  251. data/vendor/deps/listen/spec/lib/listen/backend_spec.rb +82 -0
  252. data/vendor/deps/listen/spec/lib/listen/change_spec.rb +102 -0
  253. data/vendor/deps/listen/spec/lib/listen/cli_spec.rb +116 -0
  254. data/vendor/deps/listen/spec/lib/listen/directory_spec.rb +284 -0
  255. data/vendor/deps/listen/spec/lib/listen/event/config_spec.rb +33 -0
  256. data/vendor/deps/listen/spec/lib/listen/event/loop_spec.rb +118 -0
  257. data/vendor/deps/listen/spec/lib/listen/event/processor_spec.rb +250 -0
  258. data/vendor/deps/listen/spec/lib/listen/event/queue_spec.rb +118 -0
  259. data/vendor/deps/listen/spec/lib/listen/file_spec.rb +254 -0
  260. data/vendor/deps/listen/spec/lib/listen/fsm_spec.rb +147 -0
  261. data/vendor/deps/listen/spec/lib/listen/listener/config_spec.rb +29 -0
  262. data/vendor/deps/listen/spec/lib/listen/listener_spec.rb +321 -0
  263. data/vendor/deps/listen/spec/lib/listen/logger_spec.rb +212 -0
  264. data/vendor/deps/listen/spec/lib/listen/monotonic_time_spec.rb +58 -0
  265. data/vendor/deps/listen/spec/lib/listen/queue_optimizer_spec.rb +111 -0
  266. data/vendor/deps/listen/spec/lib/listen/record_spec.rb +424 -0
  267. data/vendor/deps/listen/spec/lib/listen/silencer/controller_spec.rb +97 -0
  268. data/vendor/deps/listen/spec/lib/listen/silencer_spec.rb +109 -0
  269. data/vendor/deps/listen/spec/lib/listen/thread_spec.rb +133 -0
  270. data/vendor/deps/listen/spec/lib/listen_spec.rb +25 -0
  271. data/vendor/deps/listen/spec/spec_helper.rb +49 -0
  272. data/vendor/deps/listen/spec/support/acceptance_helper.rb +260 -0
  273. data/vendor/deps/listen/spec/support/fixtures_helper.rb +32 -0
  274. data/vendor/deps/listen/spec/support/platform_helper.rb +17 -0
  275. data/vendor/deps/observer/.github/dependabot.yml +6 -0
  276. data/vendor/deps/observer/.github/workflows/test.yml +33 -0
  277. data/vendor/deps/observer/.gitignore +8 -0
  278. data/vendor/deps/observer/BSDL +22 -0
  279. data/vendor/deps/observer/COPYING +56 -0
  280. data/vendor/deps/observer/Gemfile +9 -0
  281. data/vendor/deps/observer/README.md +139 -0
  282. data/vendor/deps/observer/Rakefile +10 -0
  283. data/vendor/deps/observer/bin/console +14 -0
  284. data/vendor/deps/observer/bin/setup +8 -0
  285. data/vendor/deps/observer/lib/observer.rb +229 -0
  286. data/vendor/deps/observer/observer.gemspec +32 -0
  287. data/vendor/deps/observer/test/test_observer.rb +66 -0
  288. data/vendor/deps/webrick/.gitignore +9 -0
  289. data/vendor/deps/webrick/Gemfile +3 -0
  290. data/vendor/deps/webrick/LICENSE.txt +22 -0
  291. data/vendor/deps/webrick/README.md +61 -0
  292. data/vendor/deps/webrick/Rakefile +10 -0
  293. data/vendor/deps/webrick/lib/webrick/accesslog.rb +157 -0
  294. data/vendor/deps/webrick/lib/webrick/cgi.rb +313 -0
  295. data/vendor/deps/webrick/lib/webrick/compat.rb +36 -0
  296. data/vendor/deps/webrick/lib/webrick/config.rb +158 -0
  297. data/vendor/deps/webrick/lib/webrick/cookie.rb +172 -0
  298. data/vendor/deps/webrick/lib/webrick/htmlutils.rb +30 -0
  299. data/vendor/deps/webrick/lib/webrick/httpauth/authenticator.rb +117 -0
  300. data/vendor/deps/webrick/lib/webrick/httpauth/basicauth.rb +116 -0
  301. data/vendor/deps/webrick/lib/webrick/httpauth/digestauth.rb +395 -0
  302. data/vendor/deps/webrick/lib/webrick/httpauth/htdigest.rb +132 -0
  303. data/vendor/deps/webrick/lib/webrick/httpauth/htgroup.rb +97 -0
  304. data/vendor/deps/webrick/lib/webrick/httpauth/htpasswd.rb +158 -0
  305. data/vendor/deps/webrick/lib/webrick/httpauth/userdb.rb +53 -0
  306. data/vendor/deps/webrick/lib/webrick/httpauth.rb +96 -0
  307. data/vendor/deps/webrick/lib/webrick/httpproxy.rb +354 -0
  308. data/vendor/deps/webrick/lib/webrick/httprequest.rb +636 -0
  309. data/vendor/deps/webrick/lib/webrick/httpresponse.rb +564 -0
  310. data/vendor/deps/webrick/lib/webrick/https.rb +152 -0
  311. data/vendor/deps/webrick/lib/webrick/httpserver.rb +294 -0
  312. data/vendor/deps/webrick/lib/webrick/httpservlet/abstract.rb +152 -0
  313. data/vendor/deps/webrick/lib/webrick/httpservlet/cgi_runner.rb +47 -0
  314. data/vendor/deps/webrick/lib/webrick/httpservlet/cgihandler.rb +126 -0
  315. data/vendor/deps/webrick/lib/webrick/httpservlet/erbhandler.rb +88 -0
  316. data/vendor/deps/webrick/lib/webrick/httpservlet/filehandler.rb +552 -0
  317. data/vendor/deps/webrick/lib/webrick/httpservlet/prochandler.rb +47 -0
  318. data/vendor/deps/webrick/lib/webrick/httpservlet.rb +23 -0
  319. data/vendor/deps/webrick/lib/webrick/httpstatus.rb +194 -0
  320. data/vendor/deps/webrick/lib/webrick/httputils.rb +512 -0
  321. data/vendor/deps/webrick/lib/webrick/httpversion.rb +76 -0
  322. data/vendor/deps/webrick/lib/webrick/log.rb +156 -0
  323. data/vendor/deps/webrick/lib/webrick/server.rb +381 -0
  324. data/vendor/deps/webrick/lib/webrick/ssl.rb +215 -0
  325. data/vendor/deps/webrick/lib/webrick/utils.rb +265 -0
  326. data/vendor/deps/webrick/lib/webrick/version.rb +18 -0
  327. data/vendor/deps/webrick/lib/webrick.rb +232 -0
  328. data/vendor/deps/webrick/webrick.gemspec +74 -0
  329. metadata +412 -0
@@ -0,0 +1,358 @@
1
+ # <!-- rdoc-file=lib/base64.rb -->
2
+ # Module Base64 provides methods for:
3
+ #
4
+ # * Encoding a binary string (containing non-ASCII characters) as a string of
5
+ # printable ASCII characters.
6
+ # * Decoding such an encoded string.
7
+ #
8
+ # Base64 is commonly used in contexts where binary data is not allowed or
9
+ # supported:
10
+ #
11
+ # * Images in HTML or CSS files, or in URLs.
12
+ # * Email attachments.
13
+ #
14
+ # A Base64-encoded string is about one-third larger that its source. See the
15
+ # [Wikipedia article](https://en.wikipedia.org/wiki/Base64) for more
16
+ # information.
17
+ #
18
+ # This module provides three pairs of encode/decode methods. Your choices among
19
+ # these methods should depend on:
20
+ #
21
+ # * Which character set is to be used for encoding and decoding.
22
+ # * Whether "padding" is to be used.
23
+ # * Whether encoded strings are to contain newlines.
24
+ #
25
+ # Note: Examples on this page assume that the including program has executed:
26
+ #
27
+ # require 'base64'
28
+ #
29
+ # ## Encoding Character Sets
30
+ #
31
+ # A Base64-encoded string consists only of characters from a 64-character set:
32
+ #
33
+ # * `('A'..'Z')`.
34
+ # * `('a'..'z')`.
35
+ # * `('0'..'9')`.
36
+ # * `=`, the 'padding' character.
37
+ # * Either:
38
+ # * `%w[+ /]`:
39
+ # [RFC-2045-compliant](https://datatracker.ietf.org/doc/html/rfc2045);
40
+ # *not* safe for URLs.
41
+ # * `%w[- _]`:
42
+ # [RFC-4648-compliant](https://datatracker.ietf.org/doc/html/rfc4648);
43
+ # safe for URLs.
44
+ #
45
+ # If you are working with Base64-encoded strings that will come from or be put
46
+ # into URLs, you should choose this encoder-decoder pair of RFC-4648-compliant
47
+ # methods:
48
+ #
49
+ # * Base64.urlsafe_encode64 and Base64.urlsafe_decode64.
50
+ #
51
+ # Otherwise, you may choose any of the pairs in this module, including the pair
52
+ # above, or the RFC-2045-compliant pairs:
53
+ #
54
+ # * Base64.encode64 and Base64.decode64.
55
+ # * Base64.strict_encode64 and Base64.strict_decode64.
56
+ #
57
+ # ## Padding
58
+ #
59
+ # Base64-encoding changes a triplet of input bytes into a quartet of output
60
+ # characters.
61
+ #
62
+ # **Padding in Encode Methods**
63
+ #
64
+ # Padding -- extending an encoded string with zero, one, or two trailing `=`
65
+ # characters -- is performed by methods Base64.encode64, Base64.strict_encode64,
66
+ # and, by default, Base64.urlsafe_encode64:
67
+ #
68
+ # Base64.encode64('s') # => "cw==\n"
69
+ # Base64.strict_encode64('s') # => "cw=="
70
+ # Base64.urlsafe_encode64('s') # => "cw=="
71
+ # Base64.urlsafe_encode64('s', padding: false) # => "cw"
72
+ #
73
+ # When padding is performed, the encoded string is always of length *4n*, where
74
+ # `n` is a non-negative integer:
75
+ #
76
+ # * Input bytes of length *3n* generate unpadded output characters of length
77
+ # *4n*:
78
+ #
79
+ # # n = 1: 3 bytes => 4 characters.
80
+ # Base64.strict_encode64('123') # => "MDEy"
81
+ # # n = 2: 6 bytes => 8 characters.
82
+ # Base64.strict_encode64('123456') # => "MDEyMzQ1"
83
+ #
84
+ # * Input bytes of length *3n+1* generate padded output characters of length
85
+ # *4(n+1)*, with two padding characters at the end:
86
+ #
87
+ # # n = 1: 4 bytes => 8 characters.
88
+ # Base64.strict_encode64('1234') # => "MDEyMw=="
89
+ # # n = 2: 7 bytes => 12 characters.
90
+ # Base64.strict_encode64('1234567') # => "MDEyMzQ1Ng=="
91
+ #
92
+ # * Input bytes of length *3n+2* generate padded output characters of length
93
+ # *4(n+1)*, with one padding character at the end:
94
+ #
95
+ # # n = 1: 5 bytes => 8 characters.
96
+ # Base64.strict_encode64('12345') # => "MDEyMzQ="
97
+ # # n = 2: 8 bytes => 12 characters.
98
+ # Base64.strict_encode64('12345678') # => "MDEyMzQ1Njc="
99
+ #
100
+ # When padding is suppressed, for a positive integer *n*:
101
+ #
102
+ # * Input bytes of length *3n* generate unpadded output characters of length
103
+ # *4n*:
104
+ #
105
+ # # n = 1: 3 bytes => 4 characters.
106
+ # Base64.urlsafe_encode64('123', padding: false) # => "MDEy"
107
+ # # n = 2: 6 bytes => 8 characters.
108
+ # Base64.urlsafe_encode64('123456', padding: false) # => "MDEyMzQ1"
109
+ #
110
+ # * Input bytes of length *3n+1* generate unpadded output characters of length
111
+ # *4n+2*, with two padding characters at the end:
112
+ #
113
+ # # n = 1: 4 bytes => 6 characters.
114
+ # Base64.urlsafe_encode64('1234', padding: false) # => "MDEyMw"
115
+ # # n = 2: 7 bytes => 10 characters.
116
+ # Base64.urlsafe_encode64('1234567', padding: false) # => "MDEyMzQ1Ng"
117
+ #
118
+ # * Input bytes of length *3n+2* generate unpadded output characters of length
119
+ # *4n+3*, with one padding character at the end:
120
+ #
121
+ # # n = 1: 5 bytes => 7 characters.
122
+ # Base64.urlsafe_encode64('12345', padding: false) # => "MDEyMzQ"
123
+ # # m = 2: 8 bytes => 11 characters.
124
+ # Base64.urlsafe_encode64('12345678', padding: false) # => "MDEyMzQ1Njc"
125
+ #
126
+ # **Padding in Decode Methods**
127
+ #
128
+ # All of the Base64 decode methods support (but do not require) padding.
129
+ #
130
+ # Method Base64.decode64 does not check the size of the padding:
131
+ #
132
+ # Base64.decode64("MDEyMzQ1Njc") # => "01234567"
133
+ # Base64.decode64("MDEyMzQ1Njc=") # => "01234567"
134
+ # Base64.decode64("MDEyMzQ1Njc==") # => "01234567"
135
+ #
136
+ # Method Base64.strict_decode64 strictly enforces padding size:
137
+ #
138
+ # Base64.strict_decode64("MDEyMzQ1Njc") # Raises ArgumentError
139
+ # Base64.strict_decode64("MDEyMzQ1Njc=") # => "01234567"
140
+ # Base64.strict_decode64("MDEyMzQ1Njc==") # Raises ArgumentError
141
+ #
142
+ # Method Base64.urlsafe_decode64 allows padding in the encoded string, which if
143
+ # present, must be correct: see
144
+ # [Padding](Base64.html#module-Base64-label-Padding), above:
145
+ #
146
+ # Base64.urlsafe_decode64("MDEyMzQ1Njc") # => "01234567"
147
+ # Base64.urlsafe_decode64("MDEyMzQ1Njc=") # => "01234567"
148
+ # Base64.urlsafe_decode64("MDEyMzQ1Njc==") # Raises ArgumentError.
149
+ #
150
+ # ## Newlines
151
+ #
152
+ # An encoded string returned by Base64.encode64 has an embedded newline
153
+ # character after each 60-character sequence, and, if non-empty, at the end:
154
+ #
155
+ # # No newline if empty.
156
+ # encoded = Base64.encode64("\x00" * 0)
157
+ # encoded.index("\n") # => nil
158
+ #
159
+ # # Newline at end of short output.
160
+ # encoded = Base64.encode64("\x00" * 1)
161
+ # encoded.size # => 4
162
+ # encoded.index("\n") # => 4
163
+ #
164
+ # # Newline at end of longer output.
165
+ # encoded = Base64.encode64("\x00" * 45)
166
+ # encoded.size # => 60
167
+ # encoded.index("\n") # => 60
168
+ #
169
+ # # Newlines embedded and at end of still longer output.
170
+ # encoded = Base64.encode64("\x00" * 46)
171
+ # encoded.size # => 65
172
+ # encoded.rindex("\n") # => 65
173
+ # encoded.split("\n").map {|s| s.size } # => [60, 4]
174
+ #
175
+ # The string to be encoded may itself contain newlines, which are encoded as
176
+ # Base64:
177
+ #
178
+ # # Base64.encode64("\n\n\n") # => "CgoK\n"
179
+ # s = "This is line 1\nThis is line 2\n"
180
+ # Base64.encode64(s) # => "VGhpcyBpcyBsaW5lIDEKVGhpcyBpcyBsaW5lIDIK\n"
181
+ #
182
+ module Base64
183
+ # <!--
184
+ # rdoc-file=lib/base64.rb
185
+ # - Base64.decode64(encoded_string) -> decoded_string
186
+ # -->
187
+ # Returns a string containing the decoding of an RFC-2045-compliant
188
+ # Base64-encoded string `encoded_string`:
189
+ #
190
+ # s = "VGhpcyBpcyBsaW5lIDEKVGhpcyBpcyBsaW5lIDIK\n"
191
+ # Base64.decode64(s) # => "This is line 1\nThis is line 2\n"
192
+ #
193
+ # Non-Base64 characters in `encoded_string` are ignored; see [Encoding Character
194
+ # Set](Base64.html#module-Base64-label-Encoding+Character+Sets) above: these
195
+ # include newline characters and characters `-` and `/`:
196
+ #
197
+ # Base64.decode64("\x00\n-_") # => ""
198
+ #
199
+ # Padding in `encoded_string` (even if incorrect) is ignored:
200
+ #
201
+ # Base64.decode64("MDEyMzQ1Njc") # => "01234567"
202
+ # Base64.decode64("MDEyMzQ1Njc=") # => "01234567"
203
+ # Base64.decode64("MDEyMzQ1Njc==") # => "01234567"
204
+ #
205
+ def self?.decode64: (String str) -> String
206
+
207
+ # <!--
208
+ # rdoc-file=lib/base64.rb
209
+ # - Base64.encode64(string) -> encoded_string
210
+ # -->
211
+ # Returns a string containing the RFC-2045-compliant Base64-encoding of
212
+ # `string`.
213
+ #
214
+ # Per RFC 2045, the returned string may contain the URL-unsafe characters `+` or
215
+ # `/`; see [Encoding Character
216
+ # Set](Base64.html#module-Base64-label-Encoding+Character+Sets) above:
217
+ #
218
+ # Base64.encode64("\xFB\xEF\xBE") # => "++++\n"
219
+ # Base64.encode64("\xFF\xFF\xFF") # => "////\n"
220
+ #
221
+ # The returned string may include padding; see
222
+ # [Padding](Base64.html#module-Base64-label-Padding) above.
223
+ #
224
+ # Base64.encode64('*') # => "Kg==\n"
225
+ #
226
+ # The returned string ends with a newline character, and if sufficiently long
227
+ # will have one or more embedded newline characters; see
228
+ # [Newlines](Base64.html#module-Base64-label-Newlines) above:
229
+ #
230
+ # Base64.encode64('*') # => "Kg==\n"
231
+ # Base64.encode64('*' * 46)
232
+ # # => "KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq\nKg==\n"
233
+ #
234
+ # The string to be encoded may itself contain newlines, which will be encoded as
235
+ # ordinary Base64:
236
+ #
237
+ # Base64.encode64("\n\n\n") # => "CgoK\n"
238
+ # s = "This is line 1\nThis is line 2\n"
239
+ # Base64.encode64(s) # => "VGhpcyBpcyBsaW5lIDEKVGhpcyBpcyBsaW5lIDIK\n"
240
+ #
241
+ def self?.encode64: (String bin) -> String
242
+
243
+ # <!--
244
+ # rdoc-file=lib/base64.rb
245
+ # - Base64.strict_decode64(encoded_string) -> decoded_string
246
+ # -->
247
+ # Returns a string containing the decoding of an RFC-2045-compliant
248
+ # Base64-encoded string `encoded_string`:
249
+ #
250
+ # s = "VGhpcyBpcyBsaW5lIDEKVGhpcyBpcyBsaW5lIDIK"
251
+ # Base64.strict_decode64(s) # => "This is line 1\nThis is line 2\n"
252
+ #
253
+ # Non-Base64 characters in `encoded_string` are not allowed; see [Encoding
254
+ # Character Set](Base64.html#module-Base64-label-Encoding+Character+Sets) above:
255
+ # these include newline characters and characters `-` and `/`:
256
+ #
257
+ # Base64.strict_decode64("\n") # Raises ArgumentError
258
+ # Base64.strict_decode64('-') # Raises ArgumentError
259
+ # Base64.strict_decode64('_') # Raises ArgumentError
260
+ #
261
+ # Padding in `encoded_string`, if present, must be correct:
262
+ #
263
+ # Base64.strict_decode64("MDEyMzQ1Njc") # Raises ArgumentError
264
+ # Base64.strict_decode64("MDEyMzQ1Njc=") # => "01234567"
265
+ # Base64.strict_decode64("MDEyMzQ1Njc==") # Raises ArgumentError
266
+ #
267
+ def self?.strict_decode64: (String str) -> String
268
+
269
+ # <!--
270
+ # rdoc-file=lib/base64.rb
271
+ # - Base64.strict_encode64(string) -> encoded_string
272
+ # -->
273
+ # Returns a string containing the RFC-2045-compliant Base64-encoding of
274
+ # `string`.
275
+ #
276
+ # Per RFC 2045, the returned string may contain the URL-unsafe characters `+` or
277
+ # `/`; see [Encoding Character
278
+ # Set](Base64.html#module-Base64-label-Encoding+Character+Sets) above:
279
+ #
280
+ # Base64.strict_encode64("\xFB\xEF\xBE") # => "++++\n"
281
+ # Base64.strict_encode64("\xFF\xFF\xFF") # => "////\n"
282
+ #
283
+ # The returned string may include padding; see
284
+ # [Padding](Base64.html#module-Base64-label-Padding) above.
285
+ #
286
+ # Base64.strict_encode64('*') # => "Kg==\n"
287
+ #
288
+ # The returned string will have no newline characters, regardless of its length;
289
+ # see [Newlines](Base64.html#module-Base64-label-Newlines) above:
290
+ #
291
+ # Base64.strict_encode64('*') # => "Kg=="
292
+ # Base64.strict_encode64('*' * 46)
293
+ # # => "KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg=="
294
+ #
295
+ # The string to be encoded may itself contain newlines, which will be encoded as
296
+ # ordinary Base64:
297
+ #
298
+ # Base64.strict_encode64("\n\n\n") # => "CgoK"
299
+ # s = "This is line 1\nThis is line 2\n"
300
+ # Base64.strict_encode64(s) # => "VGhpcyBpcyBsaW5lIDEKVGhpcyBpcyBsaW5lIDIK"
301
+ #
302
+ def self?.strict_encode64: (String bin) -> String
303
+
304
+ # <!--
305
+ # rdoc-file=lib/base64.rb
306
+ # - Base64.urlsafe_decode64(encoded_string) -> decoded_string
307
+ # -->
308
+ # Returns the decoding of an RFC-4648-compliant Base64-encoded string
309
+ # `encoded_string`:
310
+ #
311
+ # `encoded_string` may not contain non-Base64 characters; see [Encoding
312
+ # Character Set](Base64.html#module-Base64-label-Encoding+Character+Sets) above:
313
+ #
314
+ # Base64.urlsafe_decode64('+') # Raises ArgumentError.
315
+ # Base64.urlsafe_decode64('/') # Raises ArgumentError.
316
+ # Base64.urlsafe_decode64("\n") # Raises ArgumentError.
317
+ #
318
+ # Padding in `encoded_string`, if present, must be correct: see
319
+ # [Padding](Base64.html#module-Base64-label-Padding), above:
320
+ #
321
+ # Base64.urlsafe_decode64("MDEyMzQ1Njc") # => "01234567"
322
+ # Base64.urlsafe_decode64("MDEyMzQ1Njc=") # => "01234567"
323
+ # Base64.urlsafe_decode64("MDEyMzQ1Njc==") # Raises ArgumentError.
324
+ #
325
+ def self?.urlsafe_decode64: (String str) -> String
326
+
327
+ # <!--
328
+ # rdoc-file=lib/base64.rb
329
+ # - Base64.urlsafe_encode64(string) -> encoded_string
330
+ # -->
331
+ # Returns the RFC-4648-compliant Base64-encoding of `string`.
332
+ #
333
+ # Per RFC 4648, the returned string will not contain the URL-unsafe characters
334
+ # `+` or `/`, but instead may contain the URL-safe characters `-` and `_`; see
335
+ # [Encoding Character
336
+ # Set](Base64.html#module-Base64-label-Encoding+Character+Sets) above:
337
+ #
338
+ # Base64.urlsafe_encode64("\xFB\xEF\xBE") # => "----"
339
+ # Base64.urlsafe_encode64("\xFF\xFF\xFF") # => "____"
340
+ #
341
+ # By default, the returned string may have padding; see
342
+ # [Padding](Base64.html#module-Base64-label-Padding), above:
343
+ #
344
+ # Base64.urlsafe_encode64('*') # => "Kg=="
345
+ #
346
+ # Optionally, you can suppress padding:
347
+ #
348
+ # Base64.urlsafe_encode64('*', padding: false) # => "Kg"
349
+ #
350
+ # The returned string will have no newline characters, regardless of its length;
351
+ # see [Newlines](Base64.html#module-Base64-label-Newlines) above:
352
+ #
353
+ # Base64.urlsafe_encode64('*') # => "Kg=="
354
+ # Base64.urlsafe_encode64('*' * 46)
355
+ # # => "KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg=="
356
+ #
357
+ def self?.urlsafe_encode64: (String bin, ?padding: boolish) -> String
358
+ end
@@ -0,0 +1,115 @@
1
+ # coding: US-ASCII
2
+ # frozen_string_literal: true
3
+ require "test/unit"
4
+ require "base64"
5
+
6
+ class TestBase64 < Test::Unit::TestCase
7
+ def test_sample
8
+ assert_equal("U2VuZCByZWluZm9yY2VtZW50cw==\n", Base64.encode64('Send reinforcements'))
9
+ assert_equal('Send reinforcements', Base64.decode64("U2VuZCByZWluZm9yY2VtZW50cw==\n"))
10
+ assert_equal(
11
+ "Tm93IGlzIHRoZSB0aW1lIGZvciBhbGwgZ29vZCBjb2RlcnMKdG8gbGVhcm4g\nUnVieQ==\n",
12
+ Base64.encode64("Now is the time for all good coders\nto learn Ruby"))
13
+ assert_equal(
14
+ "Now is the time for all good coders\nto learn Ruby",
15
+ Base64.decode64("Tm93IGlzIHRoZSB0aW1lIGZvciBhbGwgZ29vZCBjb2RlcnMKdG8gbGVhcm4g\nUnVieQ==\n"))
16
+ assert_equal(
17
+ "VGhpcyBpcyBsaW5lIG9uZQpUaGlzIGlzIGxpbmUgdHdvClRoaXMgaXMgbGlu\nZSB0aHJlZQpBbmQgc28gb24uLi4K\n",
18
+ Base64.encode64("This is line one\nThis is line two\nThis is line three\nAnd so on...\n"))
19
+ assert_equal(
20
+ "This is line one\nThis is line two\nThis is line three\nAnd so on...\n",
21
+ Base64.decode64("VGhpcyBpcyBsaW5lIG9uZQpUaGlzIGlzIGxpbmUgdHdvClRoaXMgaXMgbGluZSB0aHJlZQpBbmQgc28gb24uLi4K"))
22
+ end
23
+
24
+ def test_encode64
25
+ assert_equal("", Base64.encode64(""))
26
+ assert_equal("AA==\n", Base64.encode64("\0"))
27
+ assert_equal("AAA=\n", Base64.encode64("\0\0"))
28
+ assert_equal("AAAA\n", Base64.encode64("\0\0\0"))
29
+ assert_equal("/w==\n", Base64.encode64("\377"))
30
+ assert_equal("//8=\n", Base64.encode64("\377\377"))
31
+ assert_equal("////\n", Base64.encode64("\377\377\377"))
32
+ assert_equal("/+8=\n", Base64.encode64("\xff\xef"))
33
+ end
34
+
35
+ def test_decode64
36
+ assert_equal("", Base64.decode64(""))
37
+ assert_equal("\0", Base64.decode64("AA==\n"))
38
+ assert_equal("\0\0", Base64.decode64("AAA=\n"))
39
+ assert_equal("\0\0\0", Base64.decode64("AAAA\n"))
40
+ assert_equal("\377", Base64.decode64("/w==\n"))
41
+ assert_equal("\377\377", Base64.decode64("//8=\n"))
42
+ assert_equal("\377\377\377", Base64.decode64("////\n"))
43
+ assert_equal("\xff\xef", Base64.decode64("/+8=\n"))
44
+ end
45
+
46
+ def test_strict_encode64
47
+ assert_equal("", Base64.strict_encode64(""))
48
+ assert_equal("AA==", Base64.strict_encode64("\0"))
49
+ assert_equal("AAA=", Base64.strict_encode64("\0\0"))
50
+ assert_equal("AAAA", Base64.strict_encode64("\0\0\0"))
51
+ assert_equal("/w==", Base64.strict_encode64("\377"))
52
+ assert_equal("//8=", Base64.strict_encode64("\377\377"))
53
+ assert_equal("////", Base64.strict_encode64("\377\377\377"))
54
+ assert_equal("/+8=", Base64.strict_encode64("\xff\xef"))
55
+ end
56
+
57
+ def test_strict_decode64
58
+ assert_equal("", Base64.strict_decode64(""))
59
+ assert_equal("\0", Base64.strict_decode64("AA=="))
60
+ assert_equal("\0\0", Base64.strict_decode64("AAA="))
61
+ assert_equal("\0\0\0", Base64.strict_decode64("AAAA"))
62
+ assert_equal("\377", Base64.strict_decode64("/w=="))
63
+ assert_equal("\377\377", Base64.strict_decode64("//8="))
64
+ assert_equal("\377\377\377", Base64.strict_decode64("////"))
65
+ assert_equal("\xff\xef", Base64.strict_decode64("/+8="))
66
+
67
+ assert_raise(ArgumentError) { Base64.strict_decode64("^") }
68
+ assert_raise(ArgumentError) { Base64.strict_decode64("A") }
69
+ assert_raise(ArgumentError) { Base64.strict_decode64("A^") }
70
+ assert_raise(ArgumentError) { Base64.strict_decode64("AA") }
71
+ assert_raise(ArgumentError) { Base64.strict_decode64("AA=") }
72
+ assert_raise(ArgumentError) { Base64.strict_decode64("AA===") }
73
+ assert_raise(ArgumentError) { Base64.strict_decode64("AA=x") }
74
+ assert_raise(ArgumentError) { Base64.strict_decode64("AAA") }
75
+ assert_raise(ArgumentError) { Base64.strict_decode64("AAA^") }
76
+ assert_raise(ArgumentError) { Base64.strict_decode64("AB==") }
77
+ assert_raise(ArgumentError) { Base64.strict_decode64("AAB=") }
78
+ end
79
+
80
+ def test_urlsafe_encode64
81
+ assert_equal("", Base64.urlsafe_encode64(""))
82
+ assert_equal("AA==", Base64.urlsafe_encode64("\0"))
83
+ assert_equal("AAA=", Base64.urlsafe_encode64("\0\0"))
84
+ assert_equal("AAAA", Base64.urlsafe_encode64("\0\0\0"))
85
+ assert_equal("_w==", Base64.urlsafe_encode64("\377"))
86
+ assert_equal("__8=", Base64.urlsafe_encode64("\377\377"))
87
+ assert_equal("____", Base64.urlsafe_encode64("\377\377\377"))
88
+ assert_equal("_-8=", Base64.urlsafe_encode64("\xff\xef"))
89
+ end
90
+
91
+ def test_urlsafe_encode64_unpadded
92
+ assert_equal("", Base64.urlsafe_encode64("", padding: false))
93
+ assert_equal("AA", Base64.urlsafe_encode64("\0", padding: false))
94
+ assert_equal("AAA", Base64.urlsafe_encode64("\0\0", padding: false))
95
+ assert_equal("AAAA", Base64.urlsafe_encode64("\0\0\0", padding: false))
96
+ end
97
+
98
+ def test_urlsafe_decode64
99
+ assert_equal("", Base64.urlsafe_decode64(""))
100
+ assert_equal("\0", Base64.urlsafe_decode64("AA=="))
101
+ assert_equal("\0\0", Base64.urlsafe_decode64("AAA="))
102
+ assert_equal("\0\0\0", Base64.urlsafe_decode64("AAAA"))
103
+ assert_equal("\377", Base64.urlsafe_decode64("_w=="))
104
+ assert_equal("\377\377", Base64.urlsafe_decode64("__8="))
105
+ assert_equal("\377\377\377", Base64.urlsafe_decode64("____"))
106
+ assert_equal("\xff\xef", Base64.urlsafe_decode64("_+8="))
107
+ end
108
+
109
+ def test_urlsafe_decode64_unpadded
110
+ assert_equal("\0", Base64.urlsafe_decode64("AA"))
111
+ assert_equal("\0\0", Base64.urlsafe_decode64("AAA"))
112
+ assert_equal("\0\0\0", Base64.urlsafe_decode64("AAAA"))
113
+ assert_raise(ArgumentError) { Base64.urlsafe_decode64("AA=") }
114
+ end
115
+ end
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'base64'
4
+ require 'test/unit'
5
+ require 'rbs/unit_test'
6
+
7
+ class Base64SingletonTest < Test::Unit::TestCase
8
+ include RBS::UnitTest::TypeAssertions
9
+
10
+ library 'base64'
11
+ testing "singleton(::Base64)"
12
+
13
+ def test_decode64
14
+ assert_send_type '(String) -> String',
15
+ Base64, :decode64, 'aGVsbG8gd29ybGQ='
16
+ end
17
+
18
+ def test_encode64
19
+ assert_send_type '(String) -> String',
20
+ Base64, :encode64, 'hello world'
21
+ end
22
+
23
+ def test_strict_decode64
24
+ assert_send_type '(String) -> String',
25
+ Base64, :strict_decode64, 'aGVsbG8gd29ybGQ='
26
+ end
27
+
28
+ def test_strict_encode64
29
+ assert_send_type '(String) -> String',
30
+ Base64, :strict_encode64, 'hello world'
31
+ end
32
+
33
+ def test_urlsafe_decode64
34
+ assert_send_type '(String) -> String',
35
+ Base64, :urlsafe_decode64, 'aGVsbG8gd29ybGQ='
36
+ end
37
+
38
+ def test_urlsafe_encode64
39
+ assert_send_type '(String) -> String',
40
+ Base64, :urlsafe_encode64, 'hello world'
41
+ assert_send_type '(String, padding: bool) -> String',
42
+ Base64, :urlsafe_encode64, '*', padding: false
43
+ end
44
+ end
@@ -0,0 +1 @@
1
+ 89fade7f638b5243f328ba207a12c75b312e869c