diff --git a/.circleci/config.yml b/.circleci/config.yml index 2c55d21b2..d46ec56bd 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -12,8 +12,8 @@ defaults: &defaults # Specify service dependencies here if necessary # CircleCI maintains a library of pre-built images # documented at https://circleci.com/docs/2.0/circleci-images/ - - image: circleci/postgres:9.4 - - image: circleci/redis:5.0.7-alpine + - image: circleci/postgres:alpine + - image: circleci/redis:alpine environment: - CC_TEST_REPORTER_ID: b1b5c4447bf93f6f0b06a64756e35afd0810ea83649f03971cbf303b4449456f diff --git a/app/controllers/devise_overrides/sessions_controller.rb b/app/controllers/devise_overrides/sessions_controller.rb index 8ef7f2d11..3a6614074 100644 --- a/app/controllers/devise_overrides/sessions_controller.rb +++ b/app/controllers/devise_overrides/sessions_controller.rb @@ -2,4 +2,8 @@ class DeviseOverrides::SessionsController < ::DeviseTokenAuth::SessionsControlle # Prevent session parameter from being passed # Unpermitted parameter: session wrap_parameters format: [] + + def render_create_success + render 'devise/auth.json' + end end diff --git a/app/views/devise/auth.json.jbuilder b/app/views/devise/auth.json.jbuilder new file mode 100644 index 000000000..d2caa20ec --- /dev/null +++ b/app/views/devise/auth.json.jbuilder @@ -0,0 +1,14 @@ +json.data do + json.id @resource.id + json.provider @resource.provider + json.uid @resource.uid + json.name @resource.name + json.nickname @resource.nickname + json.email @resource.email + json.account_id @resource.account_id + json.pubsub_token @resource.pubsub_token + json.role @resource.role + json.inviter_id @resource.inviter_id + json.confirmed @resource.confirmed? + json.avatar_url @resource.avatar_url +end diff --git a/spec/controllers/devise/session_controller_spec.rb b/spec/controllers/devise/session_controller_spec.rb new file mode 100644 index 000000000..0beb3ebfa --- /dev/null +++ b/spec/controllers/devise/session_controller_spec.rb @@ -0,0 +1,34 @@ +require 'rails_helper' + +RSpec.describe 'Session', type: :request do + describe 'GET /sign_in' do + let!(:account) { create(:account) } + + context 'when it is invalid credentials' do + it 'returns unauthorized' do + params = { email: 'invalid@invalid.com', password: 'invalid' } + + post new_user_session_url, + params: params, + as: :json + expect(response).to have_http_status(:unauthorized) + expect(response.body).to include('Invalid login credentials') + end + end + + context 'when it is valid credentials' do + let!(:user) { create(:user, password: 'test1234', account: account) } + + it 'returns successful auth response' do + params = { email: user.email, password: 'test1234' } + + post new_user_session_url, + params: params, + as: :json + + expect(response).to have_http_status(:success) + expect(response.body).to include(user.email) + end + end + end +end