actionpack 3.2.22.5 → 5.2.4

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

Potentially problematic release.


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

Files changed (271) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +279 -603
  3. data/MIT-LICENSE +1 -1
  4. data/README.rdoc +13 -297
  5. data/lib/abstract_controller/asset_paths.rb +4 -2
  6. data/lib/abstract_controller/base.rb +82 -52
  7. data/lib/abstract_controller/caching/fragments.rb +166 -0
  8. data/lib/abstract_controller/caching.rb +66 -0
  9. data/lib/abstract_controller/callbacks.rb +117 -103
  10. data/lib/abstract_controller/collector.rb +18 -7
  11. data/lib/abstract_controller/error.rb +6 -0
  12. data/lib/abstract_controller/helpers.rb +65 -38
  13. data/lib/abstract_controller/logger.rb +3 -2
  14. data/lib/abstract_controller/railties/routes_helpers.rb +5 -3
  15. data/lib/abstract_controller/rendering.rb +77 -129
  16. data/lib/abstract_controller/translation.rb +21 -3
  17. data/lib/abstract_controller/url_for.rb +9 -7
  18. data/lib/abstract_controller.rb +12 -13
  19. data/lib/action_controller/api/api_rendering.rb +16 -0
  20. data/lib/action_controller/api.rb +149 -0
  21. data/lib/action_controller/base.rb +81 -40
  22. data/lib/action_controller/caching.rb +22 -62
  23. data/lib/action_controller/form_builder.rb +50 -0
  24. data/lib/action_controller/log_subscriber.rb +30 -18
  25. data/lib/action_controller/metal/basic_implicit_render.rb +13 -0
  26. data/lib/action_controller/metal/conditional_get.rb +190 -47
  27. data/lib/action_controller/metal/content_security_policy.rb +52 -0
  28. data/lib/action_controller/metal/cookies.rb +3 -3
  29. data/lib/action_controller/metal/data_streaming.rb +40 -65
  30. data/lib/action_controller/metal/etag_with_flash.rb +18 -0
  31. data/lib/action_controller/metal/etag_with_template_digest.rb +57 -0
  32. data/lib/action_controller/metal/exceptions.rb +19 -12
  33. data/lib/action_controller/metal/flash.rb +42 -9
  34. data/lib/action_controller/metal/force_ssl.rb +79 -19
  35. data/lib/action_controller/metal/head.rb +35 -10
  36. data/lib/action_controller/metal/helpers.rb +31 -21
  37. data/lib/action_controller/metal/http_authentication.rb +182 -134
  38. data/lib/action_controller/metal/implicit_render.rb +62 -8
  39. data/lib/action_controller/metal/instrumentation.rb +28 -26
  40. data/lib/action_controller/metal/live.rb +312 -0
  41. data/lib/action_controller/metal/mime_responds.rb +159 -163
  42. data/lib/action_controller/metal/parameter_encoding.rb +51 -0
  43. data/lib/action_controller/metal/params_wrapper.rb +146 -93
  44. data/lib/action_controller/metal/redirecting.rb +80 -56
  45. data/lib/action_controller/metal/renderers.rb +119 -47
  46. data/lib/action_controller/metal/rendering.rb +89 -32
  47. data/lib/action_controller/metal/request_forgery_protection.rb +373 -41
  48. data/lib/action_controller/metal/rescue.rb +9 -16
  49. data/lib/action_controller/metal/streaming.rb +39 -45
  50. data/lib/action_controller/metal/strong_parameters.rb +1086 -0
  51. data/lib/action_controller/metal/testing.rb +8 -29
  52. data/lib/action_controller/metal/url_for.rb +43 -32
  53. data/lib/action_controller/metal.rb +112 -106
  54. data/lib/action_controller/railtie.rb +56 -18
  55. data/lib/action_controller/railties/helpers.rb +24 -0
  56. data/lib/action_controller/renderer.rb +117 -0
  57. data/lib/action_controller/template_assertions.rb +11 -0
  58. data/lib/action_controller/test_case.rb +402 -347
  59. data/lib/action_controller.rb +31 -30
  60. data/lib/action_dispatch/http/cache.rb +133 -34
  61. data/lib/action_dispatch/http/content_security_policy.rb +272 -0
  62. data/lib/action_dispatch/http/filter_parameters.rb +40 -24
  63. data/lib/action_dispatch/http/filter_redirect.rb +37 -0
  64. data/lib/action_dispatch/http/headers.rb +117 -16
  65. data/lib/action_dispatch/http/mime_negotiation.rb +98 -33
  66. data/lib/action_dispatch/http/mime_type.rb +198 -146
  67. data/lib/action_dispatch/http/mime_types.rb +22 -7
  68. data/lib/action_dispatch/http/parameter_filter.rb +61 -49
  69. data/lib/action_dispatch/http/parameters.rb +94 -51
  70. data/lib/action_dispatch/http/rack_cache.rb +4 -3
  71. data/lib/action_dispatch/http/request.rb +262 -117
  72. data/lib/action_dispatch/http/response.rb +400 -86
  73. data/lib/action_dispatch/http/upload.rb +66 -29
  74. data/lib/action_dispatch/http/url.rb +232 -60
  75. data/lib/action_dispatch/journey/formatter.rb +189 -0
  76. data/lib/action_dispatch/journey/gtg/builder.rb +164 -0
  77. data/lib/action_dispatch/journey/gtg/simulator.rb +41 -0
  78. data/lib/action_dispatch/journey/gtg/transition_table.rb +158 -0
  79. data/lib/action_dispatch/journey/nfa/builder.rb +78 -0
  80. data/lib/action_dispatch/journey/nfa/dot.rb +36 -0
  81. data/lib/action_dispatch/journey/nfa/simulator.rb +49 -0
  82. data/lib/action_dispatch/journey/nfa/transition_table.rb +120 -0
  83. data/lib/action_dispatch/journey/nodes/node.rb +140 -0
  84. data/lib/action_dispatch/journey/parser.rb +199 -0
  85. data/lib/action_dispatch/journey/parser.y +50 -0
  86. data/lib/action_dispatch/journey/parser_extras.rb +31 -0
  87. data/lib/action_dispatch/journey/path/pattern.rb +199 -0
  88. data/lib/action_dispatch/journey/route.rb +203 -0
  89. data/lib/action_dispatch/journey/router/utils.rb +102 -0
  90. data/lib/action_dispatch/journey/router.rb +156 -0
  91. data/lib/action_dispatch/journey/routes.rb +82 -0
  92. data/lib/action_dispatch/journey/scanner.rb +64 -0
  93. data/lib/action_dispatch/journey/visitors.rb +268 -0
  94. data/lib/action_dispatch/journey/visualizer/fsm.css +30 -0
  95. data/lib/action_dispatch/journey/visualizer/fsm.js +134 -0
  96. data/lib/action_dispatch/journey/visualizer/index.html.erb +52 -0
  97. data/lib/action_dispatch/journey.rb +7 -0
  98. data/lib/action_dispatch/middleware/callbacks.rb +17 -13
  99. data/lib/action_dispatch/middleware/cookies.rb +494 -162
  100. data/lib/action_dispatch/middleware/debug_exceptions.rb +176 -53
  101. data/lib/action_dispatch/middleware/debug_locks.rb +124 -0
  102. data/lib/action_dispatch/middleware/exception_wrapper.rb +103 -38
  103. data/lib/action_dispatch/middleware/executor.rb +21 -0
  104. data/lib/action_dispatch/middleware/flash.rb +128 -91
  105. data/lib/action_dispatch/middleware/public_exceptions.rb +43 -16
  106. data/lib/action_dispatch/middleware/reloader.rb +6 -83
  107. data/lib/action_dispatch/middleware/remote_ip.rb +151 -49
  108. data/lib/action_dispatch/middleware/request_id.rb +19 -15
  109. data/lib/action_dispatch/middleware/session/abstract_store.rb +38 -34
  110. data/lib/action_dispatch/middleware/session/cache_store.rb +14 -9
  111. data/lib/action_dispatch/middleware/session/cookie_store.rb +94 -44
  112. data/lib/action_dispatch/middleware/session/mem_cache_store.rb +15 -4
  113. data/lib/action_dispatch/middleware/show_exceptions.rb +36 -61
  114. data/lib/action_dispatch/middleware/ssl.rb +150 -0
  115. data/lib/action_dispatch/middleware/stack.rb +33 -41
  116. data/lib/action_dispatch/middleware/static.rb +92 -48
  117. data/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb +22 -0
  118. data/lib/action_dispatch/middleware/templates/rescues/_request_and_response.text.erb +23 -0
  119. data/lib/action_dispatch/middleware/templates/rescues/_source.html.erb +27 -0
  120. data/lib/action_dispatch/middleware/templates/rescues/_source.text.erb +8 -0
  121. data/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb +52 -0
  122. data/lib/action_dispatch/middleware/templates/rescues/_trace.text.erb +9 -0
  123. data/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb +16 -0
  124. data/lib/action_dispatch/middleware/templates/rescues/diagnostics.text.erb +9 -0
  125. data/lib/action_dispatch/middleware/templates/rescues/invalid_statement.html.erb +21 -0
  126. data/lib/action_dispatch/middleware/templates/rescues/invalid_statement.text.erb +13 -0
  127. data/lib/action_dispatch/middleware/templates/rescues/layout.erb +134 -5
  128. data/lib/action_dispatch/middleware/templates/rescues/missing_template.html.erb +11 -0
  129. data/lib/action_dispatch/middleware/templates/rescues/missing_template.text.erb +3 -0
  130. data/lib/action_dispatch/middleware/templates/rescues/routing_error.html.erb +32 -0
  131. data/lib/action_dispatch/middleware/templates/rescues/routing_error.text.erb +11 -0
  132. data/lib/action_dispatch/middleware/templates/rescues/template_error.html.erb +20 -0
  133. data/lib/action_dispatch/middleware/templates/rescues/template_error.text.erb +7 -0
  134. data/lib/action_dispatch/middleware/templates/rescues/unknown_action.html.erb +6 -0
  135. data/lib/action_dispatch/middleware/templates/rescues/unknown_action.text.erb +3 -0
  136. data/lib/action_dispatch/middleware/templates/routes/_route.html.erb +16 -0
  137. data/lib/action_dispatch/middleware/templates/routes/_table.html.erb +200 -0
  138. data/lib/action_dispatch/railtie.rb +29 -8
  139. data/lib/action_dispatch/request/session.rb +234 -0
  140. data/lib/action_dispatch/request/utils.rb +78 -0
  141. data/lib/action_dispatch/routing/endpoint.rb +17 -0
  142. data/lib/action_dispatch/routing/inspector.rb +225 -0
  143. data/lib/action_dispatch/routing/mapper.rb +1329 -582
  144. data/lib/action_dispatch/routing/polymorphic_routes.rb +237 -94
  145. data/lib/action_dispatch/routing/redirection.rb +120 -50
  146. data/lib/action_dispatch/routing/route_set.rb +545 -322
  147. data/lib/action_dispatch/routing/routes_proxy.rb +37 -7
  148. data/lib/action_dispatch/routing/url_for.rb +103 -34
  149. data/lib/action_dispatch/routing.rb +66 -99
  150. data/lib/action_dispatch/system_test_case.rb +147 -0
  151. data/lib/action_dispatch/system_testing/browser.rb +49 -0
  152. data/lib/action_dispatch/system_testing/driver.rb +59 -0
  153. data/lib/action_dispatch/system_testing/server.rb +31 -0
  154. data/lib/action_dispatch/system_testing/test_helpers/screenshot_helper.rb +96 -0
  155. data/lib/action_dispatch/system_testing/test_helpers/setup_and_teardown.rb +31 -0
  156. data/lib/action_dispatch/system_testing/test_helpers/undef_methods.rb +26 -0
  157. data/lib/action_dispatch/testing/assertion_response.rb +47 -0
  158. data/lib/action_dispatch/testing/assertions/response.rb +53 -42
  159. data/lib/action_dispatch/testing/assertions/routing.rb +79 -74
  160. data/lib/action_dispatch/testing/assertions.rb +15 -9
  161. data/lib/action_dispatch/testing/integration.rb +361 -207
  162. data/lib/action_dispatch/testing/request_encoder.rb +55 -0
  163. data/lib/action_dispatch/testing/test_process.rb +28 -19
  164. data/lib/action_dispatch/testing/test_request.rb +30 -33
  165. data/lib/action_dispatch/testing/test_response.rb +35 -11
  166. data/lib/action_dispatch.rb +42 -32
  167. data/lib/action_pack/gem_version.rb +17 -0
  168. data/lib/action_pack/version.rb +7 -7
  169. data/lib/action_pack.rb +4 -2
  170. metadata +116 -175
  171. data/lib/abstract_controller/layouts.rb +0 -423
  172. data/lib/abstract_controller/view_paths.rb +0 -96
  173. data/lib/action_controller/caching/actions.rb +0 -185
  174. data/lib/action_controller/caching/fragments.rb +0 -127
  175. data/lib/action_controller/caching/pages.rb +0 -187
  176. data/lib/action_controller/caching/sweeping.rb +0 -97
  177. data/lib/action_controller/deprecated/integration_test.rb +0 -2
  178. data/lib/action_controller/deprecated/performance_test.rb +0 -1
  179. data/lib/action_controller/deprecated.rb +0 -3
  180. data/lib/action_controller/metal/compatibility.rb +0 -65
  181. data/lib/action_controller/metal/hide_actions.rb +0 -41
  182. data/lib/action_controller/metal/rack_delegation.rb +0 -26
  183. data/lib/action_controller/metal/responder.rb +0 -286
  184. data/lib/action_controller/metal/session_management.rb +0 -14
  185. data/lib/action_controller/middleware.rb +0 -39
  186. data/lib/action_controller/railties/paths.rb +0 -25
  187. data/lib/action_controller/record_identifier.rb +0 -85
  188. data/lib/action_controller/vendor/html-scanner/html/document.rb +0 -68
  189. data/lib/action_controller/vendor/html-scanner/html/node.rb +0 -532
  190. data/lib/action_controller/vendor/html-scanner/html/sanitizer.rb +0 -177
  191. data/lib/action_controller/vendor/html-scanner/html/selector.rb +0 -830
  192. data/lib/action_controller/vendor/html-scanner/html/tokenizer.rb +0 -107
  193. data/lib/action_controller/vendor/html-scanner/html/version.rb +0 -11
  194. data/lib/action_controller/vendor/html-scanner.rb +0 -20
  195. data/lib/action_dispatch/middleware/best_standards_support.rb +0 -30
  196. data/lib/action_dispatch/middleware/body_proxy.rb +0 -30
  197. data/lib/action_dispatch/middleware/head.rb +0 -18
  198. data/lib/action_dispatch/middleware/params_parser.rb +0 -75
  199. data/lib/action_dispatch/middleware/rescue.rb +0 -26
  200. data/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb +0 -31
  201. data/lib/action_dispatch/middleware/templates/rescues/_trace.erb +0 -26
  202. data/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb +0 -10
  203. data/lib/action_dispatch/middleware/templates/rescues/missing_template.erb +0 -2
  204. data/lib/action_dispatch/middleware/templates/rescues/routing_error.erb +0 -15
  205. data/lib/action_dispatch/middleware/templates/rescues/template_error.erb +0 -17
  206. data/lib/action_dispatch/middleware/templates/rescues/unknown_action.erb +0 -2
  207. data/lib/action_dispatch/testing/assertions/dom.rb +0 -37
  208. data/lib/action_dispatch/testing/assertions/selector.rb +0 -435
  209. data/lib/action_dispatch/testing/assertions/tag.rb +0 -138
  210. data/lib/action_dispatch/testing/performance_test.rb +0 -10
  211. data/lib/action_view/asset_paths.rb +0 -142
  212. data/lib/action_view/base.rb +0 -220
  213. data/lib/action_view/buffers.rb +0 -43
  214. data/lib/action_view/context.rb +0 -36
  215. data/lib/action_view/flows.rb +0 -79
  216. data/lib/action_view/helpers/active_model_helper.rb +0 -50
  217. data/lib/action_view/helpers/asset_paths.rb +0 -7
  218. data/lib/action_view/helpers/asset_tag_helper.rb +0 -457
  219. data/lib/action_view/helpers/asset_tag_helpers/asset_include_tag.rb +0 -146
  220. data/lib/action_view/helpers/asset_tag_helpers/asset_paths.rb +0 -93
  221. data/lib/action_view/helpers/asset_tag_helpers/javascript_tag_helpers.rb +0 -193
  222. data/lib/action_view/helpers/asset_tag_helpers/stylesheet_tag_helpers.rb +0 -148
  223. data/lib/action_view/helpers/atom_feed_helper.rb +0 -200
  224. data/lib/action_view/helpers/cache_helper.rb +0 -64
  225. data/lib/action_view/helpers/capture_helper.rb +0 -203
  226. data/lib/action_view/helpers/controller_helper.rb +0 -25
  227. data/lib/action_view/helpers/csrf_helper.rb +0 -32
  228. data/lib/action_view/helpers/date_helper.rb +0 -1062
  229. data/lib/action_view/helpers/debug_helper.rb +0 -40
  230. data/lib/action_view/helpers/form_helper.rb +0 -1486
  231. data/lib/action_view/helpers/form_options_helper.rb +0 -658
  232. data/lib/action_view/helpers/form_tag_helper.rb +0 -685
  233. data/lib/action_view/helpers/javascript_helper.rb +0 -110
  234. data/lib/action_view/helpers/number_helper.rb +0 -622
  235. data/lib/action_view/helpers/output_safety_helper.rb +0 -38
  236. data/lib/action_view/helpers/record_tag_helper.rb +0 -111
  237. data/lib/action_view/helpers/rendering_helper.rb +0 -92
  238. data/lib/action_view/helpers/sanitize_helper.rb +0 -259
  239. data/lib/action_view/helpers/tag_helper.rb +0 -167
  240. data/lib/action_view/helpers/text_helper.rb +0 -426
  241. data/lib/action_view/helpers/translation_helper.rb +0 -91
  242. data/lib/action_view/helpers/url_helper.rb +0 -693
  243. data/lib/action_view/helpers.rb +0 -60
  244. data/lib/action_view/locale/en.yml +0 -160
  245. data/lib/action_view/log_subscriber.rb +0 -28
  246. data/lib/action_view/lookup_context.rb +0 -258
  247. data/lib/action_view/path_set.rb +0 -101
  248. data/lib/action_view/railtie.rb +0 -55
  249. data/lib/action_view/renderer/abstract_renderer.rb +0 -41
  250. data/lib/action_view/renderer/partial_renderer.rb +0 -415
  251. data/lib/action_view/renderer/renderer.rb +0 -61
  252. data/lib/action_view/renderer/streaming_template_renderer.rb +0 -106
  253. data/lib/action_view/renderer/template_renderer.rb +0 -95
  254. data/lib/action_view/template/error.rb +0 -128
  255. data/lib/action_view/template/handlers/builder.rb +0 -26
  256. data/lib/action_view/template/handlers/erb.rb +0 -125
  257. data/lib/action_view/template/handlers.rb +0 -50
  258. data/lib/action_view/template/resolver.rb +0 -298
  259. data/lib/action_view/template/text.rb +0 -30
  260. data/lib/action_view/template.rb +0 -337
  261. data/lib/action_view/test_case.rb +0 -246
  262. data/lib/action_view/testing/resolvers.rb +0 -49
  263. data/lib/action_view.rb +0 -84
  264. data/lib/sprockets/assets.rake +0 -99
  265. data/lib/sprockets/bootstrap.rb +0 -37
  266. data/lib/sprockets/compressors.rb +0 -83
  267. data/lib/sprockets/helpers/isolated_helper.rb +0 -13
  268. data/lib/sprockets/helpers/rails_helper.rb +0 -182
  269. data/lib/sprockets/helpers.rb +0 -6
  270. data/lib/sprockets/railtie.rb +0 -62
  271. data/lib/sprockets/static_compiler.rb +0 -56
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ActionDispatch
4
+ class RequestEncoder # :nodoc:
5
+ class IdentityEncoder
6
+ def content_type; end
7
+ def accept_header; end
8
+ def encode_params(params); params; end
9
+ def response_parser; -> body { body }; end
10
+ end
11
+
12
+ @encoders = { identity: IdentityEncoder.new }
13
+
14
+ attr_reader :response_parser
15
+
16
+ def initialize(mime_name, param_encoder, response_parser)
17
+ @mime = Mime[mime_name]
18
+
19
+ unless @mime
20
+ raise ArgumentError, "Can't register a request encoder for " \
21
+ "unregistered MIME Type: #{mime_name}. See `Mime::Type.register`."
22
+ end
23
+
24
+ @response_parser = response_parser || -> body { body }
25
+ @param_encoder = param_encoder || :"to_#{@mime.symbol}".to_proc
26
+ end
27
+
28
+ def content_type
29
+ @mime.to_s
30
+ end
31
+
32
+ def accept_header
33
+ @mime.to_s
34
+ end
35
+
36
+ def encode_params(params)
37
+ @param_encoder.call(params) if params
38
+ end
39
+
40
+ def self.parser(content_type)
41
+ mime = Mime::Type.lookup(content_type)
42
+ encoder(mime ? mime.ref : nil).response_parser
43
+ end
44
+
45
+ def self.encoder(name)
46
+ @encoders[name] || @encoders[:identity]
47
+ end
48
+
49
+ def self.register_encoder(mime_name, param_encoder: nil, response_parser: nil)
50
+ @encoders[mime_name] = new(mime_name, param_encoder, response_parser)
51
+ end
52
+
53
+ register_encoder :json, response_parser: -> body { JSON.parse(body) }
54
+ end
55
+ end
@@ -1,12 +1,34 @@
1
- require 'action_dispatch/middleware/cookies'
2
- require 'action_dispatch/middleware/flash'
3
- require 'active_support/core_ext/hash/indifferent_access'
1
+ # frozen_string_literal: true
2
+
3
+ require "action_dispatch/middleware/cookies"
4
+ require "action_dispatch/middleware/flash"
4
5
 
