1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- 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
|