/
authenticated_data_store_spec.rb
114 lines (101 loc) · 3.68 KB
/
authenticated_data_store_spec.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
# encoding: utf-8
require 'spec_helper'
describe "authenticated data store" do
before(:each) do
@env = env_with_params
@env['rack.session'] = {
"warden.user.foo.key" => "foo user",
"warden.user.default.key" => "default user",
:foo => "bar"
}
end
it "should store data for the default scope" do
app = lambda do |e|
e['warden'].authenticate(:pass)
e['warden'].authenticate(:pass, :scope => :foo)
e['warden'].should be_authenticated
e['warden'].should be_authenticated(:foo)
# Store the data for :default
e['warden'].session[:key] = "value"
valid_response
end
setup_rack(app).call(@env)
@env['rack.session']['warden.user.default.session'].should eq({:key => "value"})
@env['rack.session']['warden.user.foo.session'].should be_nil
end
it "should store data for the foo user" do
app = lambda do |e|
e['warden'].session(:foo)[:key] = "value"
valid_response
end
setup_rack(app).call(@env)
@env['rack.session']['warden.user.foo.session'].should eq({:key => "value"})
end
it "should store the data seperately" do
app = lambda do |e|
e['warden'].session[:key] = "value"
e['warden'].session(:foo)[:key] = "another value"
valid_response
end
setup_rack(app).call(@env)
@env['rack.session']['warden.user.default.session'].should eq({:key => "value"})
@env['rack.session']['warden.user.foo.session' ].should eq({:key => "another value"})
end
it "should clear the foo scoped data when foo logs out" do
app = lambda do |e|
e['warden'].session[:key] = "value"
e['warden'].session(:foo)[:key] = "another value"
e['warden'].logout(:foo)
valid_response
end
setup_rack(app).call(@env)
@env['rack.session']['warden.user.default.session'].should eq({:key => "value"})
@env['rack.session']['warden.user.foo.session' ].should be_nil
end
it "should clear out the default data when :default logs out" do
app = lambda do |e|
e['warden'].session[:key] = "value"
e['warden'].session(:foo)[:key] = "another value"
e['warden'].logout(:default)
valid_response
end
setup_rack(app).call(@env)
@env['rack.session']['warden.user.default.session'].should be_nil
@env['rack.session']['warden.user.foo.session' ].should eq({:key => "another value"})
end
it "should clear out all data when a general logout is performed" do
app = lambda do |e|
e['warden'].session[:key] = "value"
e['warden'].session(:foo)[:key] = "another value"
e['warden'].logout
valid_response
end
setup_rack(app).call(@env)
@env['rack.session']['warden.user.default.session'].should be_nil
@env['rack.session']['warden.user.foo.session' ].should be_nil
end
it "should logout multuiple personas at once" do
@env['rack.session']['warden.user.bar.key'] = "bar user"
app = lambda do |e|
e['warden'].session[:key] = "value"
e['warden'].session(:foo)[:key] = "another value"
e['warden'].session(:bar)[:key] = "yet another"
e['warden'].logout(:bar, :default)
valid_response
end
setup_rack(app).call(@env)
@env['rack.session']['warden.user.default.session'].should be_nil
@env['rack.session']['warden.user.foo.session' ].should eq({:key => "another value"})
@env['rack.session']['warden.user.bar.session' ].should be_nil
end
it "should not store data for a user who is not logged in" do
@env['rack.session']
app = lambda do |e|
e['warden'].session(:not_here)[:key] = "value"
valid_response
end
lambda do
setup_rack(app).call(@env)
end.should raise_error(Warden::NotAuthenticated)
end
end