2017-12-21 17:36:29 +00:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2010-03-26 10:27:19 +00:00
|
|
|
require 'test_helper'
|
2009-11-24 17:18:42 +00:00
|
|
|
|
2015-08-18 23:42:56 +00:00
|
|
|
class TrackableHooksTest < Devise::IntegrationTest
|
2018-03-12 18:57:34 +00:00
|
|
|
test "trackable should not run model validations" do
|
|
|
|
sign_in_as_user
|
|
|
|
|
|
|
|
refute User.validations_performed
|
|
|
|
end
|
2009-11-24 17:18:42 +00:00
|
|
|
|
|
|
|
test "current and last sign in timestamps are updated on each sign in" do
|
|
|
|
user = create_user
|
|
|
|
assert_nil user.current_sign_in_at
|
|
|
|
assert_nil user.last_sign_in_at
|
|
|
|
|
|
|
|
sign_in_as_user
|
|
|
|
user.reload
|
|
|
|
|
2014-05-29 05:17:07 +00:00
|
|
|
assert user.current_sign_in_at.acts_like?(:time)
|
|
|
|
assert user.last_sign_in_at.acts_like?(:time)
|
2009-11-24 17:18:42 +00:00
|
|
|
|
|
|
|
assert_equal user.current_sign_in_at, user.last_sign_in_at
|
|
|
|
assert user.current_sign_in_at >= user.created_at
|
|
|
|
|
2016-04-26 22:12:05 +00:00
|
|
|
delete destroy_user_session_path
|
2009-11-24 17:18:42 +00:00
|
|
|
new_time = 2.seconds.from_now
|
|
|
|
Time.stubs(:now).returns(new_time)
|
|
|
|
|
|
|
|
sign_in_as_user
|
|
|
|
user.reload
|
|
|
|
assert user.current_sign_in_at > user.last_sign_in_at
|
|
|
|
end
|
|
|
|
|
|
|
|
test "current and last sign in remote ip are updated on each sign in" do
|
|
|
|
user = create_user
|
|
|
|
assert_nil user.current_sign_in_ip
|
|
|
|
assert_nil user.last_sign_in_ip
|
|
|
|
|
|
|
|
sign_in_as_user
|
|
|
|
user.reload
|
|
|
|
|
|
|
|
assert_equal "127.0.0.1", user.current_sign_in_ip
|
|
|
|
assert_equal "127.0.0.1", user.last_sign_in_ip
|
|
|
|
end
|
2012-01-09 21:08:39 +00:00
|
|
|
|
2019-10-24 12:12:27 +00:00
|
|
|
test "current and last sign in remote ip returns original ip behind a non transparent proxy" do
|
2011-10-22 13:57:18 +00:00
|
|
|
user = create_user
|
2012-01-09 21:08:39 +00:00
|
|
|
|
2012-01-10 14:43:15 +00:00
|
|
|
arbitrary_ip = '200.121.1.69'
|
2011-10-22 13:57:18 +00:00
|
|
|
sign_in_as_user do
|
|
|
|
header 'HTTP_X_FORWARDED_FOR', arbitrary_ip
|
|
|
|
end
|
|
|
|
user.reload
|
|
|
|
assert_equal arbitrary_ip, user.current_sign_in_ip
|
2019-10-24 12:12:27 +00:00
|
|
|
assert_equal arbitrary_ip, user.last_sign_in_ip
|
2011-10-22 13:57:18 +00:00
|
|
|
end
|
2009-11-24 17:18:42 +00:00
|
|
|
|
|
|
|
test "increase sign in count" do
|
|
|
|
user = create_user
|
2010-03-26 11:55:37 +00:00
|
|
|
assert_equal 0, user.sign_in_count
|
2009-11-24 17:18:42 +00:00
|
|
|
|
|
|
|
sign_in_as_user
|
|
|
|
user.reload
|
|
|
|
assert_equal 1, user.sign_in_count
|
|
|
|
|
2016-04-26 22:12:05 +00:00
|
|
|
delete destroy_user_session_path
|
2009-11-24 17:18:42 +00:00
|
|
|
sign_in_as_user
|
|
|
|
user.reload
|
|
|
|
assert_equal 2, user.sign_in_count
|
|
|
|
end
|
|
|
|
|
2010-01-05 12:44:13 +00:00
|
|
|
test "does not update anything if user has signed out along the way" do
|
2014-02-25 16:42:55 +00:00
|
|
|
swap Devise, allow_unconfirmed_access_for: 0.days do
|
|
|
|
user = create_user(confirm: false)
|
2009-11-24 17:29:46 +00:00
|
|
|
sign_in_as_user
|
2009-11-24 17:18:42 +00:00
|
|
|
|
2009-11-24 17:29:46 +00:00
|
|
|
user.reload
|
|
|
|
assert_nil user.current_sign_in_at
|
|
|
|
assert_nil user.last_sign_in_at
|
|
|
|
end
|
2009-11-24 17:18:42 +00:00
|
|
|
end
|
2012-01-09 21:08:39 +00:00
|
|
|
|
2011-05-04 13:21:12 +00:00
|
|
|
test "do not track if devise.skip_trackable is set" do
|
2011-05-04 12:44:37 +00:00
|
|
|
user = create_user
|
|
|
|
sign_in_as_user do
|
2011-05-04 13:21:12 +00:00
|
|
|
header 'devise.skip_trackable', '1'
|
2011-05-04 12:44:37 +00:00
|
|
|
end
|
|
|
|
user.reload
|
|
|
|
assert_equal 0, user.sign_in_count
|
2016-04-26 22:12:05 +00:00
|
|
|
delete destroy_user_session_path
|
2012-01-09 21:08:39 +00:00
|
|
|
|
2011-05-04 12:44:37 +00:00
|
|
|
sign_in_as_user do
|
2011-05-04 13:21:12 +00:00
|
|
|
header 'devise.skip_trackable', false
|
2011-05-04 12:44:37 +00:00
|
|
|
end
|
|
|
|
user.reload
|
|
|
|
assert_equal 1, user.sign_in_count
|
|
|
|
end
|
2011-05-04 13:21:12 +00:00
|
|
|
|
2009-11-24 17:18:42 +00:00
|
|
|
end
|