72 lines
2.4 KiB
Ruby
72 lines
2.4 KiB
Ruby
|
require 'rails_helper'
|
||
|
|
||
|
RSpec.describe Channel::Driver::Sms::Twilio do
|
||
|
it 'passes' do
|
||
|
channel = create_channel
|
||
|
|
||
|
stub_request(:post, url_to_mock)
|
||
|
.to_return(body: mocked_response_success)
|
||
|
|
||
|
api = channel.driver_instance.new
|
||
|
expect(api.send(channel.options, { recipient: '+37060010000', message: message_body })).to be true
|
||
|
end
|
||
|
|
||
|
it 'fails' do
|
||
|
channel = create_channel
|
||
|
|
||
|
stub_request(:post, url_to_mock)
|
||
|
.to_return(status: 400, body: mocked_response_failure)
|
||
|
|
||
|
api = channel.driver_instance.new
|
||
|
|
||
|
expect { api.send(channel.options, { recipient: 'asd', message: message_body }) }.to raise_exception(Twilio::REST::RestError)
|
||
|
expect(a_request(:post, url_to_mock)).to have_been_made
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
def create_channel
|
||
|
FactoryBot.create(:channel,
|
||
|
options: {
|
||
|
account_id: account_id,
|
||
|
adapter: 'sms/twilio',
|
||
|
sender: sender_number,
|
||
|
token: token
|
||
|
},
|
||
|
created_by_id: 1,
|
||
|
updated_by_id: 1)
|
||
|
end
|
||
|
|
||
|
# api parameters
|
||
|
|
||
|
def url_to_mock
|
||
|
"https://api.twilio.com/2010-04-01/Accounts/#{account_id}/Messages.json"
|
||
|
end
|
||
|
|
||
|
def account_id
|
||
|
'ASDASDAS3213424AD'
|
||
|
end
|
||
|
|
||
|
def message_body
|
||
|
'Test'
|
||
|
end
|
||
|
|
||
|
def sender_number
|
||
|
'+15005550006'
|
||
|
end
|
||
|
|
||
|
def token
|
||
|
'2345r4erfdvc4wedxv3efds'
|
||
|
end
|
||
|
|
||
|
# mocked responses
|
||
|
|
||
|
def mocked_response_success
|
||
|
'{"sid": "SM07eab0404df148a4bf3712cb8b72e4c2", "date_created": "Fri, 01 Jun 2018 06:11:19 +0000", "date_updated": "Fri, 01 Jun 2018 06:11:19 +0000", "date_sent": null, "account_sid": "AC5989ff24c08f701b8b1ef09e1b79cbf8", "to": "+37060010000", "from": "+15005550006", "messaging_service_sid": null, "body": "Sent from your Twilio trial account - Test", "status": "queued", "num_segments": "1", "num_media": "0", "direction": "outbound-api", "api_version": "2010-04-01", "price": null, "price_unit": "USD", "error_code": null, "error_message": null, "uri": "/2010-04-01/Accounts/AC5989ff24c08f701b8b1ef09e1b79cbf8/Messages/SM07eab0404df148a4bf3712cb8b72e4c2.json", "subresource_uris": {"media": "/2010-04-01/Accounts/AC5989ff24c08f701b8b1ef09e1b79cbf8/Messages/SM07eab0404df148a4bf3712cb8b72e4c2/Media.json"}}'
|
||
|
end
|
||
|
|
||
|
def mocked_response_failure
|
||
|
'{"code": 21211, "message": "The \'To\' number asd is not a valid phone number.", "more_info": "https://www.twilio.com/docs/errors/21211", "status": 400}'
|
||
|
end
|
||
|
end
|