5
6
  module ActionDispatch
6
7
  module TestProcess
8
+ module FixtureFile
9
+ # Shortcut for <tt>Rack::Test::UploadedFile.new(File.join(ActionDispatch::IntegrationTest.fixture_path, path), type)</tt>:
10
+ #
11
+ # post :change_avatar, avatar: fixture_file_upload('files/spongebob.png', 'image/png')
12
+ #
13
+ # To upload binary files on Windows, pass <tt>:binary</tt> as the last parameter.
14
+ # This will not affect other platforms:
15
+ #
16
+ # post :change_avatar, avatar: fixture_file_upload('files/spongebob.png', 'image/png', :binary)
17
+ def fixture_file_upload(path, mime_type = nil, binary = false)
18
+ if self.class.respond_to?(:fixture_path) && self.class.fixture_path &&
19
+ !File.exist?(path)
20
+ path = File.join(self.class.fixture_path, path)
21
+ end
22
+ Rack::Test::UploadedFile.new(path, mime_type, binary)
23
+ end
24
+ end
25
+
26
+ include FixtureFile
27
+
7
28
  def assigns(key = nil)
8
- assigns = @controller.view_assigns.with_indifferent_access
9
- key.nil? ? assigns : assigns[key]
29
+ raise NoMethodError,
30
+ "assigns has been extracted to a gem. To continue using it,
31
+ add `gem 'rails-controller-testing'` to your Gemfile."
10
32
  end
