warden 1.2.7 → 1.2.9
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 +5 -5
- data/.github/workflows/ruby.yml +27 -0
- data/.gitignore +6 -0
- data/.rspec +3 -0
- data/{History.rdoc → CHANGELOG.md} +74 -39
- data/Gemfile +2 -2
- data/LICENSE +2 -1
- data/README.md +18 -0
- data/Rakefile +3 -8
- data/lib/warden/config.rb +1 -1
- data/lib/warden/errors.rb +2 -2
- data/lib/warden/hooks.rb +1 -1
- data/lib/warden/manager.rb +2 -2
- data/lib/warden/mixins/common.rb +1 -1
- data/lib/warden/proxy.rb +24 -5
- data/lib/warden/session_serializer.rb +1 -1
- data/lib/warden/strategies/base.rb +2 -1
- data/lib/warden/test/helpers.rb +2 -2
- data/lib/warden/test/mock.rb +5 -5
- data/lib/warden/test/warden_helpers.rb +1 -1
- data/lib/warden/version.rb +2 -2
- data/lib/warden.rb +1 -1
- data/warden.gemspec +18 -18
- metadata +18 -36
- data/README.textile +0 -9
- data/spec/helpers/request_helper.rb +0 -52
- data/spec/helpers/strategies/fail_with_user.rb +0 -11
- data/spec/helpers/strategies/failz.rb +0 -9
- data/spec/helpers/strategies/invalid.rb +0 -9
- data/spec/helpers/strategies/pass.rb +0 -9
- data/spec/helpers/strategies/pass_with_message.rb +0 -9
- data/spec/helpers/strategies/password.rb +0 -14
- data/spec/helpers/strategies/single.rb +0 -13
- data/spec/spec_helper.rb +0 -26
- data/spec/warden/authenticated_data_store_spec.rb +0 -115
- data/spec/warden/config_spec.rb +0 -49
- data/spec/warden/errors_spec.rb +0 -48
- data/spec/warden/hooks_spec.rb +0 -374
- data/spec/warden/manager_spec.rb +0 -341
- data/spec/warden/proxy_spec.rb +0 -1051
- data/spec/warden/scoped_session_serializer.rb +0 -124
- data/spec/warden/session_serializer_spec.rb +0 -54
- data/spec/warden/strategies/base_spec.rb +0 -314
- data/spec/warden/strategies_spec.rb +0 -95
- data/spec/warden/test/helpers_spec.rb +0 -94
- data/spec/warden/test/mock_spec.rb +0 -16
- data/spec/warden/test/test_mode_spec.rb +0 -76
data/spec/warden/hooks_spec.rb
DELETED
@@ -1,374 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
# frozen_string_literal: true
|
3
|
-
require 'spec_helper'
|
4
|
-
|
5
|
-
describe "standard authentication hooks" do
|
6
|
-
|
7
|
-
before(:all) do
|
8
|
-
load_strategies
|
9
|
-
end
|
10
|
-
|
11
|
-
describe "after_set_user" do
|
12
|
-
before(:each) do
|
13
|
-
RAM = Warden::Manager unless defined?(RAM)
|
14
|
-
RAM._after_set_user.clear
|
15
|
-
end
|
16
|
-
|
17
|
-
after(:each) do
|
18
|
-
RAM._after_set_user.clear
|
19
|
-
end
|
20
|
-
|
21
|
-
it "should allow me to add an after_set_user hook" do
|
22
|
-
RAM.after_set_user do |user, auth, opts|
|
23
|
-
"boo"
|
24
|
-
end
|
25
|
-
expect(RAM._after_set_user.length).to eq(1)
|
26
|
-
end
|
27
|
-
|
28
|
-
it "should allow me to add multiple after_set_user hooks" do
|
29
|
-
RAM.after_set_user{|user, auth, opts| "foo"}
|
30
|
-
RAM.after_set_user{|u,a| "bar"}
|
31
|
-
expect(RAM._after_set_user.length).to eq(2)
|
32
|
-
end
|
33
|
-
|
34
|
-
it "should run each after_set_user hook after the user is set" do
|
35
|
-
RAM.after_set_user{|u,a,o| a.env['warden.spec.hook.foo'] = "run foo"}
|
36
|
-
RAM.after_set_user{|u,a,o| a.env['warden.spec.hook.bar'] = "run bar"}
|
37
|
-
RAM.after_set_user{|u,a,o| a.logout}
|
38
|
-
app = lambda do |e|
|
39
|
-
e['warden'].set_user("foo")
|
40
|
-
valid_response
|
41
|
-
end
|
42
|
-
env = env_with_params
|
43
|
-
setup_rack(app).call(env)
|
44
|
-
expect(env['warden'].user).to be_nil
|
45
|
-
expect(env['warden.spec.hook.foo']).to eq("run foo")
|
46
|
-
expect(env['warden.spec.hook.bar']).to eq("run bar")
|
47
|
-
end
|
48
|
-
|
49
|
-
it "should not run the event specified with except" do
|
50
|
-
RAM.after_set_user(:except => :set_user){|u,a,o| fail}
|
51
|
-
app = lambda do |e|
|
52
|
-
e['warden'].set_user("foo")
|
53
|
-
valid_response
|
54
|
-
end
|
55
|
-
env = env_with_params
|
56
|
-
setup_rack(app).call(env)
|
57
|
-
end
|
58
|
-
|
59
|
-
it "should only run the event specified with only" do
|
60
|
-
RAM.after_set_user(:only => :set_user){|u,a,o| fail}
|
61
|
-
app = lambda do |e|
|
62
|
-
e['warden'].authenticate(:pass)
|
63
|
-
valid_response
|
64
|
-
end
|
65
|
-
env = env_with_params
|
66
|
-
setup_rack(app).call(env)
|
67
|
-
end
|
68
|
-
|
69
|
-
it "should run filters in the given order" do
|
70
|
-
RAM.after_set_user{|u,a,o| a.env['warden.spec.order'] << 2}
|
71
|
-
RAM.after_set_user{|u,a,o| a.env['warden.spec.order'] << 3}
|
72
|
-
RAM.prepend_after_set_user{|u,a,o| a.env['warden.spec.order'] << 1}
|
73
|
-
app = lambda do |e|
|
74
|
-
e['warden.spec.order'] = []
|
75
|
-
e['warden'].set_user("foo")
|
76
|
-
valid_response
|
77
|
-
end
|
78
|
-
env = env_with_params
|
79
|
-
setup_rack(app).call(env)
|
80
|
-
expect(env['warden.spec.order']).to eq([1,2,3])
|
81
|
-
end
|
82
|
-
|
83
|
-
context "after_authentication" do
|
84
|
-
it "should be a wrapper to after_set_user behavior" do
|
85
|
-
RAM.after_authentication{|u,a,o| a.env['warden.spec.hook.baz'] = "run baz"}
|
86
|
-
RAM.after_authentication{|u,a,o| a.env['warden.spec.hook.paz'] = "run paz"}
|
87
|
-
RAM.after_authentication{|u,a,o| expect(o[:event]).to eq(:authentication) }
|
88
|
-
app = lambda do |e|
|
89
|
-
e['warden'].authenticate(:pass)
|
90
|
-
valid_response
|
91
|
-
end
|
92
|
-
env = env_with_params
|
93
|
-
setup_rack(app).call(env)
|
94
|
-
expect(env['warden.spec.hook.baz']).to eq('run baz')
|
95
|
-
expect(env['warden.spec.hook.paz']).to eq('run paz')
|
96
|
-
end
|
97
|
-
|
98
|
-
it "should not be invoked on default after_set_user scenario" do
|
99
|
-
RAM.after_authentication{|u,a,o| fail}
|
100
|
-
app = lambda do |e|
|
101
|
-
e['warden'].set_user("foo")
|
102
|
-
valid_response
|
103
|
-
end
|
104
|
-
env = env_with_params
|
105
|
-
setup_rack(app).call(env)
|
106
|
-
end
|
107
|
-
|
108
|
-
it "should run filters in the given order" do
|
109
|
-
RAM.after_authentication{|u,a,o| a.env['warden.spec.order'] << 2}
|
110
|
-
RAM.after_authentication{|u,a,o| a.env['warden.spec.order'] << 3}
|
111
|
-
RAM.prepend_after_authentication{|u,a,o| a.env['warden.spec.order'] << 1}
|
112
|
-
app = lambda do |e|
|
113
|
-
e['warden.spec.order'] = []
|
114
|
-
e['warden'].authenticate(:pass)
|
115
|
-
valid_response
|
116
|
-
end
|
117
|
-
env = env_with_params
|
118
|
-
setup_rack(app).call(env)
|
119
|
-
expect(env['warden.spec.order']).to eq([1,2,3])
|
120
|
-
end
|
121
|
-
|
122
|
-
it "should allow me to log out a user in an after_set_user block" do
|
123
|
-
RAM.after_set_user{|u,a,o| a.logout}
|
124
|
-
|
125
|
-
app = lambda do |e|
|
126
|
-
e['warden'].authenticate(:pass)
|
127
|
-
valid_response
|
128
|
-
end
|
129
|
-
env = env_with_params
|
130
|
-
setup_rack(app).call(env)
|
131
|
-
expect(env['warden']).not_to be_authenticated
|
132
|
-
end
|
133
|
-
end
|
134
|
-
|
135
|
-
context "after_fetch" do
|
136
|
-
it "should be a wrapper to after_set_user behavior" do
|
137
|
-
RAM.after_fetch{|u,a,o| a.env['warden.spec.hook.baz'] = "run baz"}
|
138
|
-
RAM.after_fetch{|u,a,o| a.env['warden.spec.hook.paz'] = "run paz"}
|
139
|
-
RAM.after_fetch{|u,a,o| expect(o[:event]).to eq(:fetch) }
|
140
|
-
env = env_with_params
|
141
|
-
setup_rack(lambda { |e| valid_response }).call(env)
|
142
|
-
env['rack.session']['warden.user.default.key'] = "Foo"
|
143
|
-
expect(env['warden'].user).to eq("Foo")
|
144
|
-
expect(env['warden.spec.hook.baz']).to eq('run baz')
|
145
|
-
expect(env['warden.spec.hook.paz']).to eq('run paz')
|
146
|
-
end
|
147
|
-
|
148
|
-
it "should not be invoked on default after_set_user scenario" do
|
149
|
-
RAM.after_fetch{|u,a,o| fail}
|
150
|
-
app = lambda do |e|
|
151
|
-
e['warden'].set_user("foo")
|
152
|
-
valid_response
|
153
|
-
end
|
154
|
-
env = env_with_params
|
155
|
-
setup_rack(app).call(env)
|
156
|
-
end
|
157
|
-
|
158
|
-
it "should not be invoked if fetched user is nil" do
|
159
|
-
RAM.after_fetch{|u,a,o| fail}
|
160
|
-
env = env_with_params
|
161
|
-
setup_rack(lambda { |e| valid_response }).call(env)
|
162
|
-
env['rack.session']['warden.user.default.key'] = nil
|
163
|
-
expect(env['warden'].user).to be_nil
|
164
|
-
end
|
165
|
-
|
166
|
-
it "should run filters in the given order" do
|
167
|
-
RAM.after_fetch{|u,a,o| a.env['warden.spec.order'] << 2}
|
168
|
-
RAM.after_fetch{|u,a,o| a.env['warden.spec.order'] << 3}
|
169
|
-
RAM.prepend_after_fetch{|u,a,o| a.env['warden.spec.order'] << 1}
|
170
|
-
app = lambda do |e|
|
171
|
-
e['warden.spec.order'] = []
|
172
|
-
e['rack.session']['warden.user.default.key'] = "Foo"
|
173
|
-
e['warden'].user
|
174
|
-
valid_response
|
175
|
-
end
|
176
|
-
env = env_with_params
|
177
|
-
setup_rack(app).call(env)
|
178
|
-
expect(env['warden.spec.order']).to eq([1,2,3])
|
179
|
-
end
|
180
|
-
end
|
181
|
-
end
|
182
|
-
|
183
|
-
|
184
|
-
describe "after_failed_fetch" do
|
185
|
-
before(:each) do
|
186
|
-
RAM = Warden::Manager unless defined?(RAM)
|
187
|
-
RAM._after_failed_fetch.clear
|
188
|
-
end
|
189
|
-
|
190
|
-
after(:each) do
|
191
|
-
RAM._after_failed_fetch.clear
|
192
|
-
end
|
193
|
-
|
194
|
-
it "should not be called when user is fetched" do
|
195
|
-
RAM.after_failed_fetch{|u,a,o| fail }
|
196
|
-
env = env_with_params
|
197
|
-
setup_rack(lambda { |e| valid_response }).call(env)
|
198
|
-
env['rack.session']['warden.user.default.key'] = "Foo"
|
199
|
-
expect(env['warden'].user).to eq("Foo")
|
200
|
-
end
|
201
|
-
|
202
|
-
it "should be called if fetched user is nil" do
|
203
|
-
calls = 0
|
204
|
-
RAM.after_failed_fetch{|u,a,o| calls += 1 }
|
205
|
-
env = env_with_params
|
206
|
-
setup_rack(lambda { |e| valid_response }).call(env)
|
207
|
-
expect(env['warden'].user).to be_nil
|
208
|
-
expect(calls).to eq(1)
|
209
|
-
end
|
210
|
-
end
|
211
|
-
|
212
|
-
describe "before_failure" do
|
213
|
-
before(:each) do
|
214
|
-
RAM = Warden::Manager unless defined?(RAM)
|
215
|
-
RAM._before_failure.clear
|
216
|
-
end
|
217
|
-
|
218
|
-
after(:each) do
|
219
|
-
RAM._before_failure.clear
|
220
|
-
end
|
221
|
-
|
222
|
-
it "should allow me to add a before_failure hook" do
|
223
|
-
RAM.before_failure{|env, opts| "foo"}
|
224
|
-
expect(RAM._before_failure.length).to eq(1)
|
225
|
-
end
|
226
|
-
|
227
|
-
it "should allow me to add multiple before_failure hooks" do
|
228
|
-
RAM.before_failure{|env, opts| "foo"}
|
229
|
-
RAM.before_failure{|env, opts| "bar"}
|
230
|
-
expect(RAM._before_failure.length).to eq(2)
|
231
|
-
end
|
232
|
-
|
233
|
-
it "should run each before_failure hooks before failing" do
|
234
|
-
RAM.before_failure{|e,o| e['warden.spec.before_failure.foo'] = "foo"}
|
235
|
-
RAM.before_failure{|e,o| e['warden.spec.before_failure.bar'] = "bar"}
|
236
|
-
app = lambda{|e| e['warden'].authenticate!(:failz); valid_response}
|
237
|
-
env = env_with_params
|
238
|
-
setup_rack(app).call(env)
|
239
|
-
expect(env['warden.spec.before_failure.foo']).to eq("foo")
|
240
|
-
expect(env['warden.spec.before_failure.bar']).to eq("bar")
|
241
|
-
end
|
242
|
-
|
243
|
-
it "should run filters in the given order" do
|
244
|
-
RAM.before_failure{|e,o| e['warden.spec.order'] << 2}
|
245
|
-
RAM.before_failure{|e,o| e['warden.spec.order'] << 3}
|
246
|
-
RAM.prepend_before_failure{|e,o| e['warden.spec.order'] << 1}
|
247
|
-
app = lambda do |e|
|
248
|
-
e['warden.spec.order'] = []
|
249
|
-
e['warden'].authenticate!(:failz)
|
250
|
-
valid_response
|
251
|
-
end
|
252
|
-
env = env_with_params
|
253
|
-
setup_rack(app).call(env)
|
254
|
-
expect(env['warden.spec.order']).to eq([1,2,3])
|
255
|
-
end
|
256
|
-
end
|
257
|
-
|
258
|
-
describe "before_logout" do
|
259
|
-
before(:each) do
|
260
|
-
RAM = Warden::Manager unless defined?(RAM)
|
261
|
-
RAM._before_logout.clear
|
262
|
-
end
|
263
|
-
|
264
|
-
after(:each) do
|
265
|
-
RAM._before_logout.clear
|
266
|
-
end
|
267
|
-
|
268
|
-
it "should allow me to add an before_logout hook" do
|
269
|
-
RAM.before_logout{|user, auth, scopes| "foo"}
|
270
|
-
expect(RAM._before_logout.length).to eq(1)
|
271
|
-
end
|
272
|
-
|
273
|
-
it "should allow me to add multiple after_authentication hooks" do
|
274
|
-
RAM.before_logout{|u,a,o| "bar"}
|
275
|
-
RAM.before_logout{|u,a,o| "baz"}
|
276
|
-
expect(RAM._before_logout.length).to eq(2)
|
277
|
-
end
|
278
|
-
|
279
|
-
it "should run each before_logout hook before logout is run" do
|
280
|
-
RAM.before_logout{|u,a,o| a.env['warden.spec.hook.lorem'] = "run lorem"}
|
281
|
-
RAM.before_logout{|u,a,o| a.env['warden.spec.hook.ipsum'] = "run ipsum"}
|
282
|
-
app = lambda{|e| e['warden'].authenticate(:pass); valid_response}
|
283
|
-
env = env_with_params
|
284
|
-
setup_rack(app).call(env)
|
285
|
-
env['warden'].logout
|
286
|
-
expect(env['warden.spec.hook.lorem']).to eq('run lorem')
|
287
|
-
expect(env['warden.spec.hook.ipsum']).to eq('run ipsum')
|
288
|
-
end
|
289
|
-
|
290
|
-
it "should run before_logout hook for a specified scope" do
|
291
|
-
RAM.before_logout(:scope => :scope1){|u,a,o| a.env["warden.spec.hook.a"] << :scope1 }
|
292
|
-
RAM.before_logout(:scope => [:scope2]){|u,a,o| a.env["warden.spec.hook.b"] << :scope2 }
|
293
|
-
|
294
|
-
app = lambda do |e|
|
295
|
-
e['warden'].authenticate(:pass, :scope => :scope1)
|
296
|
-
e['warden'].authenticate(:pass, :scope => :scope2)
|
297
|
-
valid_response
|
298
|
-
end
|
299
|
-
env = env_with_params
|
300
|
-
env["warden.spec.hook.a"] ||= []
|
301
|
-
env["warden.spec.hook.b"] ||= []
|
302
|
-
setup_rack(app).call(env)
|
303
|
-
|
304
|
-
env['warden'].logout(:scope1)
|
305
|
-
expect(env['warden.spec.hook.a']).to eq([:scope1])
|
306
|
-
expect(env['warden.spec.hook.b']).to eq([])
|
307
|
-
|
308
|
-
env['warden'].logout(:scope2)
|
309
|
-
expect(env['warden.spec.hook.a']).to eq([:scope1])
|
310
|
-
expect(env['warden.spec.hook.b']).to eq([:scope2])
|
311
|
-
end
|
312
|
-
|
313
|
-
it "should run filters in the given order" do
|
314
|
-
RAM.before_logout{|u,a,o| a.env['warden.spec.order'] << 2}
|
315
|
-
RAM.before_logout{|u,a,o| a.env['warden.spec.order'] << 3}
|
316
|
-
RAM.prepend_before_logout{|u,a,o| a.env['warden.spec.order'] << 1}
|
317
|
-
app = lambda do |e|
|
318
|
-
e['warden.spec.order'] = []
|
319
|
-
e['warden'].authenticate(:pass)
|
320
|
-
e['warden'].logout
|
321
|
-
valid_response
|
322
|
-
end
|
323
|
-
env = env_with_params
|
324
|
-
setup_rack(app).call(env)
|
325
|
-
expect(env['warden.spec.order']).to eq([1,2,3])
|
326
|
-
end
|
327
|
-
end
|
328
|
-
|
329
|
-
describe "on_request" do
|
330
|
-
before(:each) do
|
331
|
-
RAM = Warden::Manager unless defined?(RAM)
|
332
|
-
@old_on_request = RAM._on_request.dup
|
333
|
-
RAM._on_request.clear
|
334
|
-
end
|
335
|
-
|
336
|
-
after(:each) do
|
337
|
-
RAM._on_request.clear
|
338
|
-
RAM._on_request.replace(@old_on_request)
|
339
|
-
end
|
340
|
-
|
341
|
-
it "should allow me to add an on_request hook" do
|
342
|
-
RAM.on_request{|proxy| "foo"}
|
343
|
-
expect(RAM._on_request.length).to eq(1)
|
344
|
-
end
|
345
|
-
|
346
|
-
it "should allow me to add multiple on_request hooks" do
|
347
|
-
RAM.on_request{|proxy| "foo"}
|
348
|
-
RAM.on_request{|proxy| "bar"}
|
349
|
-
expect(RAM._on_request.length).to eq(2)
|
350
|
-
end
|
351
|
-
|
352
|
-
it "should run each on_request hooks when initializing" do
|
353
|
-
RAM.on_request{|proxy| proxy.env['warden.spec.on_request.foo'] = "foo"}
|
354
|
-
RAM.on_request{|proxy| proxy.env['warden.spec.on_request.bar'] = "bar"}
|
355
|
-
app = lambda{|e| valid_response}
|
356
|
-
env = env_with_params
|
357
|
-
setup_rack(app).call(env)
|
358
|
-
expect(env['warden.spec.on_request.foo']).to eq("foo")
|
359
|
-
expect(env['warden.spec.on_request.bar']).to eq("bar")
|
360
|
-
end
|
361
|
-
|
362
|
-
it "should run filters in the given order" do
|
363
|
-
RAM.on_request{|proxy| proxy.env['warden.spec.order'] << 2}
|
364
|
-
RAM.on_request{|proxy| proxy.env['warden.spec.order'] << 3}
|
365
|
-
RAM.prepend_on_request{|proxy| proxy.env['warden.spec.order'] << 1}
|
366
|
-
app = lambda do |e|
|
367
|
-
valid_response
|
368
|
-
end
|
369
|
-
env = Rack::MockRequest.env_for("/", "warden.spec.order" => [])
|
370
|
-
setup_rack(app).call(env)
|
371
|
-
expect(env['warden.spec.order']).to eq([1,2,3])
|
372
|
-
end
|
373
|
-
end
|
374
|
-
end
|