|
1 | 1 | require 'spec_helper' |
2 | 2 |
|
3 | | -# require 'shared_examples/controller_activity_logging_shared_examples' |
4 | | - |
5 | 3 | describe SorceryController, type: :controller do |
| 4 | + before(:all) do |
| 5 | + MigrationHelper.migrate("#{Rails.root}/db/migrate/activity_logging") |
| 6 | + end |
| 7 | + |
6 | 8 | after(:all) do |
| 9 | + MigrationHelper.rollback("#{Rails.root}/db/migrate/activity_logging") |
7 | 10 | sorcery_controller_property_set(:register_login_time, true) |
8 | 11 | sorcery_controller_property_set(:register_logout_time, true) |
9 | 12 | sorcery_controller_property_set(:register_last_activity_time, true) |
10 | | - # sorcery_controller_property_set(:last_login_from_ip_address_name, true) |
11 | 13 | end |
12 | 14 |
|
13 | 15 | # ----------------- ACTIVITY LOGGING ----------------------- |
14 | 16 | context 'with activity logging features' do |
15 | | - let(:adapter) { double('sorcery_adapter') } |
16 | | - let(:user) { double('user', id: 42, sorcery_adapter: adapter) } |
| 17 | + let!(:user) { User.create!(username: 'test_user', email: '[email protected]', password: 'password') } |
17 | 18 |
|
18 | | - before(:all) do |
19 | | - sorcery_reload!([:activity_logging]) |
20 | | - end |
| 19 | + before(:all) { sorcery_reload!([:activity_logging]) } |
21 | 20 |
|
22 | 21 | before(:each) do |
23 | | - allow(user).to receive(:username) |
24 | | - allow(user).to receive_message_chain(:sorcery_config, :username_attribute_names, :first) { :username } |
25 | | - allow(User.sorcery_config).to receive(:last_login_at_attribute_name) { :last_login_at } |
26 | | - allow(User.sorcery_config).to receive(:last_login_from_ip_address_name) { :last_login_from_ip_address } |
27 | | - |
28 | 22 | sorcery_controller_property_set(:register_login_time, false) |
29 | 23 | sorcery_controller_property_set(:register_last_ip_address, false) |
30 | 24 | sorcery_controller_property_set(:register_last_activity_time, false) |
|
35 | 29 | Timecop.freeze(now) |
36 | 30 |
|
37 | 31 | sorcery_controller_property_set(:register_login_time, true) |
38 | | - expect(user).to receive(:set_last_login_at).with(be_within(0.1).of(now)) |
39 | 32 | login_user(user) |
40 | 33 |
|
| 34 | + expect(user.reload.last_login_at).to be_within(0.1).of(now) |
| 35 | + |
41 | 36 | Timecop.return |
42 | 37 | end |
43 | 38 |
|
44 | 39 | it 'logs logout time on logout' do |
45 | 40 | login_user(user) |
46 | 41 | now = Time.now.in_time_zone |
47 | 42 | Timecop.freeze(now) |
48 | | - expect(user).to receive(:set_last_logout_at).with(be_within(0.1).of(now)) |
49 | 43 |
|
50 | 44 | logout_user |
51 | 45 |
|
| 46 | + expect(user.reload.last_logout_at).to be_within(0.1).of(now) |
| 47 | + |
52 | 48 | Timecop.return |
53 | 49 | end |
54 | 50 |
|
|
58 | 54 | login_user(user) |
59 | 55 | now = Time.now.in_time_zone |
60 | 56 | Timecop.freeze(now) |
61 | | - expect(user).to receive(:set_last_activity_at).with(be_within(0.1).of(now)) |
62 | 57 |
|
63 | 58 | get :some_action |
64 | 59 |
|
| 60 | + expect(user.reload.last_activity_at).to be_within(0.1).of(now) |
| 61 | + |
65 | 62 | Timecop.return |
66 | 63 | end |
67 | 64 |
|
68 | 65 | it 'logs last IP address when logged in' do |
69 | 66 | sorcery_controller_property_set(:register_last_ip_address, true) |
70 | | - expect(user).to receive(:set_last_ip_address).with('0.0.0.0') |
71 | 67 |
|
72 | 68 | login_user(user) |
| 69 | + |
| 70 | + expect(user.reload.last_login_from_ip_address).to eq('0.0.0.0') |
73 | 71 | end |
74 | 72 |
|
75 | 73 | it 'updates nothing but activity fields' do |
76 | | - pending 'Move to model' |
77 | | - original_user_name = User.last.username |
| 74 | + sorcery_controller_property_set(:register_last_activity_time, true) |
| 75 | + user = User.last |
| 76 | + original_email = user.email |
| 77 | + original_activity_at = user.last_activity_at |
78 | 78 | login_user(user) |
79 | 79 | get :some_action_making_a_non_persisted_change_to_the_user |
80 | | - |
81 | | - expect(User.last.username).to eq original_user_name |
| 80 | + user.reload |
| 81 | + expect(user.email).to eq original_email |
| 82 | + expect(user.last_activity_at).not_to eq original_activity_at |
82 | 83 | end |
83 | 84 |
|
84 | 85 | it 'does not register login time if configured so' do |
85 | 86 | sorcery_controller_property_set(:register_login_time, false) |
86 | 87 |
|
87 | | - expect(user).to receive(:set_last_login_at).never |
88 | 88 | login_user(user) |
| 89 | + |
| 90 | + expect(user.reload.last_login_at).to be_nil |
89 | 91 | end |
90 | 92 |
|
91 | 93 | it 'does not register logout time if configured so' do |
92 | 94 | sorcery_controller_property_set(:register_logout_time, false) |
93 | 95 | login_user(user) |
94 | 96 |
|
95 | | - expect(user).to receive(:set_last_logout_at).never |
96 | 97 | logout_user |
| 98 | + |
| 99 | + expect(user.reload.last_logout_at).to be_nil |
97 | 100 | end |
98 | 101 |
|
99 | 102 | it 'does not register last activity time if configured so' do |
100 | 103 | sorcery_controller_property_set(:register_last_activity_time, false) |
101 | 104 |
|
102 | | - expect(user).to receive(:set_last_activity_at).never |
103 | 105 | login_user(user) |
| 106 | + get :some_action |
| 107 | + |
| 108 | + expect(user.reload.last_activity_at).to be_nil |
104 | 109 | end |
105 | 110 |
|
106 | 111 | it 'does not register last IP address if configured so' do |
107 | 112 | sorcery_controller_property_set(:register_last_ip_address, false) |
108 | | - expect(user).to receive(:set_last_ip_address).never |
109 | 113 |
|
110 | 114 | login_user(user) |
| 115 | + |
| 116 | + expect(user.reload.last_login_from_ip_address).to be_nil |
111 | 117 | end |
112 | 118 | end |
113 | 119 | end |
0 commit comments