rack-test 0.8.3 → 1.1.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 98d93b9da867444521efc5c2d82d14b37c2b5743324865f96d2f6c0603ad8256
4
- data.tar.gz: 3f78a90b58f6de6582088185f995195841995e9b2a0a9518a93ecee081eb8416
3
+ metadata.gz: 14e25e843eada244c949970f14897865edcf1687b17889560923e32306632423
4
+ data.tar.gz: ac325910df89080a58b47b7ec9f7e84c552a597d09a0ed3e1c5600a7cc4a6d5a
5
5
  SHA512:
6
- metadata.gz: 3bd23e7ffcfa4ab19ad2966f36bcab31f49f3ea7f819fb81f15ce874437d8c6b96c6844f40499512042166b007d940b819b44e8d978ba4001f77fe515225f529
7
- data.tar.gz: 9d0479de503ae1a74f2aa9263b39dfdabf1745c17bed3fc18e6aaf757bf0b7428510f26a08c0021090ec98f8125eca74fb19e9f7f19eef41a94dd9847a441472
6
+ metadata.gz: a86f02b6cc8a0c7bbebbe64612e174f250abce84458ab732457e3b132f70f93b31f0ca791b75c167796690d3293fb4de02d895be85baeada4b619977b1b1ac39
7
+ data.tar.gz: 002d971754b2ac28d329c8b7231d97068939e6b0e17d24d7d7d87088ac15cff4597d560843168a0289098e58639bc39f9c3b22129550a39e0d5f07a03413d70b
data/History.md CHANGED
@@ -1,3 +1,30 @@
1
+ ## 1.1.0 / 2018-07-21
2
+
3
+ * Breaking changes:
4
+ * None
5
+
6
+ * Minor enhancements / new functionality:
7
+ * [GitHub] Added configuration for Stale (Per Lundberg #232)
8
+ * follow_direct: Include rack.session.options (Mark Edmondson #233)
9
+ * [CI] Add simplecov (fatkodima #227)
10
+
11
+ Bug fixes:
12
+ * Follow relative locations correctly. (Samuel Williams #230)
13
+
14
+ ## 1.0.0 / 2018-03-27
15
+
16
+ * Breaking changes:
17
+ * Always set CONTENT_TYPE for non-GET requests
18
+ (Per Lundberg #223)
19
+
20
+ * Minor enhancements / bug fixes:
21
+ * Create tempfile using the basename without extension
22
+ (Edouard Chin #201)
23
+ * Save `session` during `follow_redirect!`
24
+ (Alexander Popov #218)
25
+ * Document how to use URL params with DELETE method
26
+ (Timur Platonov #220)
27
+
1
28
  ## 0.8.3 / 2018-02-27
2
29
 
3
30
  * Bug fixes:
data/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # Rack::Test
2
2
  [![Gem Version](https://badge.fury.io/rb/rack-test.svg)](https://badge.fury.io/rb/rack-test)
3
3
  [<img src="https://travis-ci.org/rack-test/rack-test.svg?branch=master" />](https://travis-ci.org/rack-test/rack-test)
4
- [![Code Climate](https://codeclimate.com/github/codeclimate/codeclimate/badges/gpa.svg)](https://codeclimate.com/github/codeclimate/codeclimate)
5
- [![Test Coverage](https://codeclimate.com/github/codeclimate/codeclimate/badges/coverage.svg)](https://codeclimate.com/github/codeclimate/codeclimate/coverage)
4
+ [![Code Climate](https://codeclimate.com/github/rack-test/rack-test/badges/gpa.svg)](https://codeclimate.com/github/rack-test/rack-test)
5
+ [![Test Coverage](https://codeclimate.com/github/rack-test/rack-test/badges/coverage.svg)](https://codeclimate.com/github/rack-test/rack-test/coverage)
6
6
 
7
7
  Code: https://github.com/rack-test/rack-test
8
8
 
@@ -28,6 +28,10 @@ to build on.
28
28
 
29
29
  If you are using Ruby 1.8, 1.9 or JRuby 1.7, use rack-test 0.6.3.
30
30
 
31
+ ## Known incompatibilites
32
+
33
+ * `rack-test >= 0.71` _does not_ work with older Capybara versions (`< 2.17`). See [#214](https://github.com/rack-test/rack-test/issues/214) for more details.
34
+
31
35
  ## Examples
32
36
  (The examples use `Test::Unit` but it's equally possible to use `rack-test` with other testing frameworks like `rspec`.)
33
37
 
@@ -72,6 +76,10 @@ class HomepageTest < Test::Unit::TestCase
72
76
  # parameters, so make sure that `json` below is already a JSON-serialized string.
73
77
  post(uri, json, { 'CONTENT_TYPE' => 'application/json' })
74
78
  end
79
+
80
+ def delete_with_url_params_and_body
81
+ delete '/?foo=bar', JSON.generate('baz' => 'zot')
82
+ end
75
83
  end
76
84
  ```
77
85
 
@@ -106,7 +114,7 @@ gem install rack-test
106
114
  Or via Bundler:
107
115
 
108
116
  ```
109
- gem 'rack-test', require: 'rack/test'
117
+ gem 'rack-test'
110
118
  ```
111
119
 
112
120
  Or to install unreleased version via Bundler:
@@ -136,5 +144,7 @@ Contributions are welcome. Please make sure to:
136
144
 
137
145
  * Ensure `History.md` is up-to-date
138
146
  * Bump VERSION in lib/rack/test/version.rb
147
+ * `git commit . -m 'Release 1.1.0'`
148
+ * `git push`
139
149
  * bundle exec thor :release
140
150
  * Updated the [GitHub releases page](https://github.com/rack-test/rack-test/releases)
@@ -106,6 +106,8 @@ module Rack
106
106
  end
107
107
 
108
108
  class CookieJar # :nodoc:
109
+ DELIMITER = '; '.freeze
110
+
109
111
  # :api: private
110
112
  def initialize(cookies = [], default_host = DEFAULT_HOST)
111
113
  @default_host = default_host
@@ -158,7 +160,7 @@ module Rack
158
160
 
159
161
  # :api: private
160
162
  def for(uri)
161
- hash_for(uri).values.map(&:raw).join(';')
163
+ hash_for(uri).values.map(&:raw).join(DELIMITER)
162
164
  end
163
165
 
164
166
  def to_hash
@@ -71,8 +71,9 @@ module Rack
71
71
  raise "#{path} file does not exist" unless ::File.exist?(path)
72
72
 
73
73
  @original_filename = ::File.basename(path)
74
+ extension = ::File.extname(@original_filename)
74
75
 
75
- @tempfile = Tempfile.new([@original_filename, ::File.extname(path)])
76
+ @tempfile = Tempfile.new([::File.basename(@original_filename, extension), extension])
76
77
  @tempfile.set_encoding(Encoding::BINARY) if @tempfile.respond_to?(:set_encoding)
77
78
 
78
79
  ObjectSpace.define_finalizer(self, self.class.finalize(@tempfile))
@@ -1,5 +1,5 @@
1
1
  module Rack
2
2
  module Test
3
- VERSION = '0.8.3'.freeze
3
+ VERSION = '1.1.0'.freeze
4
4
  end
5
5
  end
data/lib/rack/test.rb CHANGED
@@ -188,11 +188,24 @@ module Rack
188
188
  unless last_response.redirect?
189
189
  raise Error, 'Last response was not a redirect. Cannot follow_redirect!'
190
190
  end
191
- if last_response.status == 307
192
- send(last_request.request_method.downcase.to_sym, last_response['Location'], last_request.params, 'HTTP_REFERER' => last_request.url)
193
- else
194
- get(last_response['Location'], {}, 'HTTP_REFERER' => last_request.url)
195
- end
191
+ request_method, params =
192
+ if last_response.status == 307
193
+ [last_request.request_method.downcase.to_sym, last_request.params]
194
+ else
195
+ [:get, {}]
196
+ end
197
+
198
+ # Compute the next location by appending the location header with the
199
+ # last request, as per https://tools.ietf.org/html/rfc7231#section-7.1.2
200
+ # Adding two absolute locations returns the right-hand location
201
+ next_location = URI.parse(last_request.url) + URI.parse(last_response['Location'])
202
+
203
+ send(
204
+ request_method, next_location.to_s, params,
205
+ 'HTTP_REFERER' => last_request.url,
206
+ 'rack.session' => last_request.session,
207
+ 'rack.session.options' => last_request.session_options
208
+ )
196
209
  end
197
210
 
198
211
  private
@@ -227,7 +240,7 @@ module Rack
227
240
  uri.query = [uri.query, build_nested_query(params)].compact.reject { |v| v == '' }.join('&')
228
241
  end
229
242
  elsif !env.key?(:input)
230
- env['CONTENT_TYPE'] ||= 'application/x-www-form-urlencoded' unless params.nil?
243
+ env['CONTENT_TYPE'] ||= 'application/x-www-form-urlencoded'
231
244
 
232
245
  if params.is_a?(Hash)
233
246
  if data = build_multipart(params)
@@ -235,6 +248,8 @@ module Rack
235
248
  env['CONTENT_LENGTH'] ||= data.length.to_s
236
249
  env['CONTENT_TYPE'] = "multipart/form-data; boundary=#{MULTIPART_BOUNDARY}"
237
250
  else
251
+ # NB: We do not need to set CONTENT_LENGTH here;
252
+ # Rack::ContentLength will determine it automatically.
238
253
  env[:input] = params_to_string(params)
239
254
  end
240
255
  else
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-test
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.3
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bryan Helmkamp
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-02-27 00:00:00.000000000 Z
11
+ date: 2018-07-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack
@@ -113,19 +113,19 @@ dependencies:
113
113
  - !ruby/object:Gem::Version
114
114
  version: '0.50'
115
115
  - !ruby/object:Gem::Dependency
116
- name: codeclimate-test-reporter
116
+ name: simplecov
117
117
  requirement: !ruby/object:Gem::Requirement
118
118
  requirements:
119
119
  - - "~>"
120
120
  - !ruby/object:Gem::Version
121
- version: '0.6'
121
+ version: '0.16'
122
122
  type: :development
123
123
  prerelease: false
124
124
  version_requirements: !ruby/object:Gem::Requirement
125
125
  requirements:
126
126
  - - "~>"
127
127
  - !ruby/object:Gem::Version
128
- version: '0.6'
128
+ version: '0.16'
129
129
  - !ruby/object:Gem::Dependency
130
130
  name: thor
131
131
  requirement: !ruby/object:Gem::Requirement
@@ -181,7 +181,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
181
181
  version: '0'
182
182
  requirements: []
183
183
  rubyforge_project:
184
- rubygems_version: 2.7.6
184
+ rubygems_version: 2.7.7
185
185
  signing_key:
186
186
  specification_version: 4
187
187
  summary: Simple testing API built on Rack