rack-bouncer 1.3.0 → 1.3.1

Sign up to get free protection for your applications and to get access to all the features.
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: []