11
33
 
12
34
  def session
@@ -18,24 +40,11 @@ module ActionDispatch
18
40
  end
19
41
 
20
42
  def cookies
21
- @request.cookie_jar
43
+ @cookie_jar ||= Cookies::CookieJar.build(@request, @request.cookies)
22
44
  end
23
45
 
24
46
  def redirect_to_url
25
47
  @response.redirect_url
26
48
  end
27
-
28
- # Shortcut for <tt>Rack::Test::UploadedFile.new(ActionController::TestCase.fixture_path + path, type)</tt>:
29
- #
30
- # post :change_avatar, :avatar => fixture_file_upload('/files/spongebob.png', 'image/png')
31
- #
32
- # To upload binary files on Windows, pass <tt>:binary</tt> as the last parameter.
33
- # This will not affect other platforms:
34
- #
35
- # post :change_avatar, :avatar => fixture_file_upload('/files/spongebob.png', 'image/png', :binary)
36
- def fixture_file_upload(path, mime_type = nil, binary = false)
37
- fixture_path = self.class.fixture_path if self.class.respond_to?(:fixture_path)
38
- Rack::Test::UploadedFile.new("#{fixture_path}#{path}", mime_type, binary)
39
- end
40
49
  end
41
50
  end
@@ -1,74 +1,71 @@
1
- require 'active_support/core_ext/object/blank'
2
- require 'active_support/core_ext/hash/indifferent_access'
3
- require 'active_support/core_ext/hash/reverse_merge'
4
- require 'rack/utils'
1
+ # frozen_string_literal: true
2
+
3
+ require "active_support/core_ext/hash/indifferent_access"
4
+ require "rack/utils"
5
5
 
