34 lines
1.5 KiB
Ruby
34 lines
1.5 KiB
Ruby
require 'rails_helper'
|
|
|
|
describe Voice::Provider::Twilio::TokenService do
|
|
let(:account) { create(:account) }
|
|
let(:user) { create(:user, :administrator, account: account) }
|
|
let(:voice_channel) { create(:channel_voice, account: account) }
|
|
let(:inbox) { voice_channel.inbox }
|
|
|
|
let(:webhook_service) { instance_double(Twilio::VoiceWebhookSetupService, perform: true) }
|
|
let(:voice_grant) { instance_double(Twilio::JWT::AccessToken::VoiceGrant) }
|
|
|
|
before do
|
|
allow(Twilio::VoiceWebhookSetupService).to receive(:new).and_return(webhook_service)
|
|
allow(Twilio::JWT::AccessToken::VoiceGrant).to receive(:new).and_return(voice_grant)
|
|
allow(voice_grant).to receive(:outgoing_application_sid=)
|
|
allow(voice_grant).to receive(:outgoing_application_params=)
|
|
allow(voice_grant).to receive(:incoming_allow=)
|
|
end
|
|
|
|
it 'returns a token payload with expected keys' do
|
|
fake_token = instance_double(Twilio::JWT::AccessToken, to_jwt: 'jwt-token', add_grant: nil)
|
|
allow(Twilio::JWT::AccessToken).to receive(:new).and_return(fake_token)
|
|
|
|
payload = described_class.new(inbox: inbox, user: user, account: account).generate
|
|
|
|
expect(payload[:token]).to eq('jwt-token')
|
|
expect(payload[:identity]).to include("agent-#{user.id}")
|
|
expect(payload[:inbox_id]).to eq(inbox.id)
|
|
expect(payload[:account_id]).to eq(account.id)
|
|
expect(payload[:voice_enabled]).to be true
|
|
expect(payload[:twiml_endpoint]).to include(voice_channel.phone_number.delete_prefix('+'))
|
|
end
|
|
end
|