rack-test 0.8.3 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/History.md +14 -0
- data/README.md +9 -1
- data/lib/rack/test.rb +14 -6
- data/lib/rack/test/cookie_jar.rb +3 -1
- data/lib/rack/test/uploaded_file.rb +2 -1
- data/lib/rack/test/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ffbb291753487a29727c09ba1b0b96cf873564798ef6f984931256b54043eadd
|
4
|
+
data.tar.gz: e9f40c35a2578f36cfbfffb17efc796543455c2617961350790f1742653566c0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3c2735a0f2564b979b9b5fcd9f5f952e7c0bf0b3f31071271089b8df2b34e18436e516a38bf3d708082b07169bbd79612a6286610b072970bb1c79636c31d1e9
|
7
|
+
data.tar.gz: aa3444f42ebb904a6b33c03cfdb3787cef34acbe96171569395123483b5b0df66401d959576990d90ced9e587fdbfbba049f42884cec2696549ea685b6643baa
|
data/History.md
CHANGED
@@ -1,3 +1,17 @@
|
|
1
|
+
## 1.0.0 / 2018-03-27
|
2
|
+
|
3
|
+
* Breaking changes:
|
4
|
+
* Always set CONTENT_TYPE for non-GET requests
|
5
|
+
(Per Lundberg #223)
|
6
|
+
|
7
|
+
* Minor enhancements / bug fixes:
|
8
|
+
* Create tempfile using the basename without extension
|
9
|
+
(Edouard Chin #201)
|
10
|
+
* Save `session` during `follow_redirect!`
|
11
|
+
(Alexander Popov #218)
|
12
|
+
* Document how to use URL params with DELETE method
|
13
|
+
(Timur Platonov #220)
|
14
|
+
|
1
15
|
## 0.8.3 / 2018-02-27
|
2
16
|
|
3
17
|
* Bug fixes:
|
data/README.md
CHANGED
@@ -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'
|
117
|
+
gem 'rack-test'
|
110
118
|
```
|
111
119
|
|
112
120
|
Or to install unreleased version via Bundler:
|
data/lib/rack/test.rb
CHANGED
@@ -188,11 +188,17 @@ 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
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
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
|
+
send(
|
198
|
+
request_method, last_response['Location'], params,
|
199
|
+
'HTTP_REFERER' => last_request.url,
|
200
|
+
'rack.session' => last_request.session
|
201
|
+
)
|
196
202
|
end
|
197
203
|
|
198
204
|
private
|
@@ -227,7 +233,7 @@ module Rack
|
|
227
233
|
uri.query = [uri.query, build_nested_query(params)].compact.reject { |v| v == '' }.join('&')
|
228
234
|
end
|
229
235
|
elsif !env.key?(:input)
|
230
|
-
env['CONTENT_TYPE'] ||= 'application/x-www-form-urlencoded'
|
236
|
+
env['CONTENT_TYPE'] ||= 'application/x-www-form-urlencoded'
|
231
237
|
|
232
238
|
if params.is_a?(Hash)
|
233
239
|
if data = build_multipart(params)
|
@@ -235,6 +241,8 @@ module Rack
|
|
235
241
|
env['CONTENT_LENGTH'] ||= data.length.to_s
|
236
242
|
env['CONTENT_TYPE'] = "multipart/form-data; boundary=#{MULTIPART_BOUNDARY}"
|
237
243
|
else
|
244
|
+
# NB: We do not need to set CONTENT_LENGTH here;
|
245
|
+
# Rack::ContentLength will determine it automatically.
|
238
246
|
env[:input] = params_to_string(params)
|
239
247
|
end
|
240
248
|
else
|
data/lib/rack/test/cookie_jar.rb
CHANGED
@@ -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,
|
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))
|
data/lib/rack/test/version.rb
CHANGED
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.
|
4
|
+
version: 1.0.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-
|
11
|
+
date: 2018-03-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rack
|