diff --git a/app/controllers/api/go_cardless_controller.rb b/app/controllers/api/go_cardless_controller.rb index 93f3d859c..d538844a3 100644 --- a/app/controllers/api/go_cardless_controller.rb +++ b/app/controllers/api/go_cardless_controller.rb @@ -2,10 +2,9 @@ class Api::GoCardlessController < PaymentController skip_before_action :verify_authenticity_token def start_flow - # session.id is nil until something is stored in the session, so might - # as well make it explicit what we're using the id for. session[:go_cardless_session_id] = SecureRandom.uuid flow = GoCardlessDirector.new(session[:go_cardless_session_id], success_url, params) + if flow.success? redirect_to flow.redirect_url else diff --git a/spec/controllers/api/go_cardless_controller_spec.rb b/spec/controllers/api/go_cardless_controller_spec.rb index 6a872c8d9..cc98c3b52 100644 --- a/spec/controllers/api/go_cardless_controller_spec.rb +++ b/spec/controllers/api/go_cardless_controller_spec.rb @@ -5,11 +5,11 @@ before do allow(Page).to receive(:find) { page } - allow(request.session).to receive(:id) { 'fake_session_id' } + allow(SecureRandom).to receive(:uuid) { 'fake_session_id' } end describe 'GET #start_flow' do - let(:director) { double(:director, redirect_url: "http://example.com/redirect_url") } + let(:director) { double(:director, success?: true, redirect_url: "http://example.com/redirect_url") } before do allow(GoCardlessDirector).to receive(:new){ director } @@ -21,7 +21,7 @@ it 'instantiates GoCardlessDirector' do expect(GoCardlessDirector).to have_received(:new). - with('fake_session_id', "http://test.host/api/go_cardless/pages/1/transaction?foo=bar&page_id=1") + with('fake_session_id', "http://test.host/api/go_cardless/pages/1/transaction?foo=bar&page_id=1", controller.params) end it 'redirects' do @@ -41,7 +41,7 @@ it 'creates GC transaction' do expect(PaymentProcessor::GoCardless::Transaction).to( - have_received(:make_transaction).with(hash_including({session_token: 'fake_session_id'})) + have_received(:make_transaction).with(hash_including({page_id: '1'})) ) end end