6
6
  module ActionDispatch
7
7
  class TestRequest < Request
8
- DEFAULT_ENV = Rack::MockRequest.env_for('/')
9
-
10
- def self.new(env = {})
11
- super
12
- end
13
-
14
- def initialize(env = {})
8
+ DEFAULT_ENV = Rack::MockRequest.env_for("/",
9
+ "HTTP_HOST" => "test.host",
10
+ "REMOTE_ADDR" => "0.0.0.0",
11
+ "HTTP_USER_AGENT" => "Rails Testing",
12
+ )
13
+
14
+ # Create a new test request with default +env+ values.
15
+ def self.create(env = {})
15
16
  env = Rails.application.env_config.merge(env) if defined?(Rails.application) && Rails.application
16
- super(DEFAULT_ENV.merge(env))
17
+ env["rack.request.cookie_hash"] ||= {}.with_indifferent_access
18
+ new(default_env.merge(env))
19
+ end
17
20
 
18
- self.host = 'test.host'
19
- self.remote_addr = '0.0.0.0'
20
- self.user_agent = 'Rails Testing'
21
+ def self.default_env
22
+ DEFAULT_ENV
21
23
  end
24
+ private_class_method :default_env
22
25
 
23
26
  def request_method=(method)
24
- @env['REQUEST_METHOD'] = method.to_s.upcase
27
+ super(method.to_s.upcase)
25
28
  end
