Some checks failed
Lock Threads / action (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Publish Chatwoot EE docker images / build (linux/amd64, ubuntu-latest) (push) Has been cancelled
Publish Chatwoot EE docker images / build (linux/arm64, ubuntu-22.04-arm) (push) Has been cancelled
Publish Chatwoot EE docker images / merge (push) Has been cancelled
Publish Chatwoot CE docker images / build (linux/amd64, ubuntu-latest) (push) Has been cancelled
Publish Chatwoot CE docker images / build (linux/arm64, ubuntu-22.04-arm) (push) Has been cancelled
Publish Chatwoot CE docker images / merge (push) Has been cancelled
Run Chatwoot CE spec / lint-backend (push) Has been cancelled
Run Chatwoot CE spec / lint-frontend (push) Has been cancelled
Run Chatwoot CE spec / frontend-tests (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (0, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (1, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (10, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (11, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (12, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (13, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (14, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (15, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (2, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (3, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (4, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (5, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (6, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (7, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (8, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (9, 16) (push) Has been cancelled
Run Linux nightly installer / nightly (push) Has been cancelled
- Add Logistics component with progress tracking - Add OrderDetail component for order information - Support data-driven steps and actions - Add blue color scale to widget SCSS - Fix node overflow and progress bar rendering issues - Add English translations for dashboard components Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
97 lines
3.1 KiB
Ruby
97 lines
3.1 KiB
Ruby
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: 'Password1!', account: account) }
|
|
let!(:user_with_new_pwd) { create(:user, password: 'Password1!.><?', account: account) }
|
|
|
|
it 'returns successful auth response' do
|
|
params = { email: user.email, password: 'Password1!' }
|
|
|
|
post new_user_session_url,
|
|
params: params,
|
|
as: :json
|
|
|
|
expect(response).to have_http_status(:success)
|
|
expect(response.body).to include(user.email)
|
|
end
|
|
|
|
it 'returns successful auth response with new password special characters' do
|
|
params = { email: user_with_new_pwd.email, password: 'Password1!.><?' }
|
|
|
|
post new_user_session_url,
|
|
params: params,
|
|
as: :json
|
|
|
|
expect(response).to have_http_status(:success)
|
|
expect(response.body).to include(user_with_new_pwd.email)
|
|
end
|
|
|
|
it 'returns the permission of the user' do
|
|
params = { email: user.email, password: 'Password1!' }
|
|
|
|
post new_user_session_url,
|
|
params: params,
|
|
as: :json
|
|
|
|
expect(response).to have_http_status(:success)
|
|
expect(response.parsed_body['data']['accounts'].first['permissions']).to eq(['agent'])
|
|
end
|
|
end
|
|
|
|
context 'when it is invalid sso auth token' do
|
|
let!(:user) { create(:user, password: 'Password1!', account: account) }
|
|
|
|
it 'returns unauthorized' do
|
|
params = { email: user.email, sso_auth_token: SecureRandom.hex(32) }
|
|
|
|
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 with valid sso auth token' do
|
|
let!(:user) { create(:user, password: 'Password1!', account: account) }
|
|
|
|
it 'returns successful auth response' do
|
|
params = { email: user.email, sso_auth_token: user.generate_sso_auth_token }
|
|
|
|
post new_user_session_url, params: params, as: :json
|
|
|
|
expect(response).to have_http_status(:success)
|
|
expect(response.body).to include(user.email)
|
|
|
|
# token won't work on a subsequent request
|
|
post new_user_session_url, params: params, as: :json
|
|
expect(response).to have_http_status(:unauthorized)
|
|
end
|
|
end
|
|
end
|
|
|
|
describe 'GET /auth/sign_in' do
|
|
it 'redirects to the frontend login page with error' do
|
|
get new_user_session_url
|
|
|
|
expect(response).to redirect_to(%r{/app/login\?error=access-denied$})
|
|
end
|
|
end
|
|
end
|