Fallback name branch (#6591)
This commit is contained in:
@@ -45,13 +45,18 @@ class Microsoft::CallbacksController < ApplicationController
|
|||||||
channel_email.inbox
|
channel_email.inbox
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Fallback name, for when name field is missing from users_data
|
||||||
|
def fallback_name
|
||||||
|
users_data['email'].split('@').first.parameterize.titleize
|
||||||
|
end
|
||||||
|
|
||||||
def create_microsoft_channel_with_inbox
|
def create_microsoft_channel_with_inbox
|
||||||
ActiveRecord::Base.transaction do
|
ActiveRecord::Base.transaction do
|
||||||
channel_email = Channel::Email.create!(email: users_data['email'], account: account)
|
channel_email = Channel::Email.create!(email: users_data['email'], account: account)
|
||||||
account.inboxes.create!(
|
account.inboxes.create!(
|
||||||
account: account,
|
account: account,
|
||||||
channel: channel_email,
|
channel: channel_email,
|
||||||
name: users_data['name']
|
name: users_data['name'] || fallback_name
|
||||||
)
|
)
|
||||||
channel_email
|
channel_email
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -15,6 +15,11 @@ RSpec.describe 'Microsoft::CallbacksController', type: :request do
|
|||||||
refresh_token: SecureRandom.hex(10) }
|
refresh_token: SecureRandom.hex(10) }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
let(:response_body_success_without_name) do
|
||||||
|
{ id_token: JWT.encode({ email: email }, false), access_token: SecureRandom.hex(10), token_type: 'Bearer',
|
||||||
|
refresh_token: SecureRandom.hex(10) }
|
||||||
|
end
|
||||||
|
|
||||||
it 'creates inboxes if authentication is successful' do
|
it 'creates inboxes if authentication is successful' do
|
||||||
stub_request(:post, 'https://login.microsoftonline.com/common/oauth2/v2.0/token')
|
stub_request(:post, 'https://login.microsoftonline.com/common/oauth2/v2.0/token')
|
||||||
.with(body: { 'code' => code, 'grant_type' => 'authorization_code',
|
.with(body: { 'code' => code, 'grant_type' => 'authorization_code',
|
||||||
@@ -52,6 +57,20 @@ RSpec.describe 'Microsoft::CallbacksController', type: :request do
|
|||||||
expect(Redis::Alfred.get(email)).to be_nil
|
expect(Redis::Alfred.get(email)).to be_nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'creates inboxes with fallback_name when account name is not present in id_token' do
|
||||||
|
stub_request(:post, 'https://login.microsoftonline.com/common/oauth2/v2.0/token')
|
||||||
|
.with(body: { 'code' => code, 'grant_type' => 'authorization_code',
|
||||||
|
'redirect_uri' => "#{ENV.fetch('FRONTEND_URL', 'http://localhost:3000')}/microsoft/callback" })
|
||||||
|
.to_return(status: 200, body: response_body_success_without_name.to_json, headers: { 'Content-Type' => 'application/json' })
|
||||||
|
|
||||||
|
get microsoft_callback_url, params: { code: code }
|
||||||
|
|
||||||
|
expect(response).to redirect_to app_microsoft_inbox_agents_url(account_id: account.id, inbox_id: account.inboxes.last.id)
|
||||||
|
expect(account.inboxes.count).to be 1
|
||||||
|
inbox = account.inboxes.last
|
||||||
|
expect(inbox.name).to eq email.split('@').first.parameterize.titleize
|
||||||
|
end
|
||||||
|
|
||||||
it 'redirects to microsoft app in case of error' do
|
it 'redirects to microsoft app in case of error' do
|
||||||
stub_request(:post, 'https://login.microsoftonline.com/common/oauth2/v2.0/token')
|
stub_request(:post, 'https://login.microsoftonline.com/common/oauth2/v2.0/token')
|
||||||
.with(body: { 'code' => code, 'grant_type' => 'authorization_code',
|
.with(body: { 'code' => code, 'grant_type' => 'authorization_code',
|
||||||
|
|||||||
Reference in New Issue
Block a user