26
29
 
27
30
  def host=(host)
28
- @env['HTTP_HOST'] = host
31
+ set_header("HTTP_HOST", host)
29
32
  end
30
33
 
31
34
  def port=(number)
32
- @env['SERVER_PORT'] = number.to_i
35
+ set_header("SERVER_PORT", number.to_i)
33
36
  end
34
37
 
35
38
  def request_uri=(uri)
36
- @env['REQUEST_URI'] = uri
39
+ set_header("REQUEST_URI", uri)
37
40
  end
38
41
 
39
42
  def path=(path)
40
- @env['PATH_INFO'] = path
43
+ set_header("PATH_INFO", path)
41
44
  end
42
45
 
43
46
  def action=(action_name)
44
- path_parameters["action"] = action_name.to_s
47
+ path_parameters[:action] = action_name.to_s
45
48
  end
46
49
 
47
50
  def if_modified_since=(last_modified)
48
- @env['HTTP_IF_MODIFIED_SINCE'] = last_modified
51
+ set_header("HTTP_IF_MODIFIED_SINCE", last_modified)
49
52
  end
50
53
 
51
54
  def if_none_match=(etag)
52
- @env['HTTP_IF_NONE_MATCH'] = etag
55
+ set_header("HTTP_IF_NONE_MATCH", etag)
53
56
  end
