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