rack-bouncer 1.3.0 → 1.3.1

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.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rack-bouncer (1.2)
4
+ rack-bouncer (1.3.1)
5
5
 
6
6
  GEM
7
7
  remote: http://rubygems.org/
data/README.md CHANGED
@@ -41,7 +41,7 @@ You can specify a set of safe paths:
41
41
 
42
42
  ## contributing
43
43
 
44
- Pull requests are very welcome.
44
+ Pull requests are very welcome. You'd be doing me a favor if you could test cover your enhancement and ensure the test suite passes *before* initiating a pull request.
45
45
 
46
46
  ## acknowledgments
47
47
 
data/Rakefile CHANGED
@@ -4,7 +4,7 @@ require "rake/testtask"
4
4
  task :default => [:test]
5
5
 
6
6
  Rake::TestTask.new do |t|
7
- t.libs.push "lib"
7
+ t.libs += ["lib", "test"]
8
8
  t.test_files = FileList["test/**/*_test.rb"]
9
9
  t.verbose = true
10
10
  end
data/lib/rack/bouncer.rb CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Rack
4
4
  class Bouncer
5
- VERSION = "1.3.0"
5
+ VERSION = "1.3.1"
6
6
 
7
7
  DEFAULT_OPTIONS = {
8
8
  :safe_paths => ["/asset", "/images", "/stylesheets", "/javascripts", "/feedback"],
@@ -0,0 +1,52 @@
1
+ require "test_helper"
2
+
3
+ class Rack::Bouncer::AOLTest < MiniTest::Unit::TestCase
4
+ def test_expels_aol_6
5
+ request = create_request
6
+ response = request.get("/", "HTTP_USER_AGENT" => USER_AGENTS[:aol_6])
7
+ assert_equal 302, response.status
8
+ assert_equal response.location, "http://browsehappy.com/"
9
+ end
10
+
11
+ def test_expels_aol_7
12
+ request = create_request
13
+ response = request.get("/", "HTTP_USER_AGENT" => USER_AGENTS[:aol_7])
14
+ assert_equal 302, response.status
15
+ assert_equal response.location, "http://browsehappy.com/"
16
+ end
17
+
18
+ def test_expels_aol_8
19
+ request = create_request
20
+ response = request.get("/", "HTTP_USER_AGENT" => USER_AGENTS[:aol_8])
21
+ assert_equal 302, response.status
22
+ assert_equal response.location, "http://browsehappy.com/"
23
+ end
24
+
25
+ def test_expels_aol_9
26
+ request = create_request
27
+ response = request.get("/", "HTTP_USER_AGENT" => USER_AGENTS[:aol_9])
28
+ assert_equal 302, response.status
29
+ assert_equal response.location, "http://browsehappy.com/"
30
+ end
31
+
32
+ def test_expels_aol_9_1
33
+ request = create_request
34
+ response = request.get("/", "HTTP_USER_AGENT" => USER_AGENTS[:aol_9_1])
35
+ assert_equal 302, response.status
36
+ assert_equal response.location, "http://browsehappy.com/"
37
+ end
38
+
39
+ def test_expels_aol_9_5
40
+ request = create_request
41
+ response = request.get("/", "HTTP_USER_AGENT" => USER_AGENTS[:aol_9_5])
42
+ assert_equal 302, response.status
43
+ assert_equal response.location, "http://browsehappy.com/"
44
+ end
45
+
46
+ def test_expels_aol_9_6
47
+ request = create_request
48
+ response = request.get("/", "HTTP_USER_AGENT" => USER_AGENTS[:aol_9_6])
49
+ assert_equal 302, response.status
50
+ assert_equal response.location, "http://browsehappy.com/"
51
+ end
52
+ end
@@ -0,0 +1,10 @@
1
+ require "test_helper"
2
+
3
+ class Rack::Bouncer::ChromeTest < MiniTest::Unit::TestCase
4
+ def test_allows_chrome_16
5
+ request = create_request
6
+ response = request.get("/", "HTTP_USER_AGENT" => USER_AGENTS[:chrome_16])
7
+ assert_equal 200, response.status
8
+ assert_equal "Hi Internets!", response.body
9
+ end
10
+ end
@@ -0,0 +1,94 @@
1
+ require "test_helper"
2
+
3
+ class Rack::Bouncer::FirefoxTest < MiniTest::Unit::TestCase
4
+ def test_expels_firefox_3_6
5
+ request = create_request
6
+ response = request.get("/", "HTTP_USER_AGENT" => USER_AGENTS[:firefox_3_6])
7
+ assert_equal 302, response.status
8
+ assert_equal response.location, "http://browsehappy.com/"
9
+ end
10
+
11
+ def test_allows_firefox_3_6_when_minimum
12
+ request = create_request(:minimum_firefox => 3.6)
13
+ response = request.get("/", "HTTP_USER_AGENT" => USER_AGENTS[:firefox_3_6])
14
+ assert_equal 200, response.status
15
+ assert_equal "Hi Internets!", response.body
16
+ end
17
+
18
+ def test_expels_firefox_3_6_2
19
+ request = create_request
20
+ response = request.get("/", "HTTP_USER_AGENT" => USER_AGENTS[:firefox_3_6_2])
21
+ assert_equal 302, response.status
22
+ assert_equal response.location, "http://browsehappy.com/"
23
+ end
24
+
25
+ def test_expels_firefox_3_6_b5
26
+ request = create_request
27
+ response = request.get("/", "HTTP_USER_AGENT" => USER_AGENTS[:firefox_3_6_b5])
28
+ assert_equal 302, response.status
29
+ assert_equal response.location, "http://browsehappy.com/"
30
+ end
31
+
32
+ def test_expels_firefox_3_6_22
33
+ request = create_request
34
+ response = request.get("/", "HTTP_USER_AGENT" => USER_AGENTS[:firefox_3_6_22])
35
+ assert_equal 302, response.status
36
+ assert_equal response.location, "http://browsehappy.com/"
37
+ end
38
+
39
+ def test_expels_firefox_3_8
40
+ request = create_request
41
+ response = request.get("/", "HTTP_USER_AGENT" => USER_AGENTS[:firefox_3_8])
42
+ assert_equal 302, response.status
43
+ assert_equal response.location, "http://browsehappy.com/"
44
+ end
45
+
46
+ def test_allows_firefox_4
47
+ request = create_request
48
+ response = request.get("/", "HTTP_USER_AGENT" => USER_AGENTS[:firefox_4])
49
+ assert_equal 200, response.status
50
+ assert_equal "Hi Internets!", response.body
51
+ end
52
+
53
+ def test_allows_firefox_4_0_1
54
+ request = create_request
55
+ response = request.get("/", "HTTP_USER_AGENT" => USER_AGENTS[:firefox_4_0_1])
56
+ assert_equal 200, response.status
57
+ assert_equal "Hi Internets!", response.body
58
+ end
59
+
60
+ def test_allows_firefox_5
61
+ request = create_request
62
+ response = request.get("/", "HTTP_USER_AGENT" => USER_AGENTS[:firefox_5])
63
+ assert_equal 200, response.status
64
+ assert_equal "Hi Internets!", response.body
65
+ end
66
+
67
+ def test_allows_firefox_6
68
+ request = create_request
69
+ response = request.get("/", "HTTP_USER_AGENT" => USER_AGENTS[:firefox_6])
70
+ assert_equal 200, response.status
71
+ assert_equal "Hi Internets!", response.body
72
+ end
73
+
74
+ def test_allows_firefox_9
75
+ request = create_request
76
+ response = request.get("/", "HTTP_USER_AGENT" => USER_AGENTS[:firefox_9])
77
+ assert_equal 200, response.status
78
+ assert_equal "Hi Internets!", response.body
79
+ end
80
+
81
+ def test_allows_firefox_9_0_a2
82
+ request = create_request
83
+ response = request.get("/", "HTTP_USER_AGENT" => USER_AGENTS[:firefox_9_0_a2])
84
+ assert_equal 200, response.status
85
+ assert_equal "Hi Internets!", response.body
86
+ end
87
+
88
+ def test_allows_firefox_10_0_a4
89
+ request = create_request
90
+ response = request.get("/", "HTTP_USER_AGENT" => USER_AGENTS[:firefox_10_0_a4])
91
+ assert_equal 200, response.status
92
+ assert_equal "Hi Internets!", response.body
93
+ end
94
+ end
@@ -0,0 +1,73 @@
1
+ require "test_helper"
2
+
3
+ class Rack::Bouncer::IETest < MiniTest::Unit::TestCase
4
+ def test_allows_ie_if_no_version_available
5
+ request = create_request
6
+ response = request.get("/", "HTTP_USER_AGENT" => USER_AGENTS[:ie_no_version])
7
+ assert_equal 200, response.status
8
+ assert_equal "Hi Internets!", response.body
9
+ end
10
+
11
+ def test_expels_ie_6_and_redirects_to_default
12
+ request = create_request
13
+ response = request.get("/", "HTTP_USER_AGENT" => USER_AGENTS[:ie_6])
14
+ assert_equal 302, response.status
15
+ assert_equal response.location, "http://browsehappy.com/"
16
+ end
17
+
18
+ def test_expels_ie_6_and_redirects_to_internal_url
19
+ request = create_request(:redirect => "/foo")
20
+ response = request.get("/", "HTTP_USER_AGENT" => USER_AGENTS[:ie_6])
21
+ assert_equal 302, response.status
22
+ assert_equal response.location, "/foo"
23
+ end
24
+
25
+ def test_expels_ie_6_and_redirects_to_external_url
26
+ request = create_request(:redirect => "http://getfirefox.com")
27
+ response = request.get("/", "HTTP_USER_AGENT" => USER_AGENTS[:ie_6])
28
+ assert_equal 302, response.status
29
+ assert_equal response.location, "http://getfirefox.com"
30
+ end
31
+
32
+ def test_allows_ie_6_when_minimum
33
+ request = create_request(:minimum_ie => 6.0)
34
+ response = request.get("/", "HTTP_USER_AGENT" => USER_AGENTS[:ie_6])
35
+ assert_equal 200, response.status
36
+ assert_equal "Hi Internets!", response.body
37
+ end
38
+
39
+ def test_expels_ie_7
40
+ request = create_request
41
+ response = request.get("/", "HTTP_USER_AGENT" => USER_AGENTS[:ie_7])
42
+ assert_equal 302, response.status
43
+ assert_equal response.location, "http://browsehappy.com/"
44
+ end
45
+
46
+ def test_allows_ie_7_when_minimum
47
+ request = create_request(:minimum_ie => 7.0)
48
+ response = request.get("/", "HTTP_USER_AGENT" => USER_AGENTS[:ie_7])
49
+ assert_equal 200, response.status
50
+ assert_equal "Hi Internets!", response.body
51
+ end
52
+
53
+ def test_allows_ie_8
54
+ request = create_request
55
+ response = request.get("/", "HTTP_USER_AGENT" => USER_AGENTS[:ie_8])
56
+ assert_equal 200, response.status
57
+ assert_equal "Hi Internets!", response.body
58
+ end
59
+
60
+ def test_allows_ie_8_when_minimum
61
+ request = create_request(:minimum_ie => 8.0)
62
+ response = request.get("/", "HTTP_USER_AGENT" => USER_AGENTS[:ie_8])
63
+ assert_equal 200, response.status
64
+ assert_equal "Hi Internets!", response.body
65
+ end
66
+
67
+ def test_allows_ie_9
68
+ request = create_request
69
+ response = request.get("/", "HTTP_USER_AGENT" => USER_AGENTS[:ie_9])
70
+ assert_equal 200, response.status
71
+ assert_equal "Hi Internets!", response.body
72
+ end
73
+ end
@@ -0,0 +1,17 @@
1
+ require "test_helper"
2
+
3
+ class Rack::Bouncer::SafariTest < MiniTest::Unit::TestCase
4
+ def test_allows_safari_5_0
5
+ request = create_request
6
+ response = request.get("/", "HTTP_USER_AGENT" => USER_AGENTS[:safari_5_0])
7
+ assert_equal 200, response.status
8
+ assert_equal "Hi Internets!", response.body
9
+ end
10
+
11
+ def test_allows_safari_5_1
12
+ request = create_request
13
+ response = request.get("/", "HTTP_USER_AGENT" => USER_AGENTS[:safari_5_1])
14
+ assert_equal 200, response.status
15
+ assert_equal "Hi Internets!", response.body
16
+ end
17
+ end
@@ -1,24 +1,9 @@
1
1
  # encoding: UTF-8
2
- require "rubygems"
3
- require "minitest/autorun"
4
- require "rack/mock"
5
-
6
- require "rack-bouncer"
7
-
8
- class TestApp
9
- def call(env)
10
- [200, {}, "Hi Internets!"]
11
- end
12
- end
13
-
14
- def create_request(options = {})
15
- Rack::MockRequest.new(Rack::Bouncer.new(TestApp.new, options))
16
- end
17
-
18
- class Rack::Bouncer::Test < MiniTest::Unit::TestCase
2
+ require "test_helper"
19
3
 
4
+ class Rack::BouncerTest < MiniTest::Unit::TestCase
20
5
  def test_version
21
- assert_equal "1.3.0", Rack::Bouncer::VERSION
6
+ assert_equal "1.3.1", Rack::Bouncer::VERSION
22
7
  end
23
8
 
24
9
  def test_default_safe_paths
@@ -45,254 +30,9 @@ class Rack::Bouncer::Test < MiniTest::Unit::TestCase
45
30
  assert_equal "Hi Internets!", response.body
46
31
  end
47
32
 
48
- # Internet Explorer
49
- #################################################################################################
50
-
51
- def test_allows_if_not_ie
52
- request = create_request
53
- response = request.get("/", {"HTTP_USER_AGENT" => "Mozilla/5.0"})
54
- assert_equal "Hi Internets!", response.body
55
- end
56
-
57
- def test_allows_ie_if_no_version_available
58
- request = create_request
59
- response = request.get("/", {"HTTP_USER_AGENT" => "Mozilla/4.0 (compatible; MSIE l4me; Windows XP)"})
60
- assert_equal 200, response.status
61
- assert_equal "Hi Internets!", response.body
62
- end
63
-
64
- def test_expels_ie_6_and_redirects_to_default
65
- request = create_request
66
- response = request.get("/", {"HTTP_USER_AGENT" => "Mozilla/4.0 (MSIE 6.0; Windows NT 5.1)" })
67
- assert_equal 302, response.status
68
- assert_equal response.location, "http://browsehappy.com/"
69
- end
70
-
71
- def test_expels_ie_6_and_redirects_to_internal_url
72
- request = create_request(:redirect => "/foo")
73
- response = request.get("/", {"HTTP_USER_AGENT" => "Mozilla/4.0 (MSIE 6.0; Windows NT 5.1)" })
74
- assert_equal 302, response.status
75
- assert_equal response.location, "/foo"
76
- end
77
-
78
- def test_expels_ie_6_and_redirects_to_external_url
79
- request = create_request(:redirect => "http://getfirefox.com")
80
- response = request.get("/", {"HTTP_USER_AGENT" => "Mozilla/4.0 (MSIE 6.0; Windows NT 5.1)" })
81
- assert_equal 302, response.status
82
- assert_equal response.location, "http://getfirefox.com"
83
- end
84
-
85
- def test_allows_ie_6_when_minimum
86
- request = create_request(:minimum_ie => 6.0)
87
- response = request.get("/", {"HTTP_USER_AGENT" => "Mozilla/4.0 (MSIE 6.0; Windows NT 5.1)" })
88
- assert_equal 200, response.status
89
- assert_equal "Hi Internets!", response.body
90
- end
91
-
92
- def test_expels_ie_7
93
- request = create_request
94
- response = request.get("/", {"HTTP_USER_AGENT" => "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)" })
95
- assert_equal 302, response.status
96
- assert_equal response.location, "http://browsehappy.com/"
97
- end
98
-
99
- def test_allows_ie_7_when_minimum
100
- request = create_request(:minimum_ie => 7.0)
101
- response = request.get("/", {"HTTP_USER_AGENT" => "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)" })
102
- assert_equal 200, response.status
103
- assert_equal "Hi Internets!", response.body
104
- end
105
-
106
- def test_allows_ie_8
107
- request = create_request
108
- response = request.get("/", {"HTTP_USER_AGENT" => "User-Agent:Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)" })
109
- assert_equal 200, response.status
110
- assert_equal "Hi Internets!", response.body
111
- end
112
-
113
- def test_allows_ie_8_when_minimum
114
- request = create_request(:minimum_ie => 8.0)
115
- response = request.get("/", {"HTTP_USER_AGENT" => "User-Agent:Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)" })
116
- assert_equal 200, response.status
117
- assert_equal "Hi Internets!", response.body
118
- end
119
-
120
- def test_allows_ie_9
121
- request = create_request
122
- response = request.get("/", {"HTTP_USER_AGENT" => "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;" })
123
- assert_equal 200, response.status
124
- assert_equal "Hi Internets!", response.body
125
- end
126
-
127
- # AOL
128
- #################################################################################################
129
-
130
- def test_expels_aol_6
131
- request = create_request
132
- response = request.get("/", {"HTTP_USER_AGENT" => "Mozilla/4.0 (compatible; MSIE 5.5; AOL 6.0; Windows 98)" })
133
- assert_equal 302, response.status
134
- assert_equal response.location, "http://browsehappy.com/"
135
- end
136
-
137
- def test_expels_aol_7
138
- request = create_request
139
- response = request.get("/", {"HTTP_USER_AGENT" => "Mozilla/4.0 (compatible; MSIE 7.0; AOL 7.0; Windows NT 5.1)" })
140
- assert_equal 302, response.status
141
- assert_equal response.location, "http://browsehappy.com/"
142
- end
143
-
144
- def test_expels_aol_8
145
- request = create_request
146
- response = request.get("/", {"HTTP_USER_AGENT" => "Mozilla/4.0 (compatible; MSIE 7.0; AOL 8.0; Windows NT 5.1)" })
147
- assert_equal 302, response.status
148
- assert_equal response.location, "http://browsehappy.com/"
149
- end
150
-
151
- def test_expels_aol_9
152
- request = create_request
153
- response = request.get("/", {"HTTP_USER_AGENT" => "Mozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1)" })
154
- assert_equal 302, response.status
155
- assert_equal response.location, "http://browsehappy.com/"
156
- end
157
-
158
- def test_expels_aol_9_1
159
- request = create_request
160
- response = request.get("/", {"HTTP_USER_AGENT" => "Mozilla/4.0 (compatible; MSIE 7.0; AOL 9.1; AOLBuild 4334.5000; Windows NT 5.1; Trident/4.0)" })
161
- assert_equal 302, response.status
162
- assert_equal response.location, "http://browsehappy.com/"
163
- end
164
-
165
- def test_expels_aol_9_5
166
- request = create_request
167
- response = request.get("/", {"HTTP_USER_AGENT" => "Mozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.43; Windows NT 5.1; Trident/4.0)" })
168
- assert_equal 302, response.status
169
- assert_equal response.location, "http://browsehappy.com/"
170
- end
171
-
172
- def test_expels_aol_9_6
173
- request = create_request
174
- response = request.get("/", {"HTTP_USER_AGENT" => "Mozilla/4.0 (compatible; MSIE 8.0; AOL 9.6; AOLBuild 4340.5004; Windows NT 5.1; Trident/4.0)" })
175
- assert_equal 302, response.status
176
- assert_equal response.location, "http://browsehappy.com/"
177
- end
178
-
179
- # Firefox
180
- #################################################################################################
181
-
182
- def test_expels_firefox_3_6
183
- request = create_request
184
- response = request.get("/", {"HTTP_USER_AGENT" => "Mozilla/5.0(Windows; U; Windows NT 5.2; rv:1.9.2) Gecko/20100101 Firefox/3.6" })
185
- assert_equal 302, response.status
186
- assert_equal response.location, "http://browsehappy.com/"
187
- end
188
-
189
- def test_allows_firefox_3_6_when_minimum
190
- request = create_request(:minimum_firefox => 3.6)
191
- response = request.get("/", {"HTTP_USER_AGENT" => "Mozilla/5.0(Windows; U; Windows NT 5.2; rv:1.9.2) Gecko/20100101 Firefox/3.6" })
192
- assert_equal 200, response.status
193
- assert_equal "Hi Internets!", response.body
194
- end
195
-
196
- def test_expels_firefox_3_6_2
197
- request = create_request
198
- response = request.get("/", {"HTTP_USER_AGENT" => "Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2" })
199
- assert_equal 302, response.status
200
- assert_equal response.location, "http://browsehappy.com/"
201
- end
202
-
203
- def test_expels_firefox_3_6_b5
204
- request = create_request
205
- response = request.get("/", {"HTTP_USER_AGENT" => "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2b5) Gecko/20091204 Firefox/3.6b5" })
206
- assert_equal 302, response.status
207
- assert_equal response.location, "http://browsehappy.com/"
208
- end
209
-
210
- def test_expels_firefox_3_6_22
211
- request = create_request
212
- response = request.get("/", {"HTTP_USER_AGENT" => "Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.4; en-US; rv:1.9.2.22) Gecko/20110902 Firefox/3.6.22" })
213
- assert_equal 302, response.status
214
- assert_equal response.location, "http://browsehappy.com/"
215
- end
216
-
217
- def test_expels_firefox_3_8
218
- request = create_request
219
- response = request.get("/", {"HTTP_USER_AGENT" => "Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.2) Gecko/20121223 Ubuntu/9.25 (jaunty) Firefox/3.8" })
220
- assert_equal 302, response.status
221
- assert_equal response.location, "http://browsehappy.com/"
222
- end
223
-
224
- def test_allows_firefox_4
225
- request = create_request
226
- response = request.get("/", {"HTTP_USER_AGENT" => "Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0" })
227
- assert_equal 200, response.status
228
- assert_equal "Hi Internets!", response.body
229
- end
230
-
231
- def test_allows_firefox_4_0_1
232
- request = create_request
233
- response = request.get("/", {"HTTP_USER_AGENT" => "Mozilla/5.0 (X11; Linux i686; rv:2.0.1) Gecko/20110518 Firefox/4.0.1" })
234
- assert_equal 200, response.status
235
- assert_equal "Hi Internets!", response.body
236
- end
237
-
238
- def test_allows_firefox_5
33
+ def test_allows_if_mozilla_non_specific
239
34
  request = create_request
240
- response = request.get("/", {"HTTP_USER_AGENT" => "Mozilla/5.0 (Windows NT 5.1; U; rv:5.0) Gecko/20100101 Firefox/5.0" })
241
- assert_equal 200, response.status
242
- assert_equal "Hi Internets!", response.body
243
- end
244
-
245
- def test_allows_firefox_6
246
- request = create_request
247
- response = request.get("/", {"HTTP_USER_AGENT" => "Mozilla/5.0 (Windows NT 6.1; rv:6.0) Gecko/20110814 Firefox/6.0" })
248
- assert_equal 200, response.status
249
- assert_equal "Hi Internets!", response.body
250
- end
251
-
252
- def test_allows_firefox_9
253
- request = create_request
254
- response = request.get("/", {"HTTP_USER_AGENT" => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:9.0) Gecko/20100101 Firefox/9.0" })
255
- assert_equal 200, response.status
256
- assert_equal "Hi Internets!", response.body
257
- end
258
-
259
- def test_allows_firefox_9_0_a2
260
- request = create_request
261
- response = request.get("/", {"HTTP_USER_AGENT" => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:9.0a2) Gecko/20111101 Firefox/9.0a2" })
262
- assert_equal 200, response.status
263
- assert_equal "Hi Internets!", response.body
264
- end
265
-
266
- def test_allows_firefox_10_0_a4
267
- request = create_request
268
- response = request.get("/", {"HTTP_USER_AGENT" => "Mozilla/6.0 (Macintosh; I; Intel Mac OS X 11_7_9; de-LI; rv:1.9b4) Gecko/2012010317 Firefox/10.0a4" })
269
- assert_equal 200, response.status
270
- assert_equal "Hi Internets!", response.body
271
- end
272
-
273
- # Safari
274
- #################################################################################################
275
-
276
- def test_allows_safari_5_0
277
- request = create_request
278
- response = request.get("/", {"HTTP_USER_AGENT" => "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/5.0 Safari/533.16" })
279
- assert_equal 200, response.status
280
- assert_equal "Hi Internets!", response.body
281
- end
282
-
283
- def test_allows_safari_5_1
284
- request = create_request
285
- response = request.get("/", {"HTTP_USER_AGENT" => "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.52.7 (KHTML, like Gecko) Version/5.1 Safari/534.52.7" })
286
- assert_equal 200, response.status
287
- assert_equal "Hi Internets!", response.body
288
- end
289
-
290
- # Chrome
291
- #################################################################################################
292
-
293
- def test_allows_chrome_16
294
- request = create_request
295
- response = request.get("/", {"HTTP_USER_AGENT" => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.77 Safari/535.7" })
35
+ response = request.get("/", "HTTP_USER_AGENT" => USER_AGENTS[:mozilla_non_specific])
296
36
  assert_equal 200, response.status
297
37
  assert_equal "Hi Internets!", response.body
298
38
  end
@@ -302,51 +42,50 @@ class Rack::Bouncer::Test < MiniTest::Unit::TestCase
302
42
 
303
43
  def test_allows_redirect_path
304
44
  request = create_request(:redirect => "/browser")
305
- response = request.get("/browser", {"HTTP_USER_AGENT" => "Mozilla/4.0 (MSIE 6.0; Windows NT 5.1)" })
45
+ response = request.get("/browser", "HTTP_USER_AGENT" => USER_AGENTS[:ie_6])
306
46
  assert_equal 200, response.status
307
47
  assert_equal "Hi Internets!", response.body
308
48
  end
309
49
 
310
50
  def test_expels_non_redirect_path
311
51
  request = create_request(:redirect => "/browser")
312
- response = request.get("/wrong", {"HTTP_USER_AGENT" => "Mozilla/4.0 (MSIE 6.0; Windows NT 5.1)" })
52
+ response = request.get("/wrong", "HTTP_USER_AGENT" => USER_AGENTS[:ie_6])
313
53
  assert_equal 302, response.status
314
54
  assert_equal response.location, "/browser"
315
55
  end
316
56
 
317
57
  def test_allows_assets_path
318
58
  request = create_request
319
- response = request.get("/asset", {"HTTP_USER_AGENT" => "Mozilla/4.0 (MSIE 6.0; Windows NT 5.1)" })
59
+ response = request.get("/asset", "HTTP_USER_AGENT" => USER_AGENTS[:ie_6])
320
60
  assert_equal 200, response.status
321
61
  assert_equal "Hi Internets!", response.body
322
62
  end
323
63
 
324
64
  def test_allows_images_path
325
65
  request = create_request
326
- response = request.get("/images", {"HTTP_USER_AGENT" => "Mozilla/4.0 (MSIE 6.0; Windows NT 5.1)" })
66
+ response = request.get("/images", "HTTP_USER_AGENT" => USER_AGENTS[:ie_6])
327
67
  assert_equal 200, response.status
328
68
  assert_equal "Hi Internets!", response.body
329
69
  end
330
70
 
331
71
  def test_allows_stylesheets_path
332
72
  request = create_request
333
- response = request.get("/stylesheets", {"HTTP_USER_AGENT" => "Mozilla/4.0 (MSIE 6.0; Windows NT 5.1)" })
73
+ response = request.get("/stylesheets", "HTTP_USER_AGENT" => USER_AGENTS[:ie_6])
334
74
  assert_equal 200, response.status
335
75
  assert_equal "Hi Internets!", response.body
336
76
  end
337
77
 
338
78
  def test_allows_javascripts_path
339
79
  request = create_request
340
- response = request.get("/javascripts", {"HTTP_USER_AGENT" => "Mozilla/4.0 (MSIE 6.0; Windows NT 5.1)" })
80
+ response = request.get("/javascripts", "HTTP_USER_AGENT" => USER_AGENTS[:ie_6])
341
81
  assert_equal 200, response.status
342
82
  assert_equal "Hi Internets!", response.body
343
83
  end
344
84
 
345
85
  def test_allows_feedback_path
346
86
  request = create_request
347
- response = request.get("/feedback", {"HTTP_USER_AGENT" => "Mozilla/4.0 (MSIE 6.0; Windows NT 5.1)" })
87
+ response = request.get("/feedback", "HTTP_USER_AGENT" => USER_AGENTS[:ie_6])
348
88
  assert_equal 200, response.status
349
89
  assert_equal "Hi Internets!", response.body
350
90
  end
351
-
352
91
  end
@@ -0,0 +1,19 @@
1
+ # encoding: UTF-8
2
+ require "rubygems"
3
+ require "minitest/autorun"
4
+ require "rack/mock"
5
+ require "yaml"
6
+
7
+ require "rack-bouncer"
8
+
9
+ USER_AGENTS = YAML.load_file(File.expand_path("user_agents.yml", File.dirname(__FILE__)))
10
+
11
+ class TestApp
12
+ def call(env)
13
+ [200, {}, "Hi Internets!"]
14
+ end
15
+ end
16
+
17
+ def create_request(options = {})
18
+ Rack::MockRequest.new(Rack::Bouncer.new(TestApp.new, options))
19
+ end
@@ -0,0 +1,81 @@
1
+ # encoding: UTF-8
2
+
3
+ # AOL
4
+ ###################################################################################################
5
+
6
+ :aol_6:
7
+ Mozilla/4.0 (compatible; MSIE 5.5; AOL 6.0; Windows 98)
8
+ :aol_7:
9
+ Mozilla/4.0 (compatible; MSIE 7.0; AOL 7.0; Windows NT 5.1)
10
+ :aol_8:
11
+ Mozilla/4.0 (compatible; MSIE 7.0; AOL 8.0; Windows NT 5.1)
12
+ :aol_9:
13
+ Mozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1)
14
+ :aol_9_1:
15
+ Mozilla/4.0 (compatible; MSIE 7.0; AOL 9.1; AOLBuild 4334.5000; Windows NT 5.1; Trident/4.0)
16
+ :aol_9_5:
17
+ Mozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.43; Windows NT 5.1; Trident/4.0)
18
+ :aol_9_6:
19
+ Mozilla/4.0 (compatible; MSIE 8.0; AOL 9.6; AOLBuild 4340.5004; Windows NT 5.1; Trident/4.0)
20
+
21
+ # Chrome
22
+ ###################################################################################################
23
+
24
+ :chrome_16:
25
+ Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.77 Safari/535.7
26
+
27
+ # Firefox
28
+ ###################################################################################################
29
+
30
+ :firefox_3_6:
31
+ Mozilla/5.0(Windows; U; Windows NT 5.2; rv:1.9.2) Gecko/20100101 Firefox/3.6
32
+ :firefox_3_6_2:
33
+ Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2
34
+ :firefox_3_6_b5:
35
+ Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2b5) Gecko/20091204 Firefox/3.6b5
36
+ :firefox_3_6_22:
37
+ Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.4; en-US; rv:1.9.2.22) Gecko/20110902 Firefox/3.6.22
38
+ :firefox_3_8:
39
+ Mozilla/5.0 (X11; U; Linux i686; rv:1.9.0.2) Gecko/20121223 Ubuntu/9.25 (jaunty) Firefox/3.8
40
+ :firefox_4:
41
+ Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0
42
+ :firefox_4_0_1:
43
+ Mozilla/5.0 (X11; Linux i686; rv:2.0.1) Gecko/20110518 Firefox/4.0.1
44
+ :firefox_5:
45
+ Mozilla/5.0 (Windows NT 5.1; U; rv:5.0) Gecko/20100101 Firefox/5.0
46
+ :firefox_6:
47
+ Mozilla/5.0 (Windows NT 6.1; rv:6.0) Gecko/20110814 Firefox/6.0
48
+ :firefox_9:
49
+ Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:9.0) Gecko/20100101 Firefox/9.0
50
+ :firefox_9_0_a2:
51
+ Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:9.0a2) Gecko/20111101 Firefox/9.0a2
52
+ :firefox_10_0_a4:
53
+ Mozilla/6.0 (Macintosh; I; Intel Mac OS X 11_7_9; rv:1.9b4) Gecko/2012010317 Firefox/10.0a4
54
+
55
+ # Internet Explorer
56
+ ###################################################################################################
57
+
58
+ :ie_no_version:
59
+ Mozilla/4.0 (compatible; MSIE l4me; Windows XP)
60
+ :ie_6:
61
+ Mozilla/4.0 (MSIE 6.0; Windows NT 5.1)
62
+ :ie_7:
63
+ Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)
64
+ :ie_8:
65
+ Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)
66
+ :ie_9:
67
+ Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)
68
+
69
+ # Mozilla
70
+ ###################################################################################################
71
+
72
+ :mozilla_non_specific:
73
+ Mozilla/5.0
74
+
75
+ # Safari
76
+ ###################################################################################################
77
+
78
+ :safari_5_0:
79
+ Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/5.0 Safari/533.16
80
+ :safari_5_1:
81
+ Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.52.7 (KHTML, like Gecko) Version/5.1 Safari/534.52.7
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-bouncer
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 25
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 3
9
- - 0
10
- version: 1.3.0
9
+ - 1
10
+ version: 1.3.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Julio Cesar Ody
@@ -18,7 +18,7 @@ autorequire:
18
18
  bindir: bin
19
19
  cert_chain: []
20
20
 
21
- date: 2012-02-08 00:00:00 -08:00
21
+ date: 2012-02-09 00:00:00 -08:00
22
22
  default_executable:
23
23
  dependencies:
24
24
  - !ruby/object:Gem::Dependency
@@ -71,7 +71,14 @@ files:
71
71
  - lib/rack-bouncer.rb
72
72
  - lib/rack/bouncer.rb
73
73
  - rack-bouncer.gemspec
74
+ - test/lib/rack/bouncer/aol_test.rb
75
+ - test/lib/rack/bouncer/chrome_test.rb
76
+ - test/lib/rack/bouncer/firefox_test.rb
77
+ - test/lib/rack/bouncer/ie_test.rb
78
+ - test/lib/rack/bouncer/safari_test.rb
74
79
  - test/lib/rack/bouncer_test.rb
80
+ - test/test_helper.rb
81
+ - test/user_agents.yml
75
82
  has_rdoc: true
76
83
  homepage: https://github.com/ryansobol/rack-bouncer
77
84
  licenses: []