54
57
 
55
58
  def remote_addr=(addr)
56
- @env['REMOTE_ADDR'] = addr
59
+ set_header("REMOTE_ADDR", addr)
57
60
  end
58
61
 
59
62
  def user_agent=(user_agent)
60
- @env['HTTP_USER_AGENT'] = user_agent
63
+ set_header("HTTP_USER_AGENT", user_agent)
61
64
  end
62
65
 
63
66
  def accept=(mime_types)
64
- @env.delete('action_dispatch.request.accepts')
65
- @env['HTTP_ACCEPT'] = Array(mime_types).collect { |mime_type| mime_type.to_s }.join(",")
66
- end
67
-
68
- alias :rack_cookies :cookies
69
-
70
- def cookies
71
- @cookies ||= {}.with_indifferent_access
67
+ delete_header("action_dispatch.request.accepts")
68
+ set_header("HTTP_ACCEPT", Array(mime_types).collect(&:to_s).join(","))
72
69
  end
73
70
  end
74
71
  end
@@ -1,3 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "action_dispatch/testing/request_encoder"
4
+
1
5
  module ActionDispatch
2
6
  # Integration test methods such as ActionDispatch::Integration::Session#get
3
7
  # and ActionDispatch::Integration::Session#post return objects of class
@@ -7,23 +11,43 @@ module ActionDispatch
7
11
  # See Response for more information on controller response objects.
