rack-test 0.6.3 → 2.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.
@@ -1,66 +0,0 @@
1
- module Rack
2
-
3
- class MockSession # :nodoc:
4
- attr_writer :cookie_jar
5
- attr_reader :default_host
6
-
7
- def initialize(app, default_host = Rack::Test::DEFAULT_HOST)
8
- @app = app
9
- @after_request = []
10
- @default_host = default_host
11
- @last_request = nil
12
- @last_response = nil
13
- end
14
-
15
- def after_request(&block)
16
- @after_request << block
17
- end
18
-
19
- def clear_cookies
20
- @cookie_jar = Rack::Test::CookieJar.new([], @default_host)
21
- end
22
-
23
- def set_cookie(cookie, uri = nil)
24
- cookie_jar.merge(cookie, uri)
25
- end
26
-
27
- def request(uri, env)
28
- env["HTTP_COOKIE"] ||= cookie_jar.for(uri)
29
- @last_request = Rack::Request.new(env)
30
- status, headers, body = @app.call(@last_request.env)
31
-
32
- @last_response = MockResponse.new(status, headers, body, env["rack.errors"].flush)
33
- body.close if body.respond_to?(:close)
34
-
35
- cookie_jar.merge(last_response.headers["Set-Cookie"], uri)
36
-
37
- @after_request.each { |hook| hook.call }
38
-
39
- if @last_response.respond_to?(:finish)
40
- @last_response.finish
41
- else
42
- @last_response
43
- end
44
- end
45
-
46
- # Return the last request issued in the session. Raises an error if no
47
- # requests have been sent yet.
48
- def last_request
49
- raise Rack::Test::Error.new("No request yet. Request a page first.") unless @last_request
50
- @last_request
51
- end
52
-
53
- # Return the last response received in the session. Raises an error if
54
- # no requests have been sent yet.
55
- def last_response
56
- raise Rack::Test::Error.new("No response yet. Request a page first.") unless @last_response
57
- @last_response
58
- end
59
-
60
- def cookie_jar
61
- @cookie_jar ||= Rack::Test::CookieJar.new([], @default_host)
62
- end
63
-
64
- end
65
-
66
- end
@@ -1,29 +0,0 @@
1
- module Rack
2
- module Test
3
-
4
- class MockDigestRequest # :nodoc:
5
-
6
- def initialize(params)
7
- @params = params
8
- end
9
-
10
- def method_missing(sym)
11
- if @params.has_key? k = sym.to_s
12
- return @params[k]
13
- end
14
-
15
- super
16
- end
17
-
18
- def method
19
- @params['method']
20
- end
21
-
22
- def response(password)
23
- Rack::Auth::Digest::MD5.new(nil).send :digest, self, password
24
- end
25
-
26
- end
27
-
28
- end
29
- end
data/rack-test.gemspec DELETED
@@ -1,77 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
-
3
- Gem::Specification.new do |s|
4
- s.name = "rack-test"
5
- s.version = "0.6.3"
6
-
7
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
- s.authors = ["Bryan Helmkamp"]
9
- s.date = "2015-01-09"
10
- s.description = "Rack::Test is a small, simple testing API for Rack apps. It can be used on its\nown or as a reusable starting point for Web frameworks and testing libraries\nto build on. Most of its initial functionality is an extraction of Merb 1.0's\nrequest helpers feature."
11
- s.email = "bryan@brynary.com"
12
- s.extra_rdoc_files = [
13
- "README.rdoc",
14
- "MIT-LICENSE.txt"
15
- ]
16
- s.files = [
17
- ".document",
18
- ".gitignore",
19
- "Gemfile",
20
- "Gemfile.lock",
21
- "History.txt",
22
- "MIT-LICENSE.txt",
23
- "README.rdoc",
24
- "Rakefile",
25
- "Thorfile",
26
- "lib/rack/mock_session.rb",
27
- "lib/rack/test.rb",
28
- "lib/rack/test/cookie_jar.rb",
29
- "lib/rack/test/methods.rb",
30
- "lib/rack/test/mock_digest_request.rb",
31
- "lib/rack/test/uploaded_file.rb",
32
- "lib/rack/test/utils.rb",
33
- "rack-test.gemspec",
34
- "spec/fixtures/bar.txt",
35
- "spec/fixtures/config.ru",
36
- "spec/fixtures/fake_app.rb",
37
- "spec/fixtures/foo.txt",
38
- "spec/rack/test/cookie_spec.rb",
39
- "spec/rack/test/digest_auth_spec.rb",
40
- "spec/rack/test/multipart_spec.rb",
41
- "spec/rack/test/uploaded_file_spec.rb",
42
- "spec/rack/test/utils_spec.rb",
43
- "spec/rack/test_spec.rb",
44
- "spec/spec_helper.rb",
45
- "spec/support/matchers/body.rb",
46
- "spec/support/matchers/challenge.rb"
47
- ]
48
- s.homepage = "http://github.com/brynary/rack-test"
49
- s.require_paths = ["lib"]
50
- s.rubyforge_project = "rack-test"
51
- s.rubygems_version = "1.8.23"
52
- s.summary = "Simple testing API built on Rack"
53
- s.test_files = [
54
- "spec/fixtures/fake_app.rb",
55
- "spec/rack/test/cookie_spec.rb",
56
- "spec/rack/test/digest_auth_spec.rb",
57
- "spec/rack/test/multipart_spec.rb",
58
- "spec/rack/test/uploaded_file_spec.rb",
59
- "spec/rack/test/utils_spec.rb",
60
- "spec/rack/test_spec.rb",
61
- "spec/spec_helper.rb",
62
- "spec/support/matchers/body.rb",
63
- "spec/support/matchers/challenge.rb"
64
- ]
65
-
66
- if s.respond_to? :specification_version then
67
- s.specification_version = 3
68
-
69
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
70
- s.add_runtime_dependency(%q<rack>, [">= 1.0"])
71
- else
72
- s.add_dependency(%q<rack>, [">= 1.0"])
73
- end
74
- else
75
- s.add_dependency(%q<rack>, [">= 1.0"])
76
- end
77
- end
@@ -1 +0,0 @@
1
- baz
@@ -1,3 +0,0 @@
1
- require "fake_app"
2
-
3
- run Rack::Test::FakeApp
@@ -1,143 +0,0 @@
1
- require "rubygems"
2
- require "sinatra/base"
3
-
4
- module Rack
5
- module Test
6
-
7
- class FakeApp < Sinatra::Base
8
- head "/" do
9
- "meh"
10
- end
11
-
12
- options "/" do
13
- [200, {}, ""]
14
- end
15
-
16
- get "/" do
17
- "Hello, GET: #{params.inspect}"
18
- end
19
-
20
- get "/redirect" do
21
- redirect "/redirected"
22
- end
23
-
24
- get "/redirected" do
25
- "You've been redirected"
26
- end
27
-
28
- get "/void" do
29
- [200, {}, ""]
30
- end
31
-
32
- get "/cookies/show" do
33
- request.cookies.inspect
34
- end
35
-
36
- get "/COOKIES/show" do
37
- request.cookies.inspect
38
- end
39
-
40
- get "/not-cookies/show" do
41
- request.cookies.inspect
42
- end
43
-
44
- get "/cookies/set-secure" do
45
- raise if params["value"].nil?
46
-
47
- response.set_cookie("secure-cookie", :value => params["value"], :secure => true)
48
- "Set"
49
- end
50
-
51
- get "/cookies/set-simple" do
52
- raise if params["value"].nil?
53
-
54
- response.set_cookie "simple", params["value"]
55
- "Set"
56
- end
57
-
58
- post "/cookies/default-path" do
59
- raise if params["value"].nil?
60
-
61
- response.set_cookie "simple", params["value"]
62
- "Set"
63
- end
64
-
65
- get "/cookies/default-path" do
66
- response.cookies.inspect
67
- end
68
-
69
- get "/cookies/delete" do
70
- response.delete_cookie "value"
71
- end
72
-
73
- get "/cookies/count" do
74
- old_value = request.cookies["count"].to_i || 0
75
- new_value = (old_value + 1).to_s
76
-
77
- response.set_cookie("count", :value => new_value)
78
- new_value
79
- end
80
-
81
- get "/cookies/set" do
82
- raise if params["value"].nil?
83
-
84
- response.set_cookie("value", {
85
- :value => params["value"],
86
- :path => "/cookies",
87
- :expires => Time.now + 10
88
- })
89
- "Set"
90
- end
91
-
92
- get "/cookies/domain" do
93
- old_value = request.cookies["count"].to_i || 0
94
- new_value = (old_value + 1).to_s
95
-
96
- response.set_cookie("count", :value => new_value, :domain => "localhost.com")
97
- new_value
98
- end
99
-
100
- get "/cookies/subdomain" do
101
- old_value = request.cookies["count"].to_i || 0
102
- new_value = (old_value + 1).to_s
103
-
104
- response.set_cookie("count", :value => new_value, :domain => ".example.org")
105
- new_value
106
- end
107
-
108
- get "/cookies/set-uppercase" do
109
- raise if params["value"].nil?
110
-
111
- response.set_cookie("VALUE", {
112
- :value => params["value"],
113
- :path => "/cookies",
114
- :expires => Time.now + 10
115
- })
116
- "Set"
117
- end
118
-
119
- get "/cookies/set-multiple" do
120
- response.set_cookie("key1", :value => "value1")
121
- response.set_cookie("key2", :value => "value2")
122
- "Set"
123
- end
124
-
125
- post "/" do
126
- "Hello, POST: #{params.inspect}"
127
- end
128
-
129
- put "/" do
130
- "Hello, PUT: #{params.inspect}"
131
- end
132
-
133
- patch "/" do
134
- "Hello, PUT: #{params.inspect}"
135
- end
136
-
137
- delete "/" do
138
- "Hello, DELETE: #{params.inspect}"
139
- end
140
- end
141
-
142
- end
143
- end
@@ -1 +0,0 @@
1
- bar
@@ -1,219 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Rack::Test::Session do
4
-
5
- context "cookies" do
6
- it "keeps a cookie jar" do
7
- get "/cookies/show"
8
- check last_request.cookies.should == {}
9
-
10
- get "/cookies/set", "value" => "1"
11
- get "/cookies/show"
12
- last_request.cookies.should == { "value" => "1" }
13
- end
14
-
15
- it "doesn't send expired cookies" do
16
- get "/cookies/set", "value" => "1"
17
- now = Time.now
18
- Time.stub!(:now => now + 60)
19
- get "/cookies/show"
20
- last_request.cookies.should == {}
21
- end
22
-
23
- it "cookie path defaults to the uri of the document that was requested" do
24
- pending "See issue rack-test github issue #50" do
25
- post "/cookies/default-path", "value" => "cookie"
26
- get "/cookies/default-path"
27
- check last_request.cookies.should == { "simple"=>"cookie" }
28
- get "/cookies/show"
29
- check last_request.cookies.should == { }
30
- end
31
- end
32
-
33
- it "escapes cookie values" do
34
- jar = Rack::Test::CookieJar.new
35
- jar["value"] = "foo;abc"
36
- jar["value"].should == "foo;abc"
37
- end
38
-
39
- it "deletes cookies directly from the CookieJar" do
40
- jar = Rack::Test::CookieJar.new
41
- jar["abcd"] = "1234"
42
- jar["abcd"].should == "1234"
43
- jar.delete("abcd")
44
- jar["abcd"].should == nil
45
- end
46
-
47
- it "doesn't send cookies with the wrong domain" do
48
- get "http://www.example.com/cookies/set", "value" => "1"
49
- get "http://www.other.example/cookies/show"
50
- last_request.cookies.should == {}
51
- end
52
-
53
- it "doesn't send cookies with the wrong path" do
54
- get "/cookies/set", "value" => "1"
55
- get "/not-cookies/show"
56
- last_request.cookies.should == {}
57
- end
58
-
59
- it "persists cookies across requests that don't return any cookie headers" do
60
- get "/cookies/set", "value" => "1"
61
- get "/void"
62
- get "/cookies/show"
63
- last_request.cookies.should == { "value" => "1" }
64
- end
65
-
66
- it "deletes cookies" do
67
- get "/cookies/set", "value" => "1"
68
- get "/cookies/delete"
69
- get "/cookies/show"
70
- last_request.cookies.should == { }
71
- end
72
-
73
- it "respects cookie domains when no domain is explicitly set" do
74
- pending "FIXME: www.example.org should not get the first cookie" do
75
- request("http://example.org/cookies/count").should have_body("1")
76
- request("http://www.example.org/cookies/count").should have_body("1")
77
- request("http://example.org/cookies/count").should have_body("2")
78
- request("http://www.example.org/cookies/count").should have_body("2")
79
- end
80
- end
81
-
82
- it "treats domains case insensitively" do
83
- get "http://example.com/cookies/set", "value" => "1"
84
- get "http://EXAMPLE.COM/cookies/show"
85
- last_request.cookies.should == { "value" => "1" }
86
- end
87
-
88
- it "treats paths case sensitively" do
89
- get "/cookies/set", "value" => "1"
90
- get "/COOKIES/show"
91
- last_request.cookies.should == {}
92
- end
93
-
94
- it "prefers more specific cookies" do
95
- get "http://example.com/cookies/set", "value" => "domain"
96
- get "http://sub.example.com/cookies/set", "value" => "sub"
97
-
98
- get "http://sub.example.com/cookies/show"
99
- check last_request.cookies.should == { "value" => "sub" }
100
-
101
- get "http://example.com/cookies/show"
102
- last_request.cookies.should == { "value" => "domain" }
103
- end
104
-
105
- it "treats cookie names case insensitively" do
106
- get "/cookies/set", "value" => "lowercase"
107
- get "/cookies/set-uppercase", "value" => "UPPERCASE"
108
- get "/cookies/show"
109
- last_request.cookies.should == { "VALUE" => "UPPERCASE" }
110
- end
111
-
112
- it "defaults the domain to the request domain" do
113
- get "http://example.com/cookies/set-simple", "value" => "cookie"
114
- get "http://example.com/cookies/show"
115
- check last_request.cookies.should == { "simple" => "cookie" }
116
-
117
- get "http://other.example/cookies/show"
118
- last_request.cookies.should == {}
119
- end
120
-
121
- it "defaults the domain to the request path up to the last slash" do
122
- get "/cookies/set-simple", "value" => "1"
123
- get "/not-cookies/show"
124
- last_request.cookies.should == {}
125
- end
126
-
127
- it "supports secure cookies" do
128
- get "https://example.com/cookies/set-secure", "value" => "set"
129
- get "http://example.com/cookies/show"
130
- check last_request.cookies.should == {}
131
-
132
- get "https://example.com/cookies/show"
133
- last_request.cookies.should == { "secure-cookie" => "set" }
134
- rack_mock_session.cookie_jar['secure-cookie'].should == 'set'
135
- end
136
-
137
- it "keeps separate cookie jars for different domains" do
138
- get "http://example.com/cookies/set", "value" => "example"
139
- get "http://example.com/cookies/show"
140
- check last_request.cookies.should == { "value" => "example" }
141
-
142
- get "http://other.example/cookies/set", "value" => "other"
143
- get "http://other.example/cookies/show"
144
- check last_request.cookies.should == { "value" => "other" }
145
-
146
- get "http://example.com/cookies/show"
147
- last_request.cookies.should == { "value" => "example" }
148
- end
149
-
150
- it "keeps one cookie jar for domain and its subdomains" do
151
- get "http://example.org/cookies/subdomain"
152
- get "http://example.org/cookies/subdomain"
153
- last_request.cookies.should == { "count" => "1" }
154
-
155
- get "http://foo.example.org/cookies/subdomain"
156
- last_request.cookies.should == { "count" => "2" }
157
- end
158
-
159
- it "allows cookies to be cleared" do
160
- get "/cookies/set", "value" => "1"
161
- clear_cookies
162
- get "/cookies/show"
163
- last_request.cookies.should == {}
164
- end
165
-
166
- it "allow cookies to be set" do
167
- set_cookie "value=10"
168
- get "/cookies/show"
169
- last_request.cookies.should == { "value" => "10" }
170
- end
171
-
172
- it "allows an array of cookies to be set" do
173
- set_cookie ["value=10", "foo=bar"]
174
- get "/cookies/show"
175
- last_request.cookies.should == { "value" => "10", "foo" => "bar" }
176
- end
177
-
178
- it "skips emtpy string cookies" do
179
- set_cookie "value=10\n\nfoo=bar"
180
- get "/cookies/show"
181
- last_request.cookies.should == { "value" => "10", "foo" => "bar" }
182
- end
183
-
184
- it "parses multiple cookies properly" do
185
- get "/cookies/set-multiple"
186
- get "/cookies/show"
187
- last_request.cookies.should == { "key1" => "value1", "key2" => "value2" }
188
- end
189
-
190
- it "supports multiple sessions" do
191
- with_session(:first) do
192
- get "/cookies/set", "value" => "1"
193
- get "/cookies/show"
194
- last_request.cookies.should == { "value" => "1" }
195
- end
196
-
197
- with_session(:second) do
198
- get "/cookies/show"
199
- last_request.cookies.should == { }
200
- end
201
- end
202
-
203
- it "uses :default as the default session name" do
204
- get "/cookies/set", "value" => "1"
205
- get "/cookies/show"
206
- check last_request.cookies.should == { "value" => "1" }
207
-
208
- with_session(:default) do
209
- get "/cookies/show"
210
- last_request.cookies.should == { "value" => "1" }
211
- end
212
- end
213
-
214
- it "accepts explicitly provided cookies" do
215
- request "/cookies/show", :cookie => "value=1"
216
- last_request.cookies.should == { "value" => "1" }
217
- end
218
- end
219
- end
@@ -1,46 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Rack::Test::Session do
4
- context "HTTP Digest authentication" do
5
-
6
- def app
7
- app = Rack::Auth::Digest::MD5.new(Rack::Test::FakeApp.new) do |username|
8
- { 'alice' => 'correct-password' }[username]
9
- end
10
- app.realm = 'WallysWorld'
11
- app.opaque = 'this-should-be-secret'
12
- app
13
- end
14
-
15
- it 'incorrectly authenticates GETs' do
16
- digest_authorize 'foo', 'bar'
17
- get '/'
18
- last_response.should be_challenge
19
- end
20
-
21
- it "correctly authenticates GETs" do
22
- digest_authorize "alice", "correct-password"
23
- response = get "/"
24
- response.should be_ok
25
- end
26
-
27
- it "correctly authenticates GETs with params" do
28
- digest_authorize "alice", "correct-password"
29
- response = get "/", "foo" => "bar"
30
- response.should be_ok
31
- end
32
-
33
- it "correctly authenticates POSTs" do
34
- digest_authorize "alice", "correct-password"
35
- response = post "/"
36
- response.should be_ok
37
- end
38
-
39
- it "returns a re-challenge if authenticating incorrectly" do
40
- digest_authorize "alice", "incorrect-password"
41
- response = get "/"
42
- response.should be_challenge
43
- end
44
-
45
- end
46
- end