mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-26 23:40:57 +01:00
e96c363eef
Summary: Provides a working SMS implementation with support for Twilio. This version doesn't really retry if we get any gruff at all. Future versions should retry. Test Plan: used bin/sms to send messages and look at them. Reviewers: chad, epriestley Reviewed By: epriestley Subscribers: aurelijus, epriestley, Korvin Maniphest Tasks: T920 Differential Revision: https://secure.phabricator.com/D8930
123 lines
5.7 KiB
PHP
Executable file
123 lines
5.7 KiB
PHP
Executable file
<?php
|
|
|
|
use \Mockery as m;
|
|
|
|
class MessagesTest extends PHPUnit_Framework_TestCase
|
|
{
|
|
protected $formHeaders = array('Content-Type' => 'application/x-www-form-urlencoded');
|
|
|
|
function testCreateMessage() {
|
|
$http = m::mock(new Services_Twilio_TinyHttp);
|
|
$http->shouldReceive('post')->once()
|
|
->with('/2010-04-01/Accounts/AC123/Messages.json', $this->formHeaders,
|
|
'From=%2B1222&To=%2B44123&Body=Hi+there')
|
|
->andReturn(array(200, array('Content-Type' => 'application/json'),
|
|
json_encode(array('sid' => 'SM123'))
|
|
));
|
|
$client = new Services_Twilio('AC123', '123', '2010-04-01', $http);
|
|
$msg = $client->account->messages->sendMessage('+1222', '+44123', 'Hi there');
|
|
$this->assertSame('SM123', $msg->sid);
|
|
}
|
|
|
|
function testCreateMessageWithMedia() {
|
|
$http = m::mock(new Services_Twilio_TinyHttp);
|
|
$http->shouldReceive('post')->once()
|
|
->with('/2010-04-01/Accounts/AC123/Messages.json', $this->formHeaders,
|
|
'From=%2B1222&To=%2B44123&MediaUrl=http%3A%2F%2Fexample.com%2Fimage1')
|
|
->andReturn(array(200, array('Content-Type' => 'application/json'),
|
|
json_encode(array('sid' => 'SM123'))
|
|
));
|
|
$client = new Services_Twilio('AC123', '123', '2010-04-01', $http);
|
|
$msg = $client->account->messages->sendMessage('+1222', '+44123', null,
|
|
array('http://example.com/image1'));
|
|
$this->assertSame('SM123', $msg->sid);
|
|
}
|
|
|
|
function testCreateMessageWithMediaAndBody() {
|
|
$http = m::mock(new Services_Twilio_TinyHttp);
|
|
$http->shouldReceive('post')->once()
|
|
->with('/2010-04-01/Accounts/AC123/Messages.json', $this->formHeaders,
|
|
'From=%2B1222&To=%2B44123&MediaUrl=http%3A%2F%2Fexample.com%2Fimage1&Body=Hi+there')
|
|
->andReturn(array(200, array('Content-Type' => 'application/json'),
|
|
json_encode(array('sid' => 'SM123'))
|
|
));
|
|
$client = new Services_Twilio('AC123', '123', '2010-04-01', $http);
|
|
$msg = $client->account->messages->sendMessage('+1222', '+44123', 'Hi there',
|
|
array('http://example.com/image1')
|
|
);
|
|
$this->assertSame('SM123', $msg->sid);
|
|
}
|
|
|
|
function testCreateMessageWithMultipleMedia() {
|
|
$http = m::mock(new Services_Twilio_TinyHttp);
|
|
$http->shouldReceive('post')->once()
|
|
->with('/2010-04-01/Accounts/AC123/Messages.json', $this->formHeaders,
|
|
'From=%2B1222&To=%2B44123&MediaUrl=http%3A%2F%2Fexample.com%2Fimage1&MediaUrl=http%3A%2F%2Fexample.com%2Fimage2')
|
|
->andReturn(array(200, array('Content-Type' => 'application/json'),
|
|
json_encode(array('sid' => 'SM123'))
|
|
));
|
|
$client = new Services_Twilio('AC123', '123', '2010-04-01', $http);
|
|
$msg = $client->account->messages->sendMessage('+1222', '+44123', null,
|
|
array('http://example.com/image1', 'http://example.com/image2'));
|
|
$this->assertSame('SM123', $msg->sid);
|
|
}
|
|
|
|
function testBadMessageThrowsException() {
|
|
$this->setExpectedException('Services_Twilio_RestException');
|
|
$http = m::mock(new Services_Twilio_TinyHttp);
|
|
$http->shouldReceive('post')->once()
|
|
->with('/2010-04-01/Accounts/AC123/Messages.json', $this->formHeaders,
|
|
'From=%2B1222&To=%2B44123&Body=' . str_repeat('hi', 801))
|
|
->andReturn(array(400, array('Content-Type' => 'application/json'),
|
|
json_encode(array(
|
|
'status' => '400',
|
|
'message' => 'Too long',
|
|
))
|
|
));
|
|
$client = new Services_Twilio('AC123', '123', null, $http);
|
|
$msg = $client->account->messages->sendMessage('+1222', '+44123', str_repeat('hi', 801));
|
|
}
|
|
|
|
function testRawCreate() {
|
|
$http = m::mock(new Services_Twilio_TinyHttp);
|
|
$http->shouldReceive('post')->once()
|
|
->with('/2010-04-01/Accounts/AC123/Messages.json', $this->formHeaders,
|
|
'From=%2B1222&To=%2B44123&MediaUrl=http%3A%2F%2Fexample.com%2Fimage1&MediaUrl=http%3A%2F%2Fexample.com%2Fimage2')
|
|
->andReturn(array(200, array('Content-Type' => 'application/json'),
|
|
json_encode(array('sid' => 'SM123'))
|
|
));
|
|
$client = new Services_Twilio('AC123', '123', '2010-04-01', $http);
|
|
$msg = $client->account->messages->create(array(
|
|
'From' => '+1222',
|
|
'To' => '+44123',
|
|
'MediaUrl' => array('http://example.com/image1', 'http://example.com/image2')
|
|
));
|
|
$this->assertSame('SM123', $msg->sid);
|
|
}
|
|
|
|
function testDeleteMessage() {
|
|
$http = m::mock(new Services_Twilio_TinyHttp);
|
|
$http->shouldReceive('delete')->once()
|
|
->with('/2010-04-01/Accounts/AC123/Messages/ME123.json')
|
|
->andReturn(array(204, array('Content-Type' => 'application/json'), ''
|
|
));
|
|
$client = new Services_Twilio('AC123', '123', null, $http);
|
|
$client->account->messages->delete('ME123');
|
|
}
|
|
|
|
function testNewline() {
|
|
$http = m::mock(new Services_Twilio_TinyHttp);
|
|
$http->shouldReceive('post')->once()
|
|
->with('/2010-04-01/Accounts/AC123/Messages.json', $this->formHeaders,
|
|
'Body=Hello%0A%0AHello')
|
|
->andReturn(array(200, array('Content-Type' => 'application/json'),
|
|
json_encode(array('sid' => 'SM123'))
|
|
));
|
|
$client = new Services_Twilio('AC123', '123', '2010-04-01', $http);
|
|
$msg = $client->account->messages->create(array(
|
|
'Body' => "Hello\n\nHello"
|
|
));
|
|
$this->assertSame('SM123', $msg->sid);
|
|
}
|
|
}
|
|
|