- Minor enhancements:
Rack::Test::UploadedFile
no longer uses a finalizer for named paths to close and unlink the created Tempfile. Tempfile itself uses a finalizer to close and unlink itself, so there is no reason forRack::Test::UploadedFile
to do so (Jeremy Evans #338)
-
Breaking changes:
- Digest authentication support, deprecated in 2.0.0, has been removed (Jeremy Evans #307)
- requiring rack/mock_session, deprecated in 2.0.0, has been removed (Jeremy Evans #307)
-
Minor enhancements:
- The
original_filename
forRack::Test::UploadedFile
can now be set even if the content of the file comes from a file path (Stuart Chinery #314) - Add
Rack::Test::Session#restore_state
, for executing a block and restoring current state (last request, last response, and cookies) after the block (Jeremy Evans #316) - Make
Rack::Test::Methods
supportdefault_host
method similar toapp
, which will set the default host used for requests to the app (Jeremy Evans #317 #318) - Allow responses to set cookie paths not matching the current request URI. Such cookies will only be sent for paths matching the cookie path (Chris Waters #322)
- Ignore leading dot for cookie domains, per RFC 6265 (Stephen Crosby #329)
- Avoid creating empty multipart body if params is empty in
Rack::Test::Session#env_for
(Ryunosuke Sato #331)
- The
- Bug fixes:
- Fix additional incompatible character encodings error when building uploaded bodies (Jeremy Evans #311)
- Bug fixes:
- Fix incompatible character encodings error when building uploaded file bodies (Jeremy Evans #308 #309)
-
Breaking changes:
- Digest authentication support is now deprecated, as it relies on digest authentication support in rack, which has been deprecated (Jeremy Evans #294)
Rack::Test::Utils.build_primitive_part
no longer handles array values (Jeremy Evans #292)Rack::Test::Utils
module methods other thanbuild_nested_query
andbuild_multipart
are now private methods (Jeremy Evans #297)Rack::MockSession
has been combined intoRack::Test::Session
, and remains as an alias toRack::Test::Session
, but to keep some backwards compatibility,Rack::Test::Session.new
will accept aRack::Test::Session
instance and return it (Jeremy Evans #297)- Previously protected methods in
Rack::Test::Cookie{,Jar}
are now private methods (Jeremy Evans #297) Rack::Test::Methods
no longer definesbuild_rack_mock_session
, but for backwards compatibility,build_rack_test_session
will callbuild_rack_mock_session
if it is defined (Jeremy Evans #297)Rack::Test::Methods::METHODS
is no longer defined (Jeremy Evans #297)Rack::Test::Methods#_current_session_names
has been removed (Jeremy Evans #297)- Headers used/accessed by rack-test are now lower case, for rack 3 compliance (Jeremy Evans #295)
- Frozen literal strings are now used internally, which may break code that mutates static strings returned by rack-test, if any (Jeremy Evans #304)
-
Minor enhancements:
- rack-test now works with the rack main branch (what will be rack 3) (Jeremy Evans #280 #292)
- rack-test only loads the parts of rack it uses when running on the rack main branch (what will be rack 3) (Jeremy Evans #292)
- Development dependencies have been significantly reduced, and are now a subset of the development dependencies of rack itself (Jeremy Evans #292)
- Avoid creating multiple large copies of uploaded file data in memory (Jeremy Evans #286)
- Specify HTTP/1.0 when submitting requests, to avoid responses with Transfer-Encoding: chunked (Jeremy Evans #288)
- Support
:query_params
in rack environment for parameters that are appended to the query string instead of used in the request body (Jeremy Evans #150 #287) - Reduce required ruby version to 2.0, since tests run fine on Ruby 2.0 (Jeremy Evans #292)
- Support :multipart env key for request methods to force multipart input (Jeremy Evans #303)
- Force multipart input for request methods if content type starts with multipart (Jeremy Evans #303)
- Improve performance of Utils.build_multipart by using an append-only design (Jeremy Evans #304)
- Improve performance of Utils.build_nested_query for array values (Jeremy Evans #304)
-
Bug fixes:
- The
CONTENT_TYPE
of multipart requests is now respected, if it starts withmultipart/
(Tom Knig #238) - Work correctly with responses that respond to
to_a
but notto_ary
(Sergio Faria #276) - Raise an ArgumentError instead of a TypeError when providing a StringIO without an original filename when creating an UploadedFile (Nuno Correia #279)
- Allow combining both an UploadedFile and a plain string when building a multipart upload (Mitsuhiro Shibuya #278)
- Fix the generation of filenames with spaces to use path escaping instead of regular escaping, since path unescaping is used to decode it (Muir Manders, Jeremy Evans #275 #284)
- Rewind tempfile used for multipart uploads before it is submitted to the application (Jeremy Evans, Alexander Dervish #261 #268 #286)
- Fix Rack::Test.encoding_aware_strings to be true only on rack 1.6+ (Jeremy Evans #292)
- Make Rack::Test::CookieJar#valid? return true/false (Jeremy Evans #292)
- Cookies without a domain attribute no longer are submitted to requests for subdomains of that domain, for RFC 6265 compliance (Jeremy Evans #292)
- Increase required rack version to 1.3, since tests fail on rack 1.2 and below (Jeremy Evans #293)
- The
-
Breaking changes:
- None
-
Minor enhancements / new functionality:
- [GitHub] Added configuration for Stale (Per Lundberg #232)
- follow_direct: Include rack.session.options (Mark Edmondson #233)
- [CI] Add simplecov (fatkodima #227)
-
Bug fixes:
- Follow relative locations correctly. (Samuel Williams #230)
-
Breaking changes:
- Always set CONTENT_TYPE for non-GET requests (Per Lundberg #223)
-
Minor enhancements / bug fixes:
- Create tempfile using the basename without extension (Edouard Chin #201)
- Save
session
duringfollow_redirect!
(Alexander Popov #218) - Document how to use URL params with DELETE method (Timur Platonov #220)
-
Bug fixes:
- Do not set Content-Type if params are explicitly set to nil (Bartek Bułat #212). Fixes #200.
- Fix
UploadedFile#new
regression (Per Lundberg #215)
-
Minor enhancements
- [CI] Test against Ruby 2.5 (Nicolas Leger #217)
- Bug fixes:
- Bugfix for
UploadedFile.new
unintended API breakage. (Per Lundberg #210)
- Bugfix for
- Known Issue
- In
UploadedFile.new
, when passing e.g. aPathname
object, errors can be raised (eg.ArgumentError: Missing original_filename for IO
, orNoMethodError: undefined method 'size'
) See #207, #209.
- In
- Minor enhancements
- Add a required_ruby_version of >= 2.2.2, similar to rack 2.0.1. (Samuel Giddins #194)
- Remove new line from basic auth. (Felix Kleinschmidt #185)
- Rubocop fixes (Per Lundberg #196)
- Add how to install rack-test from github to README. (Jun Aruga #189)
- Update CodeClimate badges (Toshimaru #195)
- Add the ability to create Test::UploadedFile instances without the file system (Adam Milligan #149)
- Add custom_request, remove duplication (Johannes Barre #184)
- README.md: Added note about how to post JSON (Per Lundberg #198)
- README.md: Added version badge (Per Lundberg #199)
- Bug fixes
- Bugfix for Cookies with multiple paths (Kyle Welsby #197)
- Major enhancements
- The project URL changed to https://github.com/rack-test/rack-test (Per Lundberg, Dennis Sivia, Jun Aruga)
- Rack 2 compatible. (Trevor Wennblom #81, Vít Ondruch, Jun Aruga #151)
- Minor enhancements
- Port to RSpec 3. (Murahashi [Matt] Kenichi #70, Antonio Terceiro #134)
- Add Travis CI (Johannes Barre #108, Jun Aruga #161)
- Don't append an ampersand when params are empty (sbilharz, #157)
- Allow symbol access to cookies (Anorlondo448 #156)
- README: Added Travis badge (Olivier Lacan, Per Lundberg #146)
Rack::Test::Utils#build_multipart
: Allow passing a third parameter to force multipart (Koen Punt #142)- Allow better testing of cookies (Stephen Best #133)
- make
build_multipart
work without mixing inRack::Test::Utils
(Aaron Patterson #131) - Add license to gemspec (Jordi Massaguer Pla #72, Anatol Pomozov #89, Anatol Pomozov #90, Johannes Barre #109, Mandaryn #115, Chris Marshall #120, Robert Reiz #126, Nic Benders #127, Nic Benders #130)
- Feature/bulk pr for readme updates (Patrick Mulder #65, Troels Knak-Nielsen #74, Jeff Casimir #76)
- Switch README format to Markdown (Dennis Sivia #176)
- Convert History.txt to Markdown (Dennis Sivia #179)
- Stop generating gemspec file. (Jun Aruga #181)
- Fix errors at rake docs and whitespace. (Jun Aruga #183)
- Ensure Rack::Test::UploadedFile closes its tempfile file descriptor on GC (Michael de Silva #180)
- Change codeclimate URL correctly. (Jun Aruga #186)
- Bug fixes
- Initialize digest_username before using it. (Guo Xiang Tan #116, John Drago #124, Mike Perham #154)
- Do not set Content-Type for DELETE requests (David Celis #132)
- Adds support for empty arrays in params. (Cedric Röck, Tim Masliuchenko #125)
- Update README code example quotes to be consistent. (Dmitry Gritsay #112)
- Update README not to recommend installing gem with sudo. (T.J. Schuck #87)
- Set scheme when using ENV to enable SSL (Neil Ang #155)
- Reuse request method and parameters on HTTP 307 redirect. (Martin Mauch #138)
- Minor enhancements
- Expose an env helper for persistently configuring the env as needed (Darío Javier Cravero #80)
- Expose the tempfile of UploadedFile (Sytse Sijbrandij #67)
- Bug fixes
- Improve support for arrays of hashes in multipart forms (Murray Steele #69)
- Improve test for query strings (Paul Grayson #66)
- Minor enhancements
- Support HTTP PATCH method (Marjan Krekoten' #33)
- Preserve the exact query string when possible (Paul Grayson #63)
- Add a #delete method to CookieJar (Paul Grayson #63)
- Bug fixes
- Fix HTTP Digest authentication when the URI has query params
- Don't append default ports to HTTP_HOST (David Lee #57)
- Bug fixes
- Fix support for params with arrays in multipart forms (Joel Chippindale)
- Add
respond_to?
toRack::Test::UploadedFile
to matchmethod_missing
(Josh Nichols) - Set the Referer header on requests issued by follow_redirect! (Ryan Bigg)
- Bug fixes
- Add support for HTTP OPTIONS verb (Paolo "Nusco" Perrotta)
- Call #finish on MockResponses if it's available (Aaron Patterson)
- Allow HTTP_HOST to be set via #header (Geoff Buesing)
- Bug fixes
- If no URI is present, include all cookies (Pratik Naik)
- Bug fixes
- Use parse_nested_query for parsing URI like Rack does (Eugene Bolshakov)
- Don't depend on ActiveSupport extension to String (Bryan Helmkamp)
- Do not overwrite HTTP_HOST if it is set (Krekoten' Marjan)
- Bug fixes
- Fix encoding of file uploads on Ruby 1.9 (Alan Kennedy)
- Set env["HTTP_HOST"] when making requests (Istvan Hoka)
- Bug fixes
- Don't stomp on Content-Type's supplied via #header (Bryan Helmkamp)
- Fixed build_multipart to allow for arrays of files (Louis Rose)
- Don't raise an error if raw cookies contain a blank line (John Reilly)
- Handle parameter names with brackets properly (Tanner Donovan)
- Bug fixes
- Fix cookie matching for subdomains (Marcin Kulik)
- Bug fixes
- Call close on response body after iteration, not before (Simon Rozet)
- Add missing require for time in cookie_jar.rb (Jerry West)
- Bug fixes
- Escape cookie values (John Pignata)
- Close the response body after each request, as per the Rack spec (Elomar França)
- Bug fixes
- Set HTTP_X_REQUESTED_WITH in the Rack env when a request is made with :xhr => true (Ben Sales)
- Set headers in the Rack env in HTTP_USER_AGENT form
- Rack::Test now generates no Ruby warnings
- Minor enhancements
- Merge in rack/master's build_multipart method which covers additional cases
- Accept raw :params string input and merge it with the query string
- Stringify and upcase request method (e.g. :post => "POST") (Josh Peek)
- Bug fixes
- Properly convert hashes with nil values (e.g. :foo => nil becomes simply "foo", not "foo=")
- Prepend a slash to the URI path if it doesn't start with one (Josh Peek)
- Requiring Rack-Test never modifies the Ruby load path anymore (Josh Peek)
- Fixed using multiple cookies in a string on Ruby 1.8 (Tuomas Kareinen and Hermanni Hyytiälä)
- Minor enhancements
- Support initializing a
Rack::Test::Session
with an app in addition to aRack::MockSession
- Allow CONTENT_TYPE to be specified in the env and not overwritten when sending a POST or PUT
- Support initializing a
- Minor enhancements
- Expose hook for building
Rack::MockSessions
for frameworks that need to configure them before use - Support passing in arrays of raw cookies in addition to a newline separated string
- Support after_request callbacks in MockSession for things like running background jobs
- Allow multiple named sessions using with_session
- Initialize
Rack::Test::Sessions
withRack::MockSessions
instead of apps. This change should help integration with other Ruby web frameworks (like Merb). - Support sending bodies for PUT requests (Larry Diehl)
- Expose hook for building
- Major enhancements
- Ruby 1.9 compatible (Simon Rozet, Michael Fellinger)
- Minor enhancements
- Add
CookieJar#[]
andCookieJar#[]=
methods - Make the default host configurable
- Use
Rack::Lint
and fix errors (Simon Rozet) - Extract
Rack::MockSession
fromRack::Test::Session
to handle tracking the last request and response and the cookie jar - Add #set_cookie and #clear_cookies methods
- Rename #authorize to #basic_authorize (#authorize remains as an alias) (Simon Rozet)
- Add
Because #last_response
is now a MockResponse
instead of a Rack::Response
, #last_response.body
now returns a string instead of an array.
- Major enhancements
- Support multipart requests via the UploadedFile class (thanks, Rails)
- Minor enhancements
- Updated for Rack 1.0
- Don't require rubygems (See http://gist.github.com/54177)
- Support HTTP Digest authentication with the
#digest_authorize
method #last_response
returns aMockResponse
instead of a Response (Michael Fellinger)
- 1 major enhancement
- Birthday!