8
12
  class TestResponse < Response
9
13
  def self.from_response(response)
10
- new.tap do |resp|
11
- resp.status = response.status
12
- resp.headers = response.headers
13
- resp.body = response.body
14
- end
14
+ new response.status, response.headers, response.body
15
+ end
16
+
17
+ def initialize(*) # :nodoc:
18
+ super
19
+ @response_parser = RequestEncoder.parser(content_type)
15
20
  end
16
21
 
17
22
  # Was the response successful?
18
- alias_method :success?, :successful?
23
+ def success?
24
+ ActiveSupport::Deprecation.warn(<<-MSG.squish)
25
+ The success? predicate is deprecated and will be removed in Rails 6.0.
26
+ Please use successful? as provided by Rack::Response::Helpers.
27
+ MSG
28
+ successful?
29
+ end
19
30
 
20
31
  # Was the URL not found?
21
- alias_method :missing?, :not_found?
22
-
23
- # Were we redirected?
24
- alias_method :redirect?, :redirection?
32
+ def missing?
33
+ ActiveSupport::Deprecation.warn(<<-MSG.squish)
34
+ The missing? predicate is deprecated and will be removed in Rails 6.0.
35
+ Please use not_found? as provided by Rack::Response::Helpers.
36
+ MSG
37
+ not_found?
38
+ end
25
39
 
26
40
  # Was there a server-side error?
27
- alias_method :error?, :server_error?
41
+ def error?
42
+ ActiveSupport::Deprecation.warn(<<-MSG.squish)
43
+ The error? predicate is deprecated and will be removed in Rails 6.0.
44
+ Please use server_error? as provided by Rack::Response::Helpers.
45
+ MSG
46
+ server_error?
47
+ end
48
+
49
+ def parsed_body
50
+ @parsed_body ||= @response_parser.call(body)
51
+ end
28
52
  end
29
53
  end
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  #--
2
- # Copyright (c) 2004-2011 David Heinemeier Hansson
4
+ # Copyright (c) 2004-2018 David Heinemeier Hansson
3
5
  #
4
6
  # Permission is hereby granted, free of charge, to any person obtaining
5
7
  # a copy of this software and associated documentation files (the
@@ -21,50 +23,50 @@
21
23
  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
24
  #++
23
25
 
24
- activesupport_path = File.expand_path('../../../activesupport/lib', __FILE__)
25
- $:.unshift(activesupport_path) if File.directory?(activesupport_path) && !$:.include?(activesupport_path)
26
-
27
- activemodel_path = File.expand_path('../../../activemodel/lib', __FILE__)
28
- $:.unshift(activemodel_path) if File.directory?(activemodel_path) && !$:.include?(activemodel_path)
29
-
30
- require 'active_support'
31
- require 'active_support/dependencies/autoload'
26
+ require "active_support"
27
+ require "active_support/rails"
28
+ require "active_support/core_ext/module/attribute_accessors"
32
29
 
33
- require 'action_pack'
34
- require 'active_model'
35
- require 'rack'
30
+ require "action_pack"
31
+ require "rack"
36
32
 
37
33
  module Rack
38
- autoload :Test, 'rack/test'
34
+ autoload :Test, "rack/test"
39
35
  end
40
36
 
41
37
  module ActionDispatch
42
38
  extend ActiveSupport::Autoload
43
39
 
44
- autoload_under 'http' do
45
- autoload :Request
46
- autoload :Response
40
+ class IllegalStateError < StandardError
41
+ end
42
+
43
+ eager_autoload do
44
+ autoload_under "http" do
45
+ autoload :ContentSecurityPolicy
46
+ autoload :Request
47
+ autoload :Response
48
+ end
47
49
  end
48
50
 
49
- autoload_under 'middleware' do
51
+ autoload_under "middleware" do
50
52
  autoload :RequestId
51
- autoload :BestStandardsSupport
52
53
  autoload :Callbacks
53
54
  autoload :Cookies
54
55
  autoload :DebugExceptions
56
+ autoload :DebugLocks
55
57
  autoload :ExceptionWrapper
58
+ autoload :Executor
56
59
  autoload :Flash
57
- autoload :Head
58
- autoload :ParamsParser
59
60
  autoload :PublicExceptions
60
61
  autoload :Reloader
61
62
  autoload :RemoteIp
62
- autoload :Rescue
63
63
  autoload :ShowExceptions
64
+ autoload :SSL
64
65
  autoload :Static
65
66
  end
66
67
 
67
- autoload :MiddlewareStack, 'action_dispatch/middleware/stack'
68
+ autoload :Journey
69
+ autoload :MiddlewareStack, "action_dispatch/middleware/stack"
68
70
  autoload :Routing
69
71
 
70
72
  module Http
@@ -75,28 +77,36 @@ module ActionDispatch
75
77
  autoload :MimeNegotiation
76
78
  autoload :Parameters
77
79
  autoload :ParameterFilter
78
- autoload :FilterParameters
79
80
  autoload :Upload
80
- autoload :UploadedFile, 'action_dispatch/http/upload'
81
+ autoload :UploadedFile, "action_dispatch/http/upload"
81
82
  autoload :URL
82
83
  end
83
84
 
84
85
  module Session
85
- autoload :AbstractStore, 'action_dispatch/middleware/session/abstract_store'
86
- autoload :CookieStore, 'action_dispatch/middleware/session/cookie_store'
87
- autoload :MemCacheStore, 'action_dispatch/middleware/session/mem_cache_store'
88
- autoload :CacheStore, 'action_dispatch/middleware/session/cache_store'
86
+ autoload :AbstractStore, "action_dispatch/middleware/session/abstract_store"
87
+ autoload :CookieStore, "action_dispatch/middleware/session/cookie_store"
88
+ autoload :MemCacheStore, "action_dispatch/middleware/session/mem_cache_store"
89
+ autoload :CacheStore, "action_dispatch/middleware/session/cache_store"
89
90
  end
90
91
 
91
- autoload_under 'testing' do
92
+ mattr_accessor :test_app
93
+
94
+ autoload_under "testing" do
92
95
  autoload :Assertions
93
96
  autoload :Integration
94
- autoload :IntegrationTest, 'action_dispatch/testing/integration'
95
- autoload :PerformanceTest
97
+ autoload :IntegrationTest, "action_dispatch/testing/integration"
96
98
  autoload :TestProcess
97
99
  autoload :TestRequest
98
100
  autoload :TestResponse
101
+ autoload :AssertionResponse
99
102
  end
103
+
104
+ autoload :SystemTestCase, "action_dispatch/system_test_case"
100
105
  end
101
106
 
102
- autoload :Mime, 'action_dispatch/http/mime_type'
107
+ autoload :Mime, "action_dispatch/http/mime_type"
108
+
109
+ ActiveSupport.on_load(:action_view) do
110
+ ActionView::Base.default_formats ||= Mime::SET.symbols
111
+ ActionView::Template::Types.delegate_to Mime
112
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ActionPack
4
+ # Returns the version of the currently loaded Action Pack as a <tt>Gem::Version</tt>
5
+ def self.gem_version
6
+ Gem::Version.new VERSION::STRING
7
+ end
8
+
9
+ module VERSION
10
+ MAJOR = 5
11
+ MINOR = 2
12
+ TINY = 4
13
+ PRE = nil
14
+
15
+ STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
16
+ end
17
+ end
@@ -1,10 +1,10 @@
1
- module ActionPack
2
- module VERSION #:nodoc:
3
- MAJOR = 3
4
- MINOR = 2
5
- TINY = 22
6
- PRE = "5"
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "gem_version"
7
4
 
8
- STRING = [MAJOR, MINOR, TINY, PRE].compact.join('.')
5
+ module ActionPack
6
+ # Returns the version of the currently loaded ActionPack as a <tt>Gem::Version</tt>
7
+ def self.version
8
+ gem_version
9
9
  end
10
10
  end
data/lib/action_pack.rb CHANGED
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  #--
2
- # Copyright (c) 2004-2011 David Heinemeier Hansson
4
+ # Copyright (c) 2004-2018 David Heinemeier Hansson
3
5
  #
4
6
  # Permission is hereby granted, free of charge, to any person obtaining
5
7
  # a copy of this software and associated documentation files (the
@@ -21,4 +23,4 @@
21
23
  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
24
  #++
23
25
 
24
- require 'action_pack/version'
26
+ require "action_pack/version"