## 2.1.0 / 2023-03-14

* 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` for `Rack::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` support `default_host` method similar to
    `app`, 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)

## 2.0.2 / 2022-06-28

* Bug fixes:
  * Fix additional incompatible character encodings error when building
    uploaded bodies (Jeremy Evans #311)

## 2.0.1 / 2022-06-27

* Bug fixes:
  * Fix incompatible character encodings error when building uploaded
    file bodies (Jeremy Evans #308 #309)

## 2.0.0 / 2022-06-24

* 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 than `build_nested_query`
    and `build_multipart` are now private methods (Jeremy Evans #297)
  * `Rack::MockSession` has been combined into `Rack::Test::Session`,
    and remains as an alias to `Rack::Test::Session`, but to keep some
    backwards compatibility, `Rack::Test::Session.new` will accept a
    `Rack::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 defines `build_rack_mock_session`,
    but for backwards compatibility, `build_rack_test_session` will call
    `build_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 with `multipart/` (Tom Knig #238)
  * Work correctly with responses that respond to `to_a` but not
    `to_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)

## 1.1.0 / 2018-07-21

* 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)

## 1.0.0 / 2018-03-27

* 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` during `follow_redirect!`
    (Alexander Popov #218)
  * Document how to use URL params with DELETE method
    (Timur Platonov #220)

## 0.8.3 / 2018-02-27

* 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)

## 0.8.2 / 2017-11-21

* Bug fixes:
  * Bugfix for `UploadedFile.new` unintended API breakage.
    (Per Lundberg #210)

## 0.8.0 / 2017-11-20

* Known Issue
  * In `UploadedFile.new`, when passing e.g. a `Pathname` object,
    errors can be raised (eg. `ArgumentError: Missing original_filename
    for IO`, or `NoMethodError: undefined method 'size'`) See #207, #209.
* 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)

## 0.7.0 / 2017-07-10

* 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 in `Rack::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)

## 0.6.3 / 2015-01-09

* 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)

## 0.6.2 / 2012-09-27

* 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)

## 0.6.1 / 2011-07-27

* Bug fixes
  * Fix support for params with arrays in multipart forms (Joel Chippindale)
  * Add `respond_to?` to `Rack::Test::UploadedFile` to match `method_missing` (Josh Nichols)
  * Set the Referer header on requests issued by follow_redirect! (Ryan Bigg)

## 0.6.0 / 2011-05-03

* 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)

## 0.5.7 / 2011-01-01
* Bug fixes
  * If no URI is present, include all cookies (Pratik Naik)

## 0.5.6 / 2010-09-25

* 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)

## 0.5.5 / 2010-09-22

* Bug fixes
  * Fix encoding of file uploads on Ruby 1.9 (Alan Kennedy)
  * Set env["HTTP_HOST"] when making requests (Istvan Hoka)

## 0.5.4 / 2010-05-26

* 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)

## 0.5.3 / 2009-11-27

* Bug fixes
  * Fix cookie matching for subdomains (Marcin Kulik)

## 0.5.2 / 2009-11-13

* Bug fixes
  * Call close on response body after iteration, not before (Simon Rozet)
  * Add missing require for time in cookie_jar.rb (Jerry West)

## 0.5.1 / 2009-10-27

* Bug fixes
  * Escape cookie values (John Pignata)
  * Close the response body after each request, as per the Rack spec (Elomar França)

## 0.5.0 / 2009-09-19

* 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

## 0.4.2 / 2009-09-01

* 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ä)

## 0.4.1 / 2009-08-06

* Minor enhancements
  * Support initializing a `Rack::Test::Session` with an app in addition to
    a `Rack::MockSession`
  * Allow CONTENT_TYPE to be specified in the env and not overwritten when
    sending a POST or PUT

## 0.4.0 / 2009-06-25

* 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` with `Rack::MockSessions` instead of apps.
    This change should help integration with other Ruby web frameworks
    (like Merb).
  * Support sending bodies for PUT requests (Larry Diehl)

## 0.3.0 / 2009-05-17

* Major enhancements
  * Ruby 1.9 compatible (Simon Rozet, Michael Fellinger)
* Minor enhancements
  * Add `CookieJar#[]` and `CookieJar#[]=` methods
  * Make the default host configurable
  * Use `Rack::Lint` and fix errors (Simon Rozet)
  * Extract `Rack::MockSession` from `Rack::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)

## 0.2.0 / 2009-04-26

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 a `MockResponse` instead of a Response
    (Michael Fellinger)

## 0.1.0 / 2009-03-02

* 1 major enhancement
  * Birthday!
