mirror of
https://github.com/lingble/chatwoot.git
synced 2025-10-30 10:42:38 +00:00
57 lines
1.8 KiB
Ruby
57 lines
1.8 KiB
Ruby
require 'rails_helper'
|
|
|
|
RSpec.describe NotionConcern, type: :concern do
|
|
let(:controller_class) do
|
|
Class.new do
|
|
include NotionConcern
|
|
end
|
|
end
|
|
|
|
let(:controller) { controller_class.new }
|
|
|
|
describe '#notion_client' do
|
|
let(:client_id) { 'test_notion_client_id' }
|
|
let(:client_secret) { 'test_notion_client_secret' }
|
|
|
|
before do
|
|
allow(GlobalConfigService).to receive(:load).with('NOTION_CLIENT_ID', nil).and_return(client_id)
|
|
allow(GlobalConfigService).to receive(:load).with('NOTION_CLIENT_SECRET', nil).and_return(client_secret)
|
|
end
|
|
|
|
it 'creates OAuth2 client with correct configuration' do
|
|
expect(OAuth2::Client).to receive(:new).with(
|
|
client_id,
|
|
client_secret,
|
|
{
|
|
site: 'https://api.notion.com',
|
|
authorize_url: 'https://api.notion.com/v1/oauth/authorize',
|
|
token_url: 'https://api.notion.com/v1/oauth/token',
|
|
auth_scheme: :basic_auth
|
|
}
|
|
)
|
|
|
|
controller.notion_client
|
|
end
|
|
|
|
it 'loads client credentials from GlobalConfigService' do
|
|
expect(GlobalConfigService).to receive(:load).with('NOTION_CLIENT_ID', nil)
|
|
expect(GlobalConfigService).to receive(:load).with('NOTION_CLIENT_SECRET', nil)
|
|
|
|
controller.notion_client
|
|
end
|
|
|
|
it 'returns OAuth2::Client instance' do
|
|
client = controller.notion_client
|
|
expect(client).to be_an_instance_of(OAuth2::Client)
|
|
end
|
|
|
|
it 'configures client with Notion-specific endpoints' do
|
|
client = controller.notion_client
|
|
expect(client.site).to eq('https://api.notion.com')
|
|
expect(client.options[:authorize_url]).to eq('https://api.notion.com/v1/oauth/authorize')
|
|
expect(client.options[:token_url]).to eq('https://api.notion.com/v1/oauth/token')
|
|
expect(client.options[:auth_scheme]).to eq(:basic_auth)
|
|
end
|
|
end
|
|
end
|