rack-test 0.6.3 → 1.0.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 +7 -0
- data/History.md +243 -0
- data/README.md +148 -0
- data/lib/rack/mock_session.rb +6 -9
- data/lib/rack/test/cookie_jar.rb +39 -27
- data/lib/rack/test/methods.rb +22 -22
- data/lib/rack/test/mock_digest_request.rb +1 -5
- data/lib/rack/test/uploaded_file.rb +51 -19
- data/lib/rack/test/utils.rb +37 -43
- data/lib/rack/test/version.rb +5 -0
- data/lib/rack/test.rb +94 -85
- metadata +139 -60
- data/.document +0 -4
- data/.gitignore +0 -6
- data/Gemfile +0 -8
- data/Gemfile.lock +0 -41
- data/History.txt +0 -179
- data/README.rdoc +0 -85
- data/Rakefile +0 -33
- data/Thorfile +0 -114
- data/rack-test.gemspec +0 -77
- data/spec/fixtures/bar.txt +0 -1
- data/spec/fixtures/config.ru +0 -3
- data/spec/fixtures/fake_app.rb +0 -143
- data/spec/fixtures/foo.txt +0 -1
- data/spec/rack/test/cookie_spec.rb +0 -219
- data/spec/rack/test/digest_auth_spec.rb +0 -46
- data/spec/rack/test/multipart_spec.rb +0 -145
- data/spec/rack/test/uploaded_file_spec.rb +0 -24
- data/spec/rack/test/utils_spec.rb +0 -193
- data/spec/rack/test_spec.rb +0 -550
- data/spec/spec_helper.rb +0 -69
- data/spec/support/matchers/body.rb +0 -9
- data/spec/support/matchers/challenge.rb +0 -11
data/lib/rack/test.rb
CHANGED
@@ -1,18 +1,17 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
8
|
-
require
|
1
|
+
require 'uri'
|
2
|
+
require 'rack'
|
3
|
+
require 'rack/mock_session'
|
4
|
+
require 'rack/test/cookie_jar'
|
5
|
+
require 'rack/test/mock_digest_request'
|
6
|
+
require 'rack/test/utils'
|
7
|
+
require 'rack/test/methods'
|
8
|
+
require 'rack/test/uploaded_file'
|
9
|
+
require 'rack/test/version'
|
9
10
|
|
10
11
|
module Rack
|
11
12
|
module Test
|
12
|
-
|
13
|
-
|
14
|
-
DEFAULT_HOST = "example.org"
|
15
|
-
MULTIPART_BOUNDARY = "----------XnJLe9ZIbbGUYtzPQJ16u1"
|
13
|
+
DEFAULT_HOST = 'example.org'.freeze
|
14
|
+
MULTIPART_BOUNDARY = '----------XnJLe9ZIbbGUYtzPQJ16u1'.freeze
|
16
15
|
|
17
16
|
# The common base class for exceptions raised by Rack::Test
|
18
17
|
class Error < StandardError; end
|
@@ -36,11 +35,13 @@ module Rack
|
|
36
35
|
def initialize(mock_session)
|
37
36
|
@headers = {}
|
38
37
|
@env = {}
|
38
|
+
@digest_username = nil
|
39
|
+
@digest_password = nil
|
39
40
|
|
40
|
-
if mock_session.is_a?(MockSession)
|
41
|
-
|
41
|
+
@rack_mock_session = if mock_session.is_a?(MockSession)
|
42
|
+
mock_session
|
42
43
|
else
|
43
|
-
|
44
|
+
MockSession.new(mock_session)
|
44
45
|
end
|
45
46
|
|
46
47
|
@default_host = @rack_mock_session.default_host
|
@@ -54,8 +55,7 @@ module Rack
|
|
54
55
|
# Example:
|
55
56
|
# get "/"
|
56
57
|
def get(uri, params = {}, env = {}, &block)
|
57
|
-
|
58
|
-
process_request(uri, env, &block)
|
58
|
+
custom_request('GET', uri, params, env, &block)
|
59
59
|
end
|
60
60
|
|
61
61
|
# Issue a POST request for the given URI. See #get
|
@@ -63,8 +63,7 @@ module Rack
|
|
63
63
|
# Example:
|
64
64
|
# post "/signup", "name" => "Bryan"
|
65
65
|
def post(uri, params = {}, env = {}, &block)
|
66
|
-
|
67
|
-
process_request(uri, env, &block)
|
66
|
+
custom_request('POST', uri, params, env, &block)
|
68
67
|
end
|
69
68
|
|
70
69
|
# Issue a PUT request for the given URI. See #get
|
@@ -72,8 +71,7 @@ module Rack
|
|
72
71
|
# Example:
|
73
72
|
# put "/"
|
74
73
|
def put(uri, params = {}, env = {}, &block)
|
75
|
-
|
76
|
-
process_request(uri, env, &block)
|
74
|
+
custom_request('PUT', uri, params, env, &block)
|
77
75
|
end
|
78
76
|
|
79
77
|
# Issue a PATCH request for the given URI. See #get
|
@@ -81,8 +79,7 @@ module Rack
|
|
81
79
|
# Example:
|
82
80
|
# patch "/"
|
83
81
|
def patch(uri, params = {}, env = {}, &block)
|
84
|
-
|
85
|
-
process_request(uri, env, &block)
|
82
|
+
custom_request('PATCH', uri, params, env, &block)
|
86
83
|
end
|
87
84
|
|
88
85
|
# Issue a DELETE request for the given URI. See #get
|
@@ -90,8 +87,7 @@ module Rack
|
|
90
87
|
# Example:
|
91
88
|
# delete "/"
|
92
89
|
def delete(uri, params = {}, env = {}, &block)
|
93
|
-
|
94
|
-
process_request(uri, env, &block)
|
90
|
+
custom_request('DELETE', uri, params, env, &block)
|
95
91
|
end
|
96
92
|
|
97
93
|
# Issue an OPTIONS request for the given URI. See #get
|
@@ -99,8 +95,7 @@ module Rack
|
|
99
95
|
# Example:
|
100
96
|
# options "/"
|
101
97
|
def options(uri, params = {}, env = {}, &block)
|
102
|
-
|
103
|
-
process_request(uri, env, &block)
|
98
|
+
custom_request('OPTIONS', uri, params, env, &block)
|
104
99
|
end
|
105
100
|
|
106
101
|
# Issue a HEAD request for the given URI. See #get
|
@@ -108,8 +103,7 @@ module Rack
|
|
108
103
|
# Example:
|
109
104
|
# head "/"
|
110
105
|
def head(uri, params = {}, env = {}, &block)
|
111
|
-
|
112
|
-
process_request(uri, env, &block)
|
106
|
+
custom_request('HEAD', uri, params, env, &block)
|
113
107
|
end
|
114
108
|
|
115
109
|
# Issue a request to the Rack app for the given URI and optional Rack
|
@@ -120,10 +114,21 @@ module Rack
|
|
120
114
|
# Example:
|
121
115
|
# request "/"
|
122
116
|
def request(uri, env = {}, &block)
|
117
|
+
uri = parse_uri(uri, env)
|
123
118
|
env = env_for(uri, env)
|
124
119
|
process_request(uri, env, &block)
|
125
120
|
end
|
126
121
|
|
122
|
+
# Issue a request using the given verb for the given URI. See #get
|
123
|
+
#
|
124
|
+
# Example:
|
125
|
+
# custom_request "LINK", "/"
|
126
|
+
def custom_request(verb, uri, params = {}, env = {}, &block)
|
127
|
+
uri = parse_uri(uri, env)
|
128
|
+
env = env_for(uri, env.merge(method: verb.to_s.upcase, params: params))
|
129
|
+
process_request(uri, env, &block)
|
130
|
+
end
|
131
|
+
|
127
132
|
# Set a header to be included on all subsequent requests through the
|
128
133
|
# session. Use a value of nil to remove a previously configured header.
|
129
134
|
#
|
@@ -159,11 +164,11 @@ module Rack
|
|
159
164
|
# Example:
|
160
165
|
# basic_authorize "bryan", "secret"
|
161
166
|
def basic_authorize(username, password)
|
162
|
-
encoded_login = ["#{username}:#{password}"].pack(
|
167
|
+
encoded_login = ["#{username}:#{password}"].pack('m0')
|
163
168
|
header('Authorization', "Basic #{encoded_login}")
|
164
169
|
end
|
165
170
|
|
166
|
-
|
171
|
+
alias authorize basic_authorize
|
167
172
|
|
168
173
|
# Set the username and password for HTTP Digest authorization, to be
|
169
174
|
# included in subsequent requests in the HTTP_AUTHORIZATION header.
|
@@ -181,73 +186,81 @@ module Rack
|
|
181
186
|
# a redirect, an error will be raised.
|
182
187
|
def follow_redirect!
|
183
188
|
unless last_response.redirect?
|
184
|
-
raise Error
|
189
|
+
raise Error, 'Last response was not a redirect. Cannot follow_redirect!'
|
185
190
|
end
|
186
|
-
|
187
|
-
|
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
|
+
)
|
188
202
|
end
|
189
203
|
|
190
|
-
|
204
|
+
private
|
191
205
|
|
192
|
-
def
|
193
|
-
|
194
|
-
|
195
|
-
|
206
|
+
def parse_uri(path, env)
|
207
|
+
URI.parse(path).tap do |uri|
|
208
|
+
uri.path = "/#{uri.path}" unless uri.path[0] == '/'
|
209
|
+
uri.host ||= @default_host
|
210
|
+
uri.scheme ||= 'https' if env['HTTPS'] == 'on'
|
211
|
+
end
|
212
|
+
end
|
196
213
|
|
214
|
+
def env_for(uri, env)
|
197
215
|
env = default_env.merge(env)
|
198
216
|
|
199
|
-
env[
|
217
|
+
env['HTTP_HOST'] ||= [uri.host, (uri.port if uri.port != uri.default_port)].compact.join(':')
|
200
218
|
|
201
|
-
env.update(
|
202
|
-
env[
|
219
|
+
env.update('HTTPS' => 'on') if URI::HTTPS === uri
|
220
|
+
env['HTTP_X_REQUESTED_WITH'] = 'XMLHttpRequest' if env[:xhr]
|
203
221
|
|
204
222
|
# TODO: Remove this after Rack 1.1 has been released.
|
205
223
|
# Stringifying and upcasing methods has be commit upstream
|
206
|
-
env[
|
224
|
+
env['REQUEST_METHOD'] ||= env[:method] ? env[:method].to_s.upcase : 'GET'
|
225
|
+
|
226
|
+
params = env.delete(:params) do {} end
|
207
227
|
|
208
|
-
if env[
|
228
|
+
if env['REQUEST_METHOD'] == 'GET'
|
209
229
|
# merge :params with the query string
|
210
|
-
if params
|
230
|
+
if params
|
211
231
|
params = parse_nested_query(params) if params.is_a?(String)
|
212
|
-
|
213
|
-
uri.query = build_nested_query(params)
|
232
|
+
|
233
|
+
uri.query = [uri.query, build_nested_query(params)].compact.reject { |v| v == '' }.join('&')
|
214
234
|
end
|
215
|
-
elsif !env.
|
216
|
-
env[
|
235
|
+
elsif !env.key?(:input)
|
236
|
+
env['CONTENT_TYPE'] ||= 'application/x-www-form-urlencoded'
|
217
237
|
|
218
|
-
if
|
219
|
-
if data = build_multipart(
|
238
|
+
if params.is_a?(Hash)
|
239
|
+
if data = build_multipart(params)
|
220
240
|
env[:input] = data
|
221
|
-
env[
|
222
|
-
env[
|
241
|
+
env['CONTENT_LENGTH'] ||= data.length.to_s
|
242
|
+
env['CONTENT_TYPE'] = "multipart/form-data; boundary=#{MULTIPART_BOUNDARY}"
|
223
243
|
else
|
224
|
-
|
244
|
+
# NB: We do not need to set CONTENT_LENGTH here;
|
245
|
+
# Rack::ContentLength will determine it automatically.
|
246
|
+
env[:input] = params_to_string(params)
|
225
247
|
end
|
226
248
|
else
|
227
|
-
env[:input] =
|
249
|
+
env[:input] = params
|
228
250
|
end
|
229
251
|
end
|
230
252
|
|
231
|
-
env.delete(:
|
232
|
-
|
233
|
-
if env.has_key?(:cookie)
|
234
|
-
set_cookie(env.delete(:cookie), uri)
|
235
|
-
end
|
253
|
+
set_cookie(env.delete(:cookie), uri) if env.key?(:cookie)
|
236
254
|
|
237
255
|
Rack::MockRequest.env_for(uri.to_s, env)
|
238
256
|
end
|
239
257
|
|
240
258
|
def process_request(uri, env)
|
241
|
-
uri = URI.parse(uri)
|
242
|
-
uri.host ||= @default_host
|
243
|
-
|
244
259
|
@rack_mock_session.request(uri, env)
|
245
260
|
|
246
261
|
if retry_with_digest_auth?(env)
|
247
|
-
auth_env = env.merge(
|
248
|
-
|
249
|
-
"rack-test.digest_auth_retry" => true
|
250
|
-
})
|
262
|
+
auth_env = env.merge('HTTP_AUTHORIZATION' => digest_auth_header,
|
263
|
+
'rack-test.digest_auth_retry' => true)
|
251
264
|
auth_env.delete('rack.request')
|
252
265
|
process_request(uri.path, auth_env)
|
253
266
|
else
|
@@ -258,26 +271,24 @@ module Rack
|
|
258
271
|
end
|
259
272
|
|
260
273
|
def digest_auth_header
|
261
|
-
challenge = last_response[
|
274
|
+
challenge = last_response['WWW-Authenticate'].split(' ', 2).last
|
262
275
|
params = Rack::Auth::Digest::Params.parse(challenge)
|
263
276
|
|
264
|
-
params.merge!(
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
"method" => last_request.env["REQUEST_METHOD"],
|
270
|
-
})
|
277
|
+
params.merge!('username' => @digest_username,
|
278
|
+
'nc' => '00000001',
|
279
|
+
'cnonce' => 'nonsensenonce',
|
280
|
+
'uri' => last_request.fullpath,
|
281
|
+
'method' => last_request.env['REQUEST_METHOD'])
|
271
282
|
|
272
|
-
params[
|
283
|
+
params['response'] = MockDigestRequest.new(params).response(@digest_password)
|
273
284
|
|
274
285
|
"Digest #{params}"
|
275
286
|
end
|
276
287
|
|
277
288
|
def retry_with_digest_auth?(env)
|
278
289
|
last_response.status == 401 &&
|
279
|
-
|
280
|
-
|
290
|
+
digest_auth_configured? &&
|
291
|
+
!env['rack-test.digest_auth_retry']
|
281
292
|
end
|
282
293
|
|
283
294
|
def digest_auth_configured?
|
@@ -285,15 +296,15 @@ module Rack
|
|
285
296
|
end
|
286
297
|
|
287
298
|
def default_env
|
288
|
-
{
|
299
|
+
{ 'rack.test' => true, 'REMOTE_ADDR' => '127.0.0.1' }.merge(@env).merge(headers_for_env)
|
289
300
|
end
|
290
301
|
|
291
302
|
def headers_for_env
|
292
303
|
converted_headers = {}
|
293
304
|
|
294
305
|
@headers.each do |name, value|
|
295
|
-
env_key = name.upcase.
|
296
|
-
env_key =
|
306
|
+
env_key = name.upcase.tr('-', '_')
|
307
|
+
env_key = 'HTTP_' + env_key unless env_key == 'CONTENT_TYPE'
|
297
308
|
converted_headers[env_key] = value
|
298
309
|
end
|
299
310
|
|
@@ -303,16 +314,14 @@ module Rack
|
|
303
314
|
def params_to_string(params)
|
304
315
|
case params
|
305
316
|
when Hash then build_nested_query(params)
|
306
|
-
when nil then
|
317
|
+
when nil then ''
|
307
318
|
else params
|
308
319
|
end
|
309
320
|
end
|
310
|
-
|
311
321
|
end
|
312
322
|
|
313
323
|
def self.encoding_aware_strings?
|
314
|
-
defined?(Encoding) &&
|
324
|
+
defined?(Encoding) && ''.respond_to?(:encode)
|
315
325
|
end
|
316
|
-
|
317
326
|
end
|
318
327
|
end
|
metadata
CHANGED
@@ -1,56 +1,158 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-test
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 1.0.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Bryan Helmkamp
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2018-03-27 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rack
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '1.0'
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '3'
|
22
23
|
type: :runtime
|
23
24
|
prerelease: false
|
24
25
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
26
|
requirements:
|
27
|
-
- -
|
27
|
+
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: '1.0'
|
30
|
-
|
31
|
-
|
32
|
-
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '3'
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: rake
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - "~>"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '12.0'
|
40
|
+
type: :development
|
41
|
+
prerelease: false
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - "~>"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '12.0'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: rspec
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - "~>"
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '3.6'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - "~>"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '3.6'
|
61
|
+
- !ruby/object:Gem::Dependency
|
62
|
+
name: sinatra
|
63
|
+
requirement: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - ">="
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '1.0'
|
68
|
+
- - "<"
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '3'
|
71
|
+
type: :development
|
72
|
+
prerelease: false
|
73
|
+
version_requirements: !ruby/object:Gem::Requirement
|
74
|
+
requirements:
|
75
|
+
- - ">="
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '1.0'
|
78
|
+
- - "<"
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: '3'
|
81
|
+
- !ruby/object:Gem::Dependency
|
82
|
+
name: rdoc
|
83
|
+
requirement: !ruby/object:Gem::Requirement
|
84
|
+
requirements:
|
85
|
+
- - "~>"
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '5.1'
|
88
|
+
type: :development
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: !ruby/object:Gem::Requirement
|
91
|
+
requirements:
|
92
|
+
- - "~>"
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '5.1'
|
95
|
+
- !ruby/object:Gem::Dependency
|
96
|
+
name: rubocop
|
97
|
+
requirement: !ruby/object:Gem::Requirement
|
98
|
+
requirements:
|
99
|
+
- - ">="
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0.49'
|
102
|
+
- - "<"
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: '0.50'
|
105
|
+
type: :development
|
106
|
+
prerelease: false
|
107
|
+
version_requirements: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - ">="
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: '0.49'
|
112
|
+
- - "<"
|
113
|
+
- !ruby/object:Gem::Version
|
114
|
+
version: '0.50'
|
115
|
+
- !ruby/object:Gem::Dependency
|
116
|
+
name: codeclimate-test-reporter
|
117
|
+
requirement: !ruby/object:Gem::Requirement
|
118
|
+
requirements:
|
119
|
+
- - "~>"
|
120
|
+
- !ruby/object:Gem::Version
|
121
|
+
version: '0.6'
|
122
|
+
type: :development
|
123
|
+
prerelease: false
|
124
|
+
version_requirements: !ruby/object:Gem::Requirement
|
125
|
+
requirements:
|
126
|
+
- - "~>"
|
127
|
+
- !ruby/object:Gem::Version
|
128
|
+
version: '0.6'
|
129
|
+
- !ruby/object:Gem::Dependency
|
130
|
+
name: thor
|
131
|
+
requirement: !ruby/object:Gem::Requirement
|
132
|
+
requirements:
|
133
|
+
- - "~>"
|
134
|
+
- !ruby/object:Gem::Version
|
135
|
+
version: '0.19'
|
136
|
+
type: :development
|
137
|
+
prerelease: false
|
138
|
+
version_requirements: !ruby/object:Gem::Requirement
|
139
|
+
requirements:
|
140
|
+
- - "~>"
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
version: '0.19'
|
143
|
+
description: |-
|
144
|
+
Rack::Test is a small, simple testing API for Rack apps. It can be used on its
|
33
145
|
own or as a reusable starting point for Web frameworks and testing libraries
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
request helpers feature.'
|
146
|
+
to build on. Most of its initial functionality is an extraction of Merb 1.0's
|
147
|
+
request helpers feature.
|
38
148
|
email: bryan@brynary.com
|
39
149
|
executables: []
|
40
150
|
extensions: []
|
41
|
-
extra_rdoc_files:
|
42
|
-
- README.rdoc
|
43
|
-
- MIT-LICENSE.txt
|
151
|
+
extra_rdoc_files: []
|
44
152
|
files:
|
45
|
-
- .
|
46
|
-
- .gitignore
|
47
|
-
- Gemfile
|
48
|
-
- Gemfile.lock
|
49
|
-
- History.txt
|
153
|
+
- History.md
|
50
154
|
- MIT-LICENSE.txt
|
51
|
-
- README.
|
52
|
-
- Rakefile
|
53
|
-
- Thorfile
|
155
|
+
- README.md
|
54
156
|
- lib/rack/mock_session.rb
|
55
157
|
- lib/rack/test.rb
|
56
158
|
- lib/rack/test/cookie_jar.rb
|
@@ -58,52 +160,29 @@ files:
|
|
58
160
|
- lib/rack/test/mock_digest_request.rb
|
59
161
|
- lib/rack/test/uploaded_file.rb
|
60
162
|
- lib/rack/test/utils.rb
|
61
|
-
- rack
|
62
|
-
|
63
|
-
|
64
|
-
-
|
65
|
-
|
66
|
-
- spec/rack/test/cookie_spec.rb
|
67
|
-
- spec/rack/test/digest_auth_spec.rb
|
68
|
-
- spec/rack/test/multipart_spec.rb
|
69
|
-
- spec/rack/test/uploaded_file_spec.rb
|
70
|
-
- spec/rack/test/utils_spec.rb
|
71
|
-
- spec/rack/test_spec.rb
|
72
|
-
- spec/spec_helper.rb
|
73
|
-
- spec/support/matchers/body.rb
|
74
|
-
- spec/support/matchers/challenge.rb
|
75
|
-
homepage: http://github.com/brynary/rack-test
|
76
|
-
licenses: []
|
163
|
+
- lib/rack/test/version.rb
|
164
|
+
homepage: http://github.com/rack-test/rack-test
|
165
|
+
licenses:
|
166
|
+
- MIT
|
167
|
+
metadata: {}
|
77
168
|
post_install_message:
|
78
169
|
rdoc_options: []
|
79
170
|
require_paths:
|
80
171
|
- lib
|
81
172
|
required_ruby_version: !ruby/object:Gem::Requirement
|
82
|
-
none: false
|
83
173
|
requirements:
|
84
|
-
- -
|
174
|
+
- - ">="
|
85
175
|
- !ruby/object:Gem::Version
|
86
|
-
version:
|
176
|
+
version: 2.2.2
|
87
177
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
88
|
-
none: false
|
89
178
|
requirements:
|
90
|
-
- -
|
179
|
+
- - ">="
|
91
180
|
- !ruby/object:Gem::Version
|
92
181
|
version: '0'
|
93
182
|
requirements: []
|
94
|
-
rubyforge_project:
|
95
|
-
rubygems_version:
|
183
|
+
rubyforge_project:
|
184
|
+
rubygems_version: 2.7.6
|
96
185
|
signing_key:
|
97
|
-
specification_version:
|
186
|
+
specification_version: 4
|
98
187
|
summary: Simple testing API built on Rack
|
99
|
-
test_files:
|
100
|
-
- spec/fixtures/fake_app.rb
|
101
|
-
- spec/rack/test/cookie_spec.rb
|
102
|
-
- spec/rack/test/digest_auth_spec.rb
|
103
|
-
- spec/rack/test/multipart_spec.rb
|
104
|
-
- spec/rack/test/uploaded_file_spec.rb
|
105
|
-
- spec/rack/test/utils_spec.rb
|
106
|
-
- spec/rack/test_spec.rb
|
107
|
-
- spec/spec_helper.rb
|
108
|
-
- spec/support/matchers/body.rb
|
109
|
-
- spec/support/matchers/challenge.rb
|
188
|
+
test_files: []
|