378 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			378 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| use \Mockery as m;
 | |
| 
 | |
| require_once 'Twilio/Twiml.php';
 | |
| 
 | |
| class TwimlTest extends PHPUnit_Framework_TestCase {
 | |
| 
 | |
|     function tearDown() {
 | |
|         m::close();
 | |
|     }
 | |
|     
 | |
|     function testEmptyResponse() {
 | |
|         $r = new Services_Twilio_Twiml();
 | |
|         $expected = '<Response></Response>';
 | |
|         $this->assertXmlStringEqualsXmlString($expected, $r,
 | |
|             "Should be an empty response");
 | |
|     }
 | |
|     
 | |
|     public function testSayBasic() {   
 | |
|         $r = new Services_Twilio_Twiml();
 | |
|         $r->say("Hello Monkey");
 | |
|         $expected = '<Response><Say>Hello Monkey</Say></Response>';
 | |
|         $this->assertXmlStringEqualsXmlString($expected, $r);
 | |
|     }
 | |
|     
 | |
|     public function testSayLoopThree() {
 | |
|         $r = new Services_Twilio_Twiml();
 | |
|         $r->say("Hello Monkey", array("loop" => 3));
 | |
|         $expected = '<Response><Say loop="3">Hello Monkey</Say></Response>';
 | |
|         $this->assertXmlStringEqualsXmlString($expected, $r);
 | |
|     }
 | |
|     
 | |
|     public function testSayLoopThreeWoman() {
 | |
|         $r = new Services_Twilio_Twiml();
 | |
|         $r->say("Hello Monkey", array("loop" => 3, "voice"=>"woman"));
 | |
|         $expected = '<Response><Say loop="3" voice="woman">'
 | |
|             . 'Hello Monkey</Say></Response>';
 | |
|         $this->assertXmlStringEqualsXmlString($expected, $r);
 | |
|     }
 | |
|     
 | |
|     public function testSayConvienceMethod() {
 | |
|         $r = new Services_Twilio_Twiml();
 | |
|         $r->say("Hello Monkey", array("language" => "fr"));
 | |
|         $expected = '<Response><Say language="fr">'
 | |
|             . 'Hello Monkey</Say></Response>';
 | |
|         $this->assertXmlStringEqualsXmlString($expected, $r);
 | |
|     }
 | |
|     
 | |
|     public function testSayUTF8() {
 | |
|         $r = new Services_Twilio_Twiml();
 | |
|         $r->say("é tü & må");
 | |
|         $expected = '<Response><Say>'
 | |
|             . 'é tü & må</Say></Response>';
 | |
|         $this->assertXmlStringEqualsXmlString($expected, $r);
 | |
|     }
 | |
|     
 | |
|     public function testSayNamedEntities() {
 | |
|         $r = new Services_Twilio_Twiml();
 | |
|         $r->say("é tü & må");
 | |
|         $expected = '<Response><Say>'
 | |
|             . 'é tü & må</Say></Response>';
 | |
|         $this->assertXmlStringEqualsXmlString($expected, $r);
 | |
|     }
 | |
|     
 | |
|     public function testSayNumericEntities() {
 | |
|         $r = new Services_Twilio_Twiml();
 | |
|         $r->say("é tü & må");
 | |
|         $expected = '<Response><Say>'
 | |
|             . 'é tü & må</Say></Response>';
 | |
|         $this->assertXmlStringEqualsXmlString($expected, $r);
 | |
|     }
 | |
|     
 | |
|     public function testPlayBasic() {   
 | |
|         $r = new Services_Twilio_Twiml();
 | |
|         $r->play("hello-monkey.mp3");
 | |
|         $expected = '<Response><Play>hello-monkey.mp3</Play></Response>';
 | |
|         $this->assertXmlStringEqualsXmlString($expected, $r);
 | |
|     }
 | |
|     
 | |
|     public function testPlayLoopThree() {
 | |
|         $r = new Services_Twilio_Twiml();
 | |
|         $r->play("hello-monkey.mp3", array("loop" => 3));
 | |
|         $expected = '<Response><Play loop="3">'
 | |
|             . 'hello-monkey.mp3</Play></Response>';
 | |
|         $this->assertXmlStringEqualsXmlString($expected, $r);
 | |
|     }
 | |
|     
 | |
|     public function testPlayConvienceMethod() {
 | |
|         $r = new Services_Twilio_Twiml();
 | |
|         $r->play("hello-monkey.mp3", array("loop" => 3));
 | |
|         $expected = '<Response><Play loop="3">'
 | |
|             . 'hello-monkey.mp3</Play></Response>';
 | |
|         $this->assertXmlStringEqualsXmlString($expected, $r);
 | |
|     }
 | |
| 
 | |
|     //Test Record Verb
 | |
|     public function testRecord() {   
 | |
|         $r = new Services_Twilio_Twiml();
 | |
|         $r->record();
 | |
|         $expected = '<Response><Record></Record></Response>';
 | |
|         $this->assertXmlStringEqualsXmlString($expected, $r);
 | |
|     }
 | |
|     
 | |
|     public function testRecordActionMethod() {   
 | |
|         $r = new Services_Twilio_Twiml();
 | |
|         $r->record(array("action" => "example.com", "method" => "GET"));
 | |
|         $expected = '<Response><Record action="example.com" '
 | |
|             . 'method="GET"></Record></Response>';
 | |
|         $this->assertXmlStringEqualsXmlString($expected, $r);
 | |
|     }
 | |
| 
 | |
|     public function testBooleanBecomesString() {   
 | |
|         $r = new Services_Twilio_Twiml();
 | |
|         $r->record(array("transcribe" => true));
 | |
|         $expected = '<Response><Record transcribe="true" '
 | |
|             . '></Record></Response>';
 | |
|         $this->assertXmlStringEqualsXmlString($expected, $r);
 | |
|     }
 | |
|     
 | |
|     public function testRecordMaxLengthKeyTimeout(){
 | |
|         $r = new Services_Twilio_Twiml();
 | |
|         $r->record(array("timeout" => 4, "finishOnKey" => "#", 
 | |
|             "maxLength" => 30));
 | |
|         $expected = '<Response><Record timeout="4" finishOnKey="#" '
 | |
|             . 'maxLength="30"></Record></Response>';
 | |
|         $this->assertXmlStringEqualsXmlString($expected, $r);
 | |
|     }
 | |
|     
 | |
|     public function testRecordConvienceMethod(){
 | |
|         $r = new Services_Twilio_Twiml();
 | |
|         $r->record(array("transcribeCallback" => "example.com"));
 | |
|         $expected = '<Response><Record '
 | |
|             . 'transcribeCallback="example.com"></Record></Response>';
 | |
|         $this->assertXmlStringEqualsXmlString($expected, $r);
 | |
|     }
 | |
|     
 | |
|     public function testRecordAddAttribute(){
 | |
|         $r = new Services_Twilio_Twiml();
 | |
|         $r->record(array("foo" => "bar"));
 | |
|         $expected = '<Response><Record foo="bar"></Record></Response>';
 | |
|         $this->assertXmlStringEqualsXmlString($expected, $r);
 | |
|     }
 | |
|     
 | |
|     //Test Redirect Verb
 | |
|     public function testRedirect() {
 | |
|         $r = new Services_Twilio_Twiml();
 | |
|         $r->redirect();
 | |
|         $expected = '<Response><Redirect></Redirect></Response>';
 | |
|         $this->assertXmlStringEqualsXmlString($expected, $r);
 | |
|     }
 | |
| 
 | |
|     public function testAmpersandEscaping() {
 | |
|         $r = new Services_Twilio_Twiml();
 | |
|         $test_amp = "test&two&three";
 | |
|         $r->redirect($test_amp);
 | |
|         $expected = '<Response><Redirect>' .
 | |
|             'test&two&three</Redirect></Response>';
 | |
|         $this->assertXmlStringEqualsXmlString($expected, $r);
 | |
|     }
 | |
| 
 | |
|     public function testRedirectConvience() {
 | |
|         $r = new Services_Twilio_Twiml();
 | |
|         $r->redirect();
 | |
|         $expected = '<Response><Redirect></Redirect></Response>';
 | |
|         $this->assertXmlStringEqualsXmlString($expected, $r);
 | |
|     }
 | |
|     public function testRedirectAddAttribute(){
 | |
|         $r = new Services_Twilio_Twiml();
 | |
|         $r->redirect(array("foo" => "bar"));
 | |
|         $expected = '<Response><Redirect foo="bar"></Redirect></Response>';
 | |
|         $this->assertXmlStringEqualsXmlString($expected, $r);
 | |
|     }
 | |
| 
 | |
|     //Test Hangup Verb
 | |
|     public function testHangup() {
 | |
|         $r = new Services_Twilio_Twiml();
 | |
|         $r->hangup();
 | |
|         $expected = '<Response><Hangup></Hangup></Response>';
 | |
|         $this->assertXmlStringEqualsXmlString($expected, $r);
 | |
|     }
 | |
|     
 | |
|     public function testHangupConvience() {
 | |
|         $r = new Services_Twilio_Twiml();
 | |
|         $r->hangup();
 | |
|         $expected = '<Response><Hangup></Hangup></Response>';
 | |
|         $this->assertXmlStringEqualsXmlString($expected, $r);
 | |
|     }
 | |
|     
 | |
|     public function testHangupAddAttribute(){
 | |
|         $r = new Services_Twilio_Twiml();
 | |
|         $r->hangup(array("foo" => "bar"));
 | |
|         $expected = '<Response><Hangup foo="bar"></Hangup></Response>';
 | |
|         $this->assertXmlStringEqualsXmlString($expected, $r);
 | |
|     }
 | |
|     
 | |
|     //Test Pause Verb
 | |
|     public function testPause() {
 | |
|         $r = new Services_Twilio_Twiml();
 | |
|         $r->pause();
 | |
|         $expected = '<Response><Pause></Pause></Response>';
 | |
|         $this->assertXmlStringEqualsXmlString($expected, $r);
 | |
|     }
 | |
|     
 | |
|     public function testPauseConvience() {
 | |
|         $r = new Services_Twilio_Twiml();
 | |
|         $r->pause();
 | |
|         $expected = '<Response><Pause></Pause></Response>';
 | |
|         $this->assertXmlStringEqualsXmlString($expected, $r);
 | |
|     }
 | |
|     
 | |
|     public function testPauseAddAttribute(){
 | |
|         $r = new Services_Twilio_Twiml();
 | |
|         $r->pause(array("foo" => "bar"));
 | |
|         $expected = '<Response><Pause foo="bar"></Pause></Response>';
 | |
|         $this->assertXmlStringEqualsXmlString($expected, $r);
 | |
|     }
 | |
|     
 | |
|     //Test Dial Verb
 | |
|     public function testDial() {
 | |
|         $r = new Services_Twilio_Twiml();
 | |
|         $r->dial("1231231234");
 | |
|         $expected = '<Response><Dial>1231231234</Dial></Response>';
 | |
|         $this->assertXmlStringEqualsXmlString($expected, $r);
 | |
|     }
 | |
|     
 | |
|     public function testDialConvience() {
 | |
|         $r = new Services_Twilio_Twiml();
 | |
|         $r->dial();
 | |
|         $expected = '<Response><Dial></Dial></Response>';
 | |
|         $this->assertXmlStringEqualsXmlString($expected, $r);
 | |
|     }
 | |
|     
 | |
|     public function testDialAddNumber() {
 | |
|         $r = new Services_Twilio_Twiml();
 | |
|         $d = $r->dial();
 | |
|         $d->number("1231231234");
 | |
|         $expected = '<Response><Dial><Number>'
 | |
|             . '1231231234</Number></Dial></Response>';
 | |
|         $this->assertXmlStringEqualsXmlString($expected, $r);
 | |
|     }
 | |
|     
 | |
|     public function testDialAddConference() {
 | |
|         $r = new Services_Twilio_Twiml();
 | |
|         $d = $r->dial();
 | |
|         $d->conference("MyRoom");
 | |
|         $expected = '<Response><Dial><Conference>'
 | |
|             . 'MyRoom</Conference></Dial></Response>';
 | |
|         $this->assertXmlStringEqualsXmlString($expected, $r);
 | |
|     }
 | |
|     
 | |
|     public function testDialAddConferenceConvience() {
 | |
|         $r = new Services_Twilio_Twiml();
 | |
|         $d = $r->dial();
 | |
|         $d->conference("MyRoom", array("startConferenceOnEnter" => "false"));
 | |
|         $expected = '<Response><Dial><Conference startConferenceOnEnter='
 | |
|             . '"false">MyRoom</Conference></Dial></Response>';
 | |
|         $this->assertXmlStringEqualsXmlString($expected, $r);
 | |
|     }
 | |
|     
 | |
|     public function testDialAddAttribute() {
 | |
|         $r = new Services_Twilio_Twiml();
 | |
|         $r->dial(array("foo" => "bar"));
 | |
|         $expected = '<Response><Dial foo="bar"></Dial></Response>';
 | |
|         $this->assertXmlStringEqualsXmlString($expected, $r);
 | |
|     }
 | |
|     
 | |
|     //Test Gather Verb
 | |
|     public function testGather() {
 | |
|         $r = new Services_Twilio_Twiml();
 | |
|         $r->gather();
 | |
|         $expected = '<Response><Gather></Gather></Response>';
 | |
|         $this->assertXmlStringEqualsXmlString($expected, $r);
 | |
|     }
 | |
|     
 | |
|     public function testGatherMethodAction(){
 | |
|         $r = new Services_Twilio_Twiml();
 | |
|         $r->gather(array("action"=>"example.com", "method"=>"GET"));
 | |
|         $expected = '<Response><Gather action="example.com" '
 | |
|             . 'method="GET"></Gather></Response>';
 | |
|         $this->assertXmlStringEqualsXmlString($expected, $r);
 | |
|     }
 | |
|     
 | |
|     public function testGatherActionWithParams(){
 | |
|         $r = new Services_Twilio_Twiml(); 
 | |
|         $r->gather(array("action" => "record.php?action=recordPageNow"
 | |
|             . "&id=4&page=3")); 
 | |
|         $expected = '<Response><Gather action="record.php?action='
 | |
|             . 'recordPageNow&id=4&page=3"></Gather></Response>';
 | |
|         $this->assertXmlStringEqualsXmlString($expected, $r);
 | |
|     }
 | |
|     
 | |
|     public function testGatherNestedVerbs(){
 | |
|         $r = new Services_Twilio_Twiml();
 | |
|         $g = $r->gather(array("action"=>"example.com", "method"=>"GET"));
 | |
|         $g->say("Hello World");
 | |
|         $g->play("helloworld.mp3");
 | |
|         $g->pause();
 | |
|         $expected = '
 | |
|             <Response>
 | |
|                 <Gather action="example.com" method="GET">
 | |
|                     <Say>Hello World</Say>
 | |
|                     <Play>helloworld.mp3</Play>
 | |
|                     <Pause></Pause>
 | |
|                 </Gather>
 | |
|             </Response>';
 | |
|         $this->assertXmlStringEqualsXmlString($expected, $r);
 | |
|     }
 | |
|     
 | |
|     public function testGatherNestedVerbsConvienceMethods(){
 | |
|         $r = new Services_Twilio_Twiml();
 | |
|         $g = $r->gather(array("action"=>"example.com", "method"=>"GET"));
 | |
|         $g->say("Hello World");
 | |
|         $g->play("helloworld.mp3");
 | |
|         $g->pause();
 | |
|         $expected = '
 | |
|             <Response>
 | |
|                 <Gather action="example.com" method="GET">
 | |
|                     <Say>Hello World</Say>
 | |
|                     <Play>helloworld.mp3</Play>
 | |
|                     <Pause></Pause>
 | |
|                 </Gather>
 | |
|             </Response>';
 | |
|         $this->assertXmlStringEqualsXmlString($expected, $r);
 | |
|     }
 | |
|     
 | |
|     public function testGatherAddAttribute(){
 | |
|         $r = new Services_Twilio_Twiml();
 | |
|         $r->gather(array("foo" => "bar"));
 | |
|         $expected = '<Response><Gather foo="bar"></Gather></Response>';
 | |
|         $this->assertXmlStringEqualsXmlString($expected, $r);
 | |
|     }
 | |
|     
 | |
|     public function testSms() {
 | |
|         $r = new Services_Twilio_Twiml();
 | |
|         $r->sms("Hello World");
 | |
|         $expected = '<Response><Sms>Hello World</Sms></Response>';
 | |
|         $this->assertXmlStringEqualsXmlString($expected, $r);
 | |
|     }
 | |
|     
 | |
|     public function testSmsConvience() {
 | |
|         $r = new Services_Twilio_Twiml();
 | |
|         $r->sms("Hello World");
 | |
|         $expected = '<Response><Sms>Hello World</Sms></Response>';
 | |
|         $this->assertXmlStringEqualsXmlString($expected, $r);
 | |
|     }
 | |
|     
 | |
|     public function testSmsAddAttribute() {
 | |
|         $r = new Services_Twilio_Twiml();
 | |
|         $r->sms(array("foo" => "bar"));
 | |
|         $expected = '<Response><Sms foo="bar"></Sms></Response>';
 | |
|         $this->assertXmlStringEqualsXmlString($expected, $r);
 | |
|     }
 | |
|     
 | |
|     public function testReject() {
 | |
|         $r = new Services_Twilio_Twiml();
 | |
|         $r->reject();
 | |
|         $expected = '<Response><Reject></Reject></Response>';
 | |
|         $this->assertXmlStringEqualsXmlString($expected, $r);
 | |
|     }
 | |
| 
 | |
|     function testGeneration() {
 | |
| 
 | |
|         $r = new Services_Twilio_Twiml();
 | |
|         $r->say('hello');
 | |
|         $r->dial()->number('123', array('sendDigits' => '456'));
 | |
|         $r->gather(array('timeout' => 15));
 | |
| 
 | |
|         $doc = simplexml_load_string($r);
 | |
|         $this->assertEquals('Response', $doc->getName());
 | |
|         $this->assertEquals('hello', (string) $doc->Say);
 | |
|         $this->assertEquals('456', (string) $doc->Dial->Number['sendDigits']);
 | |
|         $this->assertEquals('123', (string) $doc->Dial->Number);
 | |
|         $this->assertEquals('15', (string) $doc->Gather['timeout']);
 | |
|     }
 | |
| 
 | |
| }
 | 
