Example #1
0
 /**
  * @test
  */
 public function can_get_logger()
 {
     global $standardAGIStart;
     setFgetsMock($standardAGIStart, array());
     $client = \PAGI\Client\Impl\ClientImpl::getInstance($this->_properties);
     $logger = $client->getAsteriskLogger();
     $logger = $client->getAsteriskLogger();
     // should return the same instance.
 }
Example #2
0
 /**
  * @test
  */
 public function can_app()
 {
     global $standardAGIStart;
     setFgetsMock($standardAGIStart, array());
     $this->_properties['pagiClient'] = \PAGI\Client\Impl\ClientImpl::getInstance($this->_properties);
     $application = new MyPAGIApplication($this->_properties);
     $refObject = new \ReflectionObject($application);
     $refMethod = $refObject->getMethod('getAgi');
     $refMethod->setAccessible(true);
     $agi = $refMethod->invoke($application);
     $this->assertTrue($agi instanceof \PAGI\Client\Impl\ClientImpl);
 }
Example #3
0
 private function _start(array $write, \PAMI\Message\Action\ActionMessage $action)
 {
     global $mock_stream_socket_client;
     global $mock_stream_set_blocking;
     global $mockTime;
     global $standardAMIStart;
     $mock_stream_socket_client = true;
     $mock_stream_set_blocking = true;
     $options = array('log4php.properties' => RESOURCES_DIR . DIRECTORY_SEPARATOR . 'log4php.properties', 'host' => '2.3.4.5', 'scheme' => 'tcp://', 'port' => 9999, 'username' => 'asd', 'secret' => 'asd', 'connect_timeout' => 10, 'read_timeout' => 10);
     $writeLogin = array("action: Login\r\nactionid: 1432.123\r\nusername: asd\r\nsecret: asd\r\n");
     setFgetsMock($standardAMIStart, $writeLogin);
     $client = new \PAMI\Client\Impl\ClientImpl($options);
     $client->open();
     if ($action instanceof \PAMI\Message\Action\DBGetAction) {
         $event = array('Response: Success', 'EventList: start', 'ActionID: 1432.123', '', 'Event: DBGetResponse', 'ActionID: 1432.123', '');
     } else {
         $event = array('Response: Success', 'ActionID: 1432.123', '');
     }
     setFgetsMock($event, $write);
     $result = $client->send($action);
     $this->assertTrue($result instanceof \PAMI\Message\Response\ResponseMessage);
     return $client;
 }
Example #4
0
 /**
  * @test
  */
 public function can_set_callerid()
 {
     global $standardAGIStart;
     setFgetsMock($standardAGIStart, array());
     $client = \PAGI\Client\Impl\ClientImpl::getInstance($this->_properties);
     $clid = $client->getCallerId();
     $callerIdW = array('GET FULL VARIABLE "${CALLERID(name)}"', 'SET VARIABLE "CALLERID(num)" "666"', 'SET VARIABLE "CALLERID(all)" "pepe zamora<666>"', 'GET FULL VARIABLE "${CALLERID(num)}"', 'SET VARIABLE "CALLERID(name)" "pepe zamora"', 'SET VARIABLE "CALLERID(all)" "pepe zamora<666>"', 'SET VARIABLE "CALLERID(ani)" "222"', 'SET VARIABLE "CALLERID(rdnis)" "333"', 'SET VARIABLE "CALLERID(dnid)" "555"');
     $callerIdR = array('200 result=1 "pepe zamora"', '200 result=1', '200 result=1', '200 result=1 "666"', '200 result=1', '200 result=1', '200 result=1', '200 result=1', '200 result=1');
     setFgetsMock($callerIdR, $callerIdW);
     $clid->setNumber('666');
     $clid->setName('pepe zamora');
     $clid->setANI('222');
     $clid->setRDNIS('333');
     $clid->setDNID('555');
 }
Example #5
0
 /**
  * @test
  */
 public function can_amd_cause_too_long()
 {
     global $standardAGIStart;
     global $mockTime;
     global $mockTimeReturn;
     setFgetsMock($standardAGIStart, array());
     $client = \PAGI\Client\Impl\ClientImpl::getInstance($this->_properties);
     $write = array('EXEC "AMD" ",,,,,,,,"', false, false);
     $read = array('200 result=0 endpos=0', '200 result=1 (NOTSURE)', '200 result=1 (TOOLONG)');
     setFgetsMock($read, $write);
     $result = $client->amd();
     $this->assertTrue($result->isNotSure());
     $this->assertTrue($result->isCauseTooLong());
 }
Example #6
0
 /**
  * @test
  */
 public function can_report_unknown_event()
 {
     global $mock_stream_socket_client;
     global $mock_stream_set_blocking;
     global $mockTime;
     global $standardAMIStart;
     $mockTime = true;
     $mock_stream_socket_client = true;
     $mock_stream_set_blocking = true;
     $options = array('log4php.properties' => RESOURCES_DIR . DIRECTORY_SEPARATOR . 'log4php.properties', 'host' => '2.3.4.5', 'scheme' => 'tcp://', 'port' => 9999, 'username' => 'asd', 'secret' => 'asd', 'connect_timeout' => 10, 'read_timeout' => 10);
     $write = array("action: Login\r\nactionid: 1432.123\r\nusername: asd\r\nsecret: asd\r\n");
     setFgetsMock($standardAMIStart, $write);
     $client = new \PAMI\Client\Impl\ClientImpl($options);
     $client->registerEventListener(new SomeListenerClass());
     $client->open();
     $event = array('Event: MyOwnImaginaryEvent', 'Privilege: system,all', 'ChannelType: SIP', '');
     setFgetsMock($event, $event);
     for ($i = 0; $i < 4; $i++) {
         $client->process();
     }
     $this->assertTrue(SomeListenerClass::$event instanceof \PAMI\Message\Event\UnknownEvent);
 }
Example #7
0
 private function _testEvent($eventName, array $getters, array $values, array $translatedValues)
 {
     global $mock_stream_socket_client;
     global $mock_stream_set_blocking;
     global $mockTime;
     global $standardAMIStart;
     $eventClass = "\\PAMI\\Message\\Event\\" . $eventName . 'Event';
     $mockTime = true;
     $mock_stream_socket_client = true;
     $mock_stream_set_blocking = true;
     $options = array('host' => '2.3.4.5', 'scheme' => 'tcp://', 'port' => 9999, 'username' => 'asd', 'secret' => 'asd', 'connect_timeout' => 10, 'read_timeout' => 10);
     $write = array("action: Login\r\nactionid: 1432.123\r\nusername: asd\r\nsecret: asd\r\n");
     setFgetsMock($standardAMIStart, $write);
     $client = new \PAMI\Client\Impl\ClientImpl($options);
     $client->registerEventListener(new SomeListenerClass());
     $client->open();
     $message = array();
     $message[] = 'Event: ' . $eventName;
     foreach ($values as $key => $value) {
         $message[] = $key . ': ' . $value;
     }
     $message[] = '';
     setFgetsMock($message, $message);
     for ($i = 0; $i < count($message); $i++) {
         $client->process();
     }
     $event = SomeListenerClass::$event;
     foreach ($values as $key => $value) {
         if (isset($getters[$eventName][$key])) {
             $methodName = 'get' . $getters[$eventName][$key];
         } else {
             $methodName = 'get' . $key;
         }
         if (isset($translatedValues[$eventName][$key])) {
             $value = $translatedValues[$eventName][$key];
         }
         $this->assertTrue(method_exists($event, $methodName), sprintf('Method %s doesn\'t exixt in event %s', $methodName, get_class($event)));
         $this->assertEquals($event->{$methodName}(), $value, $eventName);
     }
 }
Example #8
0
 /**
  * @test
  * @group channel_vars
  * ChanVariable is sent with a channel name and with a "channel" key.
  * https://github.com/marcelog/PAMI/issues/85
  */
 public function can_get_channel_variables()
 {
     global $mock_stream_socket_client;
     global $mock_stream_set_blocking;
     global $mockTime;
     global $standardAMIStart;
     $mockTime = true;
     $mock_stream_socket_client = true;
     $mock_stream_set_blocking = true;
     $options = array('log4php.properties' => RESOURCES_DIR . DIRECTORY_SEPARATOR . 'log4php.properties', 'host' => '2.3.4.5', 'scheme' => 'tcp://', 'port' => 9999, 'username' => 'asd', 'secret' => 'asd', 'connect_timeout' => 10, 'read_timeout' => 10);
     $write = array("action: Login\r\nactionid: 1432.123\r\nusername: asd\r\nsecret: asd\r\n");
     setFgetsMock($standardAMIStart, $write);
     $client = new \PAMI\Client\Impl\ClientImpl($options);
     $client->registerEventListener(new SomeListenerClass());
     $client->open();
     $event = array('Event: Dial', 'Privilege: call,all', 'SubEvent: Begin', 'Channel: Local/0@pbx_dial_callroute_to_endpoint-00000008;2', 'Destination: SIP/jw1034-00000010', 'CallerIDNum: 1201', 'CallerIDName: <unknown>', 'ConnectedLineNum: strategy-sequential', 'ConnectedLineName: <unknown>', 'UniqueID: pbx-1439974866.33', 'DestUniqueID: pbx-1439974866.34', 'Dialstring: jw1034', 'ChanVariable: var1', 'ChanVariable: var2=value2', 'ChanVariable(Local/0@pbx_dial_callroute_to_endpoint-00000008;2): var3=value3', 'ChanVariable(Local/0@pbx_dial_callroute_to_endpoint-00000008;2): var4=value4', 'ChanVariable(Local/0@pbx_dial_callroute_to_endpoint-00000008;2): var5=value5', 'ChanVariable(SIP/jw1034-00000010): var12=value12', 'ChanVariable(SIP/jw1034-00000010): var22=value22', 'ChanVariable(SIP/jw1034-00000010): var32=value32', '');
     setFgetsMock($event, $event);
     for ($i = 0; $i < 21; $i++) {
         $client->process();
     }
     $event = SomeListenerClass::$event;
     $varChan1 = array('var1' => '', 'var2' => 'value2', 'var3' => 'value3', 'var4' => 'value4', 'var5' => 'value5');
     $varChan2 = array('var12' => 'value12', 'var22' => 'value22', 'var32' => 'value32');
     $channelVars = array('local/0@pbx_dial_callroute_to_endpoint-00000008;2' => $varChan1, 'sip/jw1034-00000010' => $varChan2);
     $this->assertEquals($varChan1, $event->getChannelVariables());
     $this->assertEquals($channelVars, $event->getAllChannelVariables());
 }
Example #9
0
 /**
  * @test
  */
 public function can_get_environment_variables()
 {
     global $standardAGIStart;
     setFgetsMock($standardAGIStart, array());
     $client = \PAGI\Client\Impl\ClientImpl::getInstance($this->_properties);
     putenv('AST_CONFIG_DIR=1');
     putenv('AST_CONFIG_FILE=2');
     putenv('AST_MODULE_DIR=3');
     putenv('AST_SPOOL_DIR=4');
     putenv('AST_MONITOR_DIR=5');
     putenv('AST_VAR_DIR=6');
     putenv('AST_DATA_DIR=7');
     putenv('AST_LOG_DIR=8');
     putenv('AST_AGI_DIR=9');
     putenv('AST_KEY_DIR=10');
     putenv('AST_RUN_DIR=11');
     $vars = $client->getChannelVariables();
     $this->assertEquals($vars->getDirectoryRun(), 11);
     $this->assertEquals($vars->getDirectoryKey(), 10);
     $this->assertEquals($vars->getDirectoryAgi(), 9);
     $this->assertEquals($vars->getDirectoryLog(), 8);
     $this->assertEquals($vars->getDirectoryData(), 7);
     $this->assertEquals($vars->getDirectoryVar(), 6);
     $this->assertEquals($vars->getDirectoryMonitor(), 5);
     $this->assertEquals($vars->getDirectorySpool(), 4);
     $this->assertEquals($vars->getDirectoryModules(), 3);
     $this->assertEquals($vars->getConfigFile(), 2);
     $this->assertEquals($vars->getDirectoryConfig(), 1);
 }
Example #10
0
 /**
  * @test
  */
 public function can_get_cdr_variables()
 {
     global $standardAGIStart;
     setFgetsMock($standardAGIStart, array());
     $client = \PAGI\Client\Impl\ClientImpl::getInstance($this->_properties);
     $cdr = $client->getCDR();
     $cdrW = array('GET FULL VARIABLE "${CDR(dcontext)}"', 'GET FULL VARIABLE "${CDR(dstchannel)}"', 'GET FULL VARIABLE "${CDR(dst)}"', 'GET FULL VARIABLE "${CDR(src)}"', 'GET FULL VARIABLE "${CDR(clid)}"', 'GET FULL VARIABLE "${CDR(channel)}"', 'GET FULL VARIABLE "${CDR(lastapp)}"', 'GET FULL VARIABLE "${CDR(lastdata)}"', 'GET FULL VARIABLE "${CDR(userfield)}"', 'GET FULL VARIABLE "${CDR(uniqueid)}"', 'GET FULL VARIABLE "${CDR(accountcode)}"', 'GET FULL VARIABLE "${CDR(amaflags)}"', 'GET FULL VARIABLE "${CDR(start)}"', 'GET FULL VARIABLE "${CDR(answer)}"', 'GET FULL VARIABLE "${CDR(end)}"', 'GET FULL VARIABLE "${CDR(duration)}"', 'GET FULL VARIABLE "${CDR(billsec)}"', 'GET FULL VARIABLE "${CDR(disposition)}"');
     $cdrR = array('200 result=1 "dcontext"', '200 result=1 "dchannel"', '200 result=1 "dst"', '200 result=1 "src"', '200 result=1 "clid"', '200 result=1 "channel"', '200 result=1 "lastapp"', '200 result=1 "lastdata"', '200 result=1 "userfield"', '200 result=1 "uniqueid"', '200 result=1 "accountcode"', '200 result=1 "amaflags"', '200 result=1 "start"', '200 result=1 "answer"', '200 result=1 "end"', '200 result=1 "duration"', '200 result=1 "billsec"', '200 result=1 "disposition"');
     setFgetsMock($cdrR, $cdrW);
     $this->assertEquals($cdr->getDestinationContext(), 'dcontext');
     $this->assertEquals($cdr->getDestinationChannel(), 'dchannel');
     $this->assertEquals($cdr->getDestination(), 'dst');
     $this->assertEquals($cdr->getSource(), 'src');
     $this->assertEquals($cdr->getCallerId(), 'clid');
     $this->assertEquals($cdr->getChannel(), 'channel');
     $this->assertEquals($cdr->getLastApp(), 'lastapp');
     $this->assertEquals($cdr->getLastAppData(), 'lastdata');
     $this->assertEquals($cdr->getUserfield(), 'userfield');
     $this->assertEquals($cdr->getUniqueId(), 'uniqueid');
     $this->assertEquals($cdr->getAccountCode(), 'accountcode');
     $this->assertEquals($cdr->getAMAFlags(), 'amaflags');
     $this->assertEquals($cdr->getStartTime(), 'start');
     $this->assertEquals($cdr->getAnswerTime(), 'answer');
     $this->assertEquals($cdr->getEndTime(), 'end');
     $this->assertEquals($cdr->getTotalLength(), 'duration');
     $this->assertEquals($cdr->getAnswerLength(), 'billsec');
     $this->assertEquals($cdr->getStatus(), 'disposition');
 }