main
1require 'rails_helper'
2
3describe LoginCommand do
4 subject { LoginCommand.new }
5
6 describe "#run" do
7 let(:user) { create(:user) }
8 let(:web_request) { double(remote_ip: '192.168.0.1') }
9 let(:web_context) { double(params: params, request: web_request) }
10
11 context "when the credentials are valid" do
12 let(:params) { { email: user.email, password: 'password' } }
13
14 it 'returns a new user session' do
15 result = subject.run(web_context)
16 expect(result[:value]).to_not be_nil
17 expect(result[:httponly]).to eql(true)
18 end
19 end
20
21 context "when the email is not known" do
22 let(:params) { { email: 'blah@example.com', password: 'password' } }
23
24 it 'returns nil' do
25 expect(subject.run(web_context)).to be_nil
26 end
27 end
28
29 context "when the password is incorrect" do
30 let(:params) { { email: user.email, password: 'wrong' } }
31
32 it 'returns nil' do
33 expect(subject.run(web_context)).to be_nil
34 end
35 end
36 end
37end