main
1require "rails_helper"
2
3describe Session do
4 context "#save" do
5 it "creates a new session" do
6 Session.create!(user_id: 1, ip_address: '127.0.0.1')
7 session = Session.last
8 expect(session.user_id).to eql(1)
9 expect(session.ip_address).to eql("127.0.0.1")
10 expect(session.key).to_not be_nil
11 end
12 end
13
14 context ".authenticate" do
15 let(:user_session) { create(:session) }
16
17 context "when the session key is legit" do
18 it 'returns the session' do
19 expect(Session.authenticate!(user_session.key)).to eql(user_session)
20 end
21 end
22
23 context "when the session key is incorrect" do
24 it 'raises an error' do
25 expect(-> { Session.authenticate!('blah') }).to raise_error(ActiveRecord::RecordNotFound)
26 end
27 end
28
29 context "when the session key is revoked" do
30 let(:revoked_session) { create(:session, revoked_at: Time.now) }
31
32 it 'raises an error' do
33 expect(-> { Session.authenticate(revoked_session.key) }).to raise_error
34 end
35 end
36 end
37
38 context "#revoke!" do
39 subject { create(:user_session) }
40
41 it 'marks the time the session was revoked' do
42 subject.revoke!
43 expect(subject.revoked_at).to_not be_nil
44 end
45 end
46
47 context "#access" do
48 subject { create(:user_session) }
49 let(:request) { double(remote_ip: '127.0.0.1') }
50
51 before { subject.access(request) }
52
53 it 'records the ip address' do
54 expect(subject.ip_address).to eql(request.remote_ip)
55 end
56 end
57end