sorcery 0.1.4 → 0.3.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.
- data/Gemfile +4 -2
- data/Gemfile.lock +16 -13
- data/README.rdoc +111 -78
- data/Rakefile +5 -0
- data/VERSION +1 -1
- data/lib/generators/sorcery_migration/sorcery_migration_generator.rb +24 -0
- data/lib/generators/sorcery_migration/templates/activity_logging.rb +17 -0
- data/lib/generators/sorcery_migration/templates/brute_force_protection.rb +11 -0
- data/lib/generators/sorcery_migration/templates/core.rb +16 -0
- data/lib/generators/sorcery_migration/templates/oauth.rb +14 -0
- data/lib/generators/sorcery_migration/templates/remember_me.rb +15 -0
- data/lib/generators/sorcery_migration/templates/reset_password.rb +13 -0
- data/lib/generators/sorcery_migration/templates/user_activation.rb +17 -0
- data/lib/sorcery/controller/adapters/sinatra.rb +97 -0
- data/lib/sorcery/controller/submodules/activity_logging.rb +20 -7
- data/lib/sorcery/controller/submodules/brute_force_protection.rb +9 -2
- data/lib/sorcery/controller/submodules/http_basic_auth.rb +18 -9
- data/lib/sorcery/controller/submodules/oauth/oauth1.rb +33 -0
- data/lib/sorcery/controller/submodules/oauth/oauth2.rb +24 -0
- data/lib/sorcery/controller/submodules/oauth/providers/facebook.rb +64 -0
- data/lib/sorcery/controller/submodules/oauth/providers/twitter.rb +61 -0
- data/lib/sorcery/controller/submodules/oauth.rb +95 -0
- data/lib/sorcery/controller/submodules/remember_me.rb +14 -5
- data/lib/sorcery/controller/submodules/session_timeout.rb +6 -1
- data/lib/sorcery/controller.rb +29 -17
- data/lib/sorcery/engine.rb +9 -2
- data/lib/sorcery/model/submodules/activity_logging.rb +13 -8
- data/lib/sorcery/model/submodules/brute_force_protection.rb +11 -8
- data/lib/sorcery/model/submodules/oauth.rb +53 -0
- data/lib/sorcery/model/submodules/remember_me.rb +5 -3
- data/lib/sorcery/model/submodules/reset_password.rb +16 -13
- data/lib/sorcery/model/submodules/user_activation.rb +38 -19
- data/lib/sorcery/model/temporary_token.rb +22 -0
- data/lib/sorcery/model.rb +10 -3
- data/lib/sorcery/sinatra.rb +14 -0
- data/lib/sorcery/test_helpers/rails.rb +57 -0
- data/lib/sorcery/test_helpers/sinatra.rb +131 -0
- data/lib/sorcery/test_helpers.rb +40 -0
- data/lib/sorcery.rb +20 -0
- data/sorcery.gemspec +144 -41
- data/spec/Gemfile +3 -2
- data/spec/Gemfile.lock +15 -2
- data/spec/rails3/app_root/.rspec +1 -0
- data/spec/rails3/{Gemfile → app_root/Gemfile} +4 -4
- data/spec/rails3/{Gemfile.lock → app_root/Gemfile.lock} +23 -3
- data/spec/rails3/app_root/app/controllers/application_controller.rb +42 -1
- data/spec/rails3/app_root/app/models/authentication.rb +3 -0
- data/spec/rails3/app_root/app/models/user.rb +4 -1
- data/spec/rails3/app_root/config/application.rb +1 -3
- data/spec/rails3/app_root/config/routes.rb +1 -10
- data/spec/rails3/app_root/db/migrate/activation/20101224223622_add_activation_to_users.rb +6 -4
- data/spec/rails3/app_root/db/migrate/core/20101224223620_create_users.rb +4 -4
- data/spec/rails3/app_root/db/migrate/oauth/20101224223628_create_authentications.rb +14 -0
- data/spec/rails3/{controller_activity_logging_spec.rb → app_root/spec/controller_activity_logging_spec.rb} +13 -13
- data/spec/rails3/{controller_brute_force_protection_spec.rb → app_root/spec/controller_brute_force_protection_spec.rb} +16 -6
- data/spec/rails3/{controller_http_basic_auth_spec.rb → app_root/spec/controller_http_basic_auth_spec.rb} +3 -3
- data/spec/rails3/app_root/spec/controller_oauth2_spec.rb +119 -0
- data/spec/rails3/app_root/spec/controller_oauth_spec.rb +122 -0
- data/spec/rails3/{controller_remember_me_spec.rb → app_root/spec/controller_remember_me_spec.rb} +4 -4
- data/spec/rails3/{controller_session_timeout_spec.rb → app_root/spec/controller_session_timeout_spec.rb} +6 -6
- data/spec/rails3/{controller_spec.rb → app_root/spec/controller_spec.rb} +20 -13
- data/spec/rails3/app_root/spec/spec_helper.orig.rb +27 -0
- data/spec/rails3/app_root/spec/spec_helper.rb +62 -0
- data/spec/rails3/{user_activation_spec.rb → app_root/spec/user_activation_spec.rb} +60 -20
- data/spec/rails3/{user_activity_logging_spec.rb → app_root/spec/user_activity_logging_spec.rb} +4 -4
- data/spec/rails3/{user_brute_force_protection_spec.rb → app_root/spec/user_brute_force_protection_spec.rb} +7 -7
- data/spec/rails3/app_root/spec/user_oauth_spec.rb +39 -0
- data/spec/rails3/{user_remember_me_spec.rb → app_root/spec/user_remember_me_spec.rb} +4 -4
- data/spec/rails3/{user_reset_password_spec.rb → app_root/spec/user_reset_password_spec.rb} +21 -41
- data/spec/rails3/app_root/spec/user_spec.rb +317 -0
- data/spec/sinatra/Gemfile +12 -0
- data/spec/sinatra/Gemfile.lock +134 -0
- data/spec/sinatra/Rakefile +10 -0
- data/spec/sinatra/authentication.rb +3 -0
- data/spec/sinatra/db/migrate/activation/20101224223622_add_activation_to_users.rb +17 -0
- data/spec/sinatra/db/migrate/activity_logging/20101224223624_add_activity_logging_to_users.rb +17 -0
- data/spec/sinatra/db/migrate/brute_force_protection/20101224223626_add_brute_force_protection_to_users.rb +11 -0
- data/spec/sinatra/db/migrate/core/20101224223620_create_users.rb +16 -0
- data/spec/sinatra/db/migrate/oauth/20101224223628_create_authentications.rb +14 -0
- data/spec/sinatra/db/migrate/remember_me/20101224223623_add_remember_me_token_to_users.rb +15 -0
- data/spec/sinatra/db/migrate/reset_password/20101224223622_add_reset_password_to_users.rb +13 -0
- data/spec/sinatra/filters.rb +21 -0
- data/spec/sinatra/myapp.rb +133 -0
- data/spec/sinatra/sorcery_mailer.rb +25 -0
- data/spec/sinatra/spec/controller_activity_logging_spec.rb +85 -0
- data/spec/sinatra/spec/controller_brute_force_protection_spec.rb +69 -0
- data/spec/sinatra/spec/controller_http_basic_auth_spec.rb +53 -0
- data/spec/sinatra/spec/controller_oauth2_spec.rb +119 -0
- data/spec/sinatra/spec/controller_oauth_spec.rb +121 -0
- data/spec/sinatra/spec/controller_remember_me_spec.rb +64 -0
- data/spec/sinatra/spec/controller_session_timeout_spec.rb +52 -0
- data/spec/sinatra/spec/controller_spec.rb +120 -0
- data/spec/sinatra/spec/spec.opts +4 -0
- data/spec/sinatra/spec/spec_helper.rb +44 -0
- data/spec/sinatra/spec/user_activation_spec.rb +188 -0
- data/spec/sinatra/spec/user_activity_logging_spec.rb +36 -0
- data/spec/sinatra/spec/user_brute_force_protection_spec.rb +76 -0
- data/spec/sinatra/spec/user_oauth_spec.rb +39 -0
- data/spec/sinatra/spec/user_remember_me_spec.rb +66 -0
- data/spec/sinatra/spec/user_reset_password_spec.rb +178 -0
- data/spec/{rails3 → sinatra/spec}/user_spec.rb +68 -38
- data/spec/sinatra/user.rb +6 -0
- data/spec/sinatra/views/test_login.erb +4 -0
- data/spec/untitled folder +18 -0
- metadata +201 -58
- data/spec/rails3/app_root/test/fixtures/users.yml +0 -9
- data/spec/rails3/app_root/test/performance/browsing_test.rb +0 -9
- data/spec/rails3/app_root/test/test_helper.rb +0 -13
- data/spec/rails3/app_root/test/unit/user_test.rb +0 -8
- data/spec/rails3/spec_helper.rb +0 -135
- /data/spec/rails3/{Rakefile → app_root/Rakefile} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
|
2
|
-
require File.expand_path(File.dirname(__FILE__) + '
|
|
2
|
+
require File.expand_path(File.dirname(__FILE__) + '/../app/mailers/sorcery_mailer')
|
|
3
3
|
|
|
4
4
|
describe "User with activation submodule" do
|
|
5
5
|
before(:all) do
|
|
@@ -13,53 +13,53 @@ describe "User with activation submodule" do
|
|
|
13
13
|
# ----------------- PLUGIN CONFIGURATION -----------------------
|
|
14
14
|
describe User, "loaded plugin configuration" do
|
|
15
15
|
before(:all) do
|
|
16
|
-
|
|
16
|
+
sorcery_reload!([:user_activation], :user_activation_mailer => ::SorceryMailer)
|
|
17
17
|
end
|
|
18
18
|
|
|
19
19
|
after(:each) do
|
|
20
20
|
User.sorcery_config.reset!
|
|
21
|
-
|
|
21
|
+
sorcery_reload!([:user_activation], :user_activation_mailer => ::SorceryMailer)
|
|
22
22
|
end
|
|
23
23
|
|
|
24
24
|
it "should enable configuration option 'activation_state_attribute_name'" do
|
|
25
|
-
|
|
25
|
+
sorcery_model_property_set(:activation_state_attribute_name, :status)
|
|
26
26
|
User.sorcery_config.activation_state_attribute_name.should equal(:status)
|
|
27
27
|
end
|
|
28
28
|
|
|
29
|
-
it "should enable configuration option '
|
|
30
|
-
|
|
31
|
-
User.sorcery_config.
|
|
29
|
+
it "should enable configuration option 'activation_token_attribute_name'" do
|
|
30
|
+
sorcery_model_property_set(:activation_token_attribute_name, :code)
|
|
31
|
+
User.sorcery_config.activation_token_attribute_name.should equal(:code)
|
|
32
32
|
end
|
|
33
33
|
|
|
34
34
|
it "should enable configuration option 'user_activation_mailer'" do
|
|
35
|
-
|
|
35
|
+
sorcery_model_property_set(:user_activation_mailer, TestMailer)
|
|
36
36
|
User.sorcery_config.user_activation_mailer.should equal(TestMailer)
|
|
37
37
|
end
|
|
38
38
|
|
|
39
39
|
it "should enable configuration option 'activation_needed_email_method_name'" do
|
|
40
|
-
|
|
40
|
+
sorcery_model_property_set(:activation_needed_email_method_name, :my_activation_email)
|
|
41
41
|
User.sorcery_config.activation_needed_email_method_name.should equal(:my_activation_email)
|
|
42
42
|
end
|
|
43
43
|
|
|
44
44
|
it "should enable configuration option 'activation_success_email_method_name'" do
|
|
45
|
-
|
|
45
|
+
sorcery_model_property_set(:activation_success_email_method_name, :my_activation_email)
|
|
46
46
|
User.sorcery_config.activation_success_email_method_name.should equal(:my_activation_email)
|
|
47
47
|
end
|
|
48
48
|
|
|
49
49
|
it "if mailer is nil on activation, throw exception!" do
|
|
50
|
-
expect{
|
|
50
|
+
expect{sorcery_reload!([:user_activation])}.to raise_error(ArgumentError)
|
|
51
51
|
end
|
|
52
52
|
end
|
|
53
53
|
|
|
54
54
|
# ----------------- ACTIVATION PROCESS -----------------------
|
|
55
55
|
describe User, "activation process" do
|
|
56
56
|
before(:all) do
|
|
57
|
-
|
|
57
|
+
sorcery_reload!([:user_activation], :user_activation_mailer => ::SorceryMailer)
|
|
58
58
|
end
|
|
59
59
|
|
|
60
60
|
it "should generate an activation code on registration" do
|
|
61
61
|
create_new_user
|
|
62
|
-
@user.
|
|
62
|
+
@user.activation_token.should_not be_nil
|
|
63
63
|
end
|
|
64
64
|
|
|
65
65
|
it "should initialize user state to 'pending'" do
|
|
@@ -74,12 +74,12 @@ describe "User with activation submodule" do
|
|
|
74
74
|
|
|
75
75
|
it "should clear activation code and change state to 'active' on activation" do
|
|
76
76
|
create_new_user
|
|
77
|
-
|
|
77
|
+
activation_token = @user.activation_token
|
|
78
78
|
@user.activate!
|
|
79
79
|
@user2 = User.find(@user.id) # go to db to make sure it was saved and not just in memory
|
|
80
|
-
@user2.
|
|
80
|
+
@user2.activation_token.should be_nil
|
|
81
81
|
@user2.activation_state.should == "active"
|
|
82
|
-
User.
|
|
82
|
+
User.find_by_activation_token(activation_token).should be_nil
|
|
83
83
|
end
|
|
84
84
|
|
|
85
85
|
it "should send the user an activation email" do
|
|
@@ -113,14 +113,14 @@ describe "User with activation submodule" do
|
|
|
113
113
|
end
|
|
114
114
|
|
|
115
115
|
it "activation needed email is optional" do
|
|
116
|
-
|
|
116
|
+
sorcery_model_property_set(:activation_needed_email_method_name, nil)
|
|
117
117
|
old_size = ActionMailer::Base.deliveries.size
|
|
118
118
|
create_new_user
|
|
119
119
|
ActionMailer::Base.deliveries.size.should == old_size
|
|
120
120
|
end
|
|
121
121
|
|
|
122
122
|
it "activation success email is optional" do
|
|
123
|
-
|
|
123
|
+
sorcery_model_property_set(:activation_success_email_method_name, nil)
|
|
124
124
|
create_new_user
|
|
125
125
|
old_size = ActionMailer::Base.deliveries.size
|
|
126
126
|
@user.activate!
|
|
@@ -130,7 +130,7 @@ describe "User with activation submodule" do
|
|
|
130
130
|
|
|
131
131
|
describe User, "prevent non-active login feature" do
|
|
132
132
|
before(:all) do
|
|
133
|
-
|
|
133
|
+
sorcery_reload!([:user_activation], :user_activation_mailer => ::SorceryMailer)
|
|
134
134
|
end
|
|
135
135
|
|
|
136
136
|
it "should not allow a non-active user to authenticate" do
|
|
@@ -140,9 +140,49 @@ describe "User with activation submodule" do
|
|
|
140
140
|
|
|
141
141
|
it "should allow a non-active user to authenticate if configured so" do
|
|
142
142
|
create_new_user
|
|
143
|
-
|
|
143
|
+
sorcery_model_property_set(:prevent_non_active_users_to_login, false)
|
|
144
144
|
User.authenticate(@user.username,'secret').should be_true
|
|
145
145
|
end
|
|
146
146
|
end
|
|
147
147
|
|
|
148
|
+
describe User, "load_from_activation_token" do
|
|
149
|
+
before(:all) do
|
|
150
|
+
sorcery_reload!([:user_activation], :user_activation_mailer => ::SorceryMailer)
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
it "load_from_activation_token should return user when token is found" do
|
|
154
|
+
create_new_user
|
|
155
|
+
User.load_from_activation_token(@user.activation_token).should == @user
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
it "load_from_activation_token should NOT return user when token is NOT found" do
|
|
159
|
+
create_new_user
|
|
160
|
+
User.load_from_activation_token("a").should == nil
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
it "load_from_activation_token should return user when token is found and not expired" do
|
|
164
|
+
sorcery_model_property_set(:activation_token_expiration_period, 500)
|
|
165
|
+
create_new_user
|
|
166
|
+
User.load_from_activation_token(@user.activation_token).should == @user
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
it "load_from_activation_token should NOT return user when token is found and expired" do
|
|
170
|
+
sorcery_model_property_set(:activation_token_expiration_period, 0.1)
|
|
171
|
+
create_new_user
|
|
172
|
+
sleep 0.5
|
|
173
|
+
User.load_from_activation_token(@user.activation_token).should == nil
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
it "load_from_activation_token should return nil if token is blank" do
|
|
177
|
+
User.load_from_activation_token(nil).should == nil
|
|
178
|
+
User.load_from_activation_token("").should == nil
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
it "load_from_activation_token should always be valid if expiration period is nil" do
|
|
182
|
+
sorcery_model_property_set(:activation_token_expiration_period, nil)
|
|
183
|
+
create_new_user
|
|
184
|
+
User.load_from_activation_token(@user.activation_token).should == @user
|
|
185
|
+
end
|
|
186
|
+
end
|
|
187
|
+
|
|
148
188
|
end
|
data/spec/rails3/{user_activity_logging_spec.rb → app_root/spec/user_activity_logging_spec.rb}
RENAMED
|
@@ -10,7 +10,7 @@ describe "User with activity logging submodule" do
|
|
|
10
10
|
# ----------------- PLUGIN CONFIGURATION -----------------------
|
|
11
11
|
describe User, "loaded plugin configuration" do
|
|
12
12
|
before(:all) do
|
|
13
|
-
|
|
13
|
+
sorcery_reload!([:activity_logging])
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
after(:each) do
|
|
@@ -18,17 +18,17 @@ describe "User with activity logging submodule" do
|
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
it "should allow configuration option 'last_login_at_attribute_name'" do
|
|
21
|
-
|
|
21
|
+
sorcery_model_property_set(:last_login_at_attribute_name, :login_time)
|
|
22
22
|
User.sorcery_config.last_login_at_attribute_name.should equal(:login_time)
|
|
23
23
|
end
|
|
24
24
|
|
|
25
25
|
it "should allow configuration option 'last_logout_at_attribute_name'" do
|
|
26
|
-
|
|
26
|
+
sorcery_model_property_set(:last_logout_at_attribute_name, :logout_time)
|
|
27
27
|
User.sorcery_config.last_logout_at_attribute_name.should equal(:logout_time)
|
|
28
28
|
end
|
|
29
29
|
|
|
30
30
|
it "should allow configuration option 'last_activity_at_attribute_name'" do
|
|
31
|
-
|
|
31
|
+
sorcery_model_property_set(:last_activity_at_attribute_name, :activity_time)
|
|
32
32
|
User.sorcery_config.last_activity_at_attribute_name.should equal(:activity_time)
|
|
33
33
|
end
|
|
34
34
|
end
|
|
@@ -13,7 +13,7 @@ describe "User with brute_force_protection submodule" do
|
|
|
13
13
|
describe User, "loaded plugin configuration" do
|
|
14
14
|
|
|
15
15
|
before(:all) do
|
|
16
|
-
|
|
16
|
+
sorcery_reload!([:brute_force_protection])
|
|
17
17
|
create_new_user
|
|
18
18
|
end
|
|
19
19
|
|
|
@@ -30,22 +30,22 @@ describe "User with brute_force_protection submodule" do
|
|
|
30
30
|
end
|
|
31
31
|
|
|
32
32
|
it "should enable configuration option 'failed_logins_count_attribute_name'" do
|
|
33
|
-
|
|
33
|
+
sorcery_model_property_set(:failed_logins_count_attribute_name, :my_count)
|
|
34
34
|
User.sorcery_config.failed_logins_count_attribute_name.should equal(:my_count)
|
|
35
35
|
end
|
|
36
36
|
|
|
37
37
|
it "should enable configuration option 'lock_expires_at_attribute_name'" do
|
|
38
|
-
|
|
38
|
+
sorcery_model_property_set(:lock_expires_at_attribute_name, :expires)
|
|
39
39
|
User.sorcery_config.lock_expires_at_attribute_name.should equal(:expires)
|
|
40
40
|
end
|
|
41
41
|
|
|
42
42
|
it "should enable configuration option 'consecutive_login_retries_amount_allowed'" do
|
|
43
|
-
|
|
44
|
-
User.sorcery_config.
|
|
43
|
+
sorcery_model_property_set(:consecutive_login_retries_amount_limit, 34)
|
|
44
|
+
User.sorcery_config.consecutive_login_retries_amount_limit.should equal(34)
|
|
45
45
|
end
|
|
46
46
|
|
|
47
47
|
it "should enable configuration option 'login_lock_time_period'" do
|
|
48
|
-
|
|
48
|
+
sorcery_model_property_set(:login_lock_time_period, 2.hours)
|
|
49
49
|
User.sorcery_config.login_lock_time_period.should == 2.hours
|
|
50
50
|
end
|
|
51
51
|
end
|
|
@@ -54,7 +54,7 @@ describe "User with brute_force_protection submodule" do
|
|
|
54
54
|
describe User, "when activated with sorcery" do
|
|
55
55
|
|
|
56
56
|
before(:all) do
|
|
57
|
-
|
|
57
|
+
sorcery_reload!([:brute_force_protection])
|
|
58
58
|
end
|
|
59
59
|
|
|
60
60
|
before(:each) do
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
|
2
|
+
|
|
3
|
+
describe "User with oauth submodule" do
|
|
4
|
+
before(:all) do
|
|
5
|
+
ActiveRecord::Migrator.migrate("#{Rails.root}/db/migrate/oauth")
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
after(:all) do
|
|
9
|
+
ActiveRecord::Migrator.rollback("#{Rails.root}/db/migrate/oauth")
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
# ----------------- PLUGIN CONFIGURATION -----------------------
|
|
13
|
+
describe User, "loaded plugin configuration" do
|
|
14
|
+
|
|
15
|
+
before(:all) do
|
|
16
|
+
sorcery_reload!([:oauth])
|
|
17
|
+
sorcery_controller_property_set(:oauth_providers, [:twitter])
|
|
18
|
+
sorcery_model_property_set(:authentications_class, Authentication)
|
|
19
|
+
sorcery_controller_oauth_property_set(:twitter, :key, "eYVNBjBDi33aa9GkA3w")
|
|
20
|
+
sorcery_controller_oauth_property_set(:twitter, :secret, "XpbeSdCoaKSmQGSeokz5qcUATClRW5u08QWNfv71N8")
|
|
21
|
+
sorcery_controller_oauth_property_set(:twitter, :callback_url, "http://blabla.com")
|
|
22
|
+
create_new_external_user(:twitter)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it "should respond to 'load_from_provider'" do
|
|
26
|
+
User.should respond_to(:load_from_provider)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
it "'load_from_provider' should load user if exists" do
|
|
30
|
+
User.load_from_provider(:twitter,123).should == @user
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
it "'load_from_provider' should return nil if user doesn't exist" do
|
|
34
|
+
User.load_from_provider(:twitter,980342).should be_nil
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
end
|
|
@@ -12,7 +12,7 @@ describe "User with remember_me submodule" do
|
|
|
12
12
|
# ----------------- PLUGIN CONFIGURATION -----------------------
|
|
13
13
|
describe User, "loaded plugin configuration" do
|
|
14
14
|
before(:all) do
|
|
15
|
-
|
|
15
|
+
sorcery_reload!([:remember_me])
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
after(:each) do
|
|
@@ -20,12 +20,12 @@ describe "User with remember_me submodule" do
|
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
it "should allow configuration option 'remember_me_token_attribute_name'" do
|
|
23
|
-
|
|
23
|
+
sorcery_model_property_set(:remember_me_token_attribute_name, :my_token)
|
|
24
24
|
User.sorcery_config.remember_me_token_attribute_name.should equal(:my_token)
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
it "should allow configuration option 'remember_me_token_expires_at_attribute_name'" do
|
|
28
|
-
|
|
28
|
+
sorcery_model_property_set(:remember_me_token_expires_at_attribute_name, :my_expires)
|
|
29
29
|
User.sorcery_config.remember_me_token_expires_at_attribute_name.should equal(:my_expires)
|
|
30
30
|
end
|
|
31
31
|
|
|
@@ -48,7 +48,7 @@ describe "User with remember_me submodule" do
|
|
|
48
48
|
|
|
49
49
|
it "should set an expiration based on 'remember_me_for' attribute" do
|
|
50
50
|
create_new_user
|
|
51
|
-
|
|
51
|
+
sorcery_model_property_set(:remember_me_for, 2 * 60 * 60 * 24)
|
|
52
52
|
@user.remember_me!
|
|
53
53
|
@user.remember_me_token_expires_at.to_s.should == (Time.now + 2 * 60 * 60 * 24).utc.to_s
|
|
54
54
|
end
|
|
@@ -13,7 +13,7 @@ describe "User with reset_password submodule" do
|
|
|
13
13
|
describe User, "loaded plugin configuration" do
|
|
14
14
|
|
|
15
15
|
before(:all) do
|
|
16
|
-
|
|
16
|
+
sorcery_reload!([:reset_password], :reset_password_mailer => ::SorceryMailer)
|
|
17
17
|
end
|
|
18
18
|
|
|
19
19
|
after(:each) do
|
|
@@ -25,11 +25,6 @@ describe "User with reset_password submodule" do
|
|
|
25
25
|
@user.should respond_to(:deliver_reset_password_instructions!)
|
|
26
26
|
end
|
|
27
27
|
|
|
28
|
-
it "should respond to 'reset_password_token_valid?'" do
|
|
29
|
-
create_new_user
|
|
30
|
-
@user.should respond_to(:reset_password_token_valid?)
|
|
31
|
-
end
|
|
32
|
-
|
|
33
28
|
it "should respond to 'reset_password!" do
|
|
34
29
|
create_new_user
|
|
35
30
|
@user.should respond_to(:reset_password!)
|
|
@@ -41,32 +36,32 @@ describe "User with reset_password submodule" do
|
|
|
41
36
|
end
|
|
42
37
|
|
|
43
38
|
it "should allow configuration option 'reset_password_token_attribute_name'" do
|
|
44
|
-
|
|
39
|
+
sorcery_model_property_set(:reset_password_token_attribute_name, :my_code)
|
|
45
40
|
User.sorcery_config.reset_password_token_attribute_name.should equal(:my_code)
|
|
46
41
|
end
|
|
47
42
|
|
|
48
43
|
it "should allow configuration option 'reset_password_mailer'" do
|
|
49
|
-
|
|
44
|
+
sorcery_model_property_set(:reset_password_mailer, TestUser)
|
|
50
45
|
User.sorcery_config.reset_password_mailer.should equal(TestUser)
|
|
51
46
|
end
|
|
52
47
|
|
|
53
48
|
it "should allow configuration option 'reset_password_email_method_name'" do
|
|
54
|
-
|
|
49
|
+
sorcery_model_property_set(:reset_password_email_method_name, :my_mailer_method)
|
|
55
50
|
User.sorcery_config.reset_password_email_method_name.should equal(:my_mailer_method)
|
|
56
51
|
end
|
|
57
52
|
|
|
58
53
|
it "should allow configuration option 'reset_password_expiration_period'" do
|
|
59
|
-
|
|
54
|
+
sorcery_model_property_set(:reset_password_expiration_period, 16)
|
|
60
55
|
User.sorcery_config.reset_password_expiration_period.should equal(16)
|
|
61
56
|
end
|
|
62
57
|
|
|
63
58
|
it "should allow configuration option 'reset_password_email_sent_at_attribute_name'" do
|
|
64
|
-
|
|
59
|
+
sorcery_model_property_set(:reset_password_email_sent_at_attribute_name, :blabla)
|
|
65
60
|
User.sorcery_config.reset_password_email_sent_at_attribute_name.should equal(:blabla)
|
|
66
61
|
end
|
|
67
62
|
|
|
68
63
|
it "should allow configuration option 'reset_password_time_between_emails'" do
|
|
69
|
-
|
|
64
|
+
sorcery_model_property_set(:reset_password_time_between_emails, 16)
|
|
70
65
|
User.sorcery_config.reset_password_time_between_emails.should equal(16)
|
|
71
66
|
end
|
|
72
67
|
end
|
|
@@ -75,7 +70,7 @@ describe "User with reset_password submodule" do
|
|
|
75
70
|
describe User, "when activated with sorcery" do
|
|
76
71
|
|
|
77
72
|
before(:all) do
|
|
78
|
-
|
|
73
|
+
sorcery_reload!([:reset_password], :reset_password_mailer => ::SorceryMailer)
|
|
79
74
|
end
|
|
80
75
|
|
|
81
76
|
before(:each) do
|
|
@@ -96,19 +91,26 @@ describe "User with reset_password submodule" do
|
|
|
96
91
|
|
|
97
92
|
it "load_from_reset_password_token should return user when token is found and not expired" do
|
|
98
93
|
create_new_user
|
|
99
|
-
|
|
94
|
+
sorcery_model_property_set(:reset_password_expiration_period, 500)
|
|
100
95
|
@user.deliver_reset_password_instructions!
|
|
101
96
|
User.load_from_reset_password_token(@user.reset_password_token).should == @user
|
|
102
97
|
end
|
|
103
98
|
|
|
104
99
|
it "load_from_reset_password_token should NOT return user when token is found and expired" do
|
|
105
100
|
create_new_user
|
|
106
|
-
|
|
101
|
+
sorcery_model_property_set(:reset_password_expiration_period, 0.1)
|
|
107
102
|
@user.deliver_reset_password_instructions!
|
|
108
103
|
sleep 0.5
|
|
109
104
|
User.load_from_reset_password_token(@user.reset_password_token).should == nil
|
|
110
105
|
end
|
|
111
106
|
|
|
107
|
+
it "load_from_reset_password_token should always be valid if expiration period is nil" do
|
|
108
|
+
create_new_user
|
|
109
|
+
sorcery_model_property_set(:reset_password_expiration_period, nil)
|
|
110
|
+
@user.deliver_reset_password_instructions!
|
|
111
|
+
User.load_from_reset_password_token(@user.reset_password_token).should == @user
|
|
112
|
+
end
|
|
113
|
+
|
|
112
114
|
it "load_from_reset_password_token should return nil if token is blank" do
|
|
113
115
|
User.load_from_reset_password_token(nil).should == nil
|
|
114
116
|
User.load_from_reset_password_token("").should == nil
|
|
@@ -123,7 +125,7 @@ describe "User with reset_password submodule" do
|
|
|
123
125
|
|
|
124
126
|
it "the reset_password_token should be random" do
|
|
125
127
|
create_new_user
|
|
126
|
-
|
|
128
|
+
sorcery_model_property_set(:reset_password_time_between_emails, 0)
|
|
127
129
|
@user.deliver_reset_password_instructions!
|
|
128
130
|
old_password_code = @user.reset_password_token
|
|
129
131
|
@user.deliver_reset_password_instructions!
|
|
@@ -146,31 +148,9 @@ describe "User with reset_password submodule" do
|
|
|
146
148
|
@user.reset_password_token.should be_nil
|
|
147
149
|
end
|
|
148
150
|
|
|
149
|
-
it "code isn't valid if expiration passed" do
|
|
150
|
-
create_new_user
|
|
151
|
-
plugin_set_model_config_property(:reset_password_expiration_period, 0.1)
|
|
152
|
-
@user.deliver_reset_password_instructions!
|
|
153
|
-
sleep 0.5
|
|
154
|
-
@user.reset_password_token_valid?.should == false
|
|
155
|
-
end
|
|
156
|
-
|
|
157
|
-
it "code is valid if it's the same code and expiration period did not pass" do
|
|
158
|
-
create_new_user
|
|
159
|
-
plugin_set_model_config_property(:reset_password_expiration_period, 300)
|
|
160
|
-
@user.deliver_reset_password_instructions!
|
|
161
|
-
@user.reset_password_token_valid?.should == true
|
|
162
|
-
end
|
|
163
|
-
|
|
164
|
-
it "code is valid if it's the same code and expiration period is nil" do
|
|
165
|
-
create_new_user
|
|
166
|
-
plugin_set_model_config_property(:reset_password_expiration_period, nil)
|
|
167
|
-
@user.deliver_reset_password_instructions!
|
|
168
|
-
@user.reset_password_token_valid?.should == true
|
|
169
|
-
end
|
|
170
|
-
|
|
171
151
|
it "should not send an email if time between emails has not passed since last email" do
|
|
172
152
|
create_new_user
|
|
173
|
-
|
|
153
|
+
sorcery_model_property_set(:reset_password_time_between_emails, 10000)
|
|
174
154
|
old_size = ActionMailer::Base.deliveries.size
|
|
175
155
|
@user.deliver_reset_password_instructions!
|
|
176
156
|
ActionMailer::Base.deliveries.size.should == old_size + 1
|
|
@@ -180,7 +160,7 @@ describe "User with reset_password submodule" do
|
|
|
180
160
|
|
|
181
161
|
it "should send an email if time between emails has passed since last email" do
|
|
182
162
|
create_new_user
|
|
183
|
-
|
|
163
|
+
sorcery_model_property_set(:reset_password_time_between_emails, 0.5)
|
|
184
164
|
old_size = ActionMailer::Base.deliveries.size
|
|
185
165
|
@user.deliver_reset_password_instructions!
|
|
186
166
|
ActionMailer::Base.deliveries.size.should == old_size + 1
|
|
@@ -190,7 +170,7 @@ describe "User with reset_password submodule" do
|
|
|
190
170
|
end
|
|
191
171
|
|
|
192
172
|
it "if mailer is nil on activation, throw exception!" do
|
|
193
|
-
expect{
|
|
173
|
+
expect{sorcery_reload!([:reset_password])}.to raise_error(ArgumentError)
|
|
194
174
|
end
|
|
195
175
|
|
|
196
176
|
end
|