Exemplo n.º 1
0
 public function testTransportSendMessage()
 {
     $transport = $this->getMockBuilder('\\Thruway\\Transport\\TransportInterface')->getMock();
     $session = new \Thruway\Session($transport);
     $transport->expects($this->exactly(2))->method("sendMessage")->withConsecutive([$this->isInstanceOf('\\Thruway\\Message\\GoodbyeMessage')], [$this->isInstanceOf('\\Thruway\\Message\\GoodbyeMessage')]);
     $session->sendMessage(new \Thruway\Message\GoodbyeMessage([], "test.message"));
     $session->sendMessage(new \Thruway\Message\GoodbyeMessage([], "test.message"));
 }
Exemplo n.º 2
0
 public function testDealerFeatures()
 {
     $dealerFeatures = null;
     $session = new \Thruway\Session(new \Thruway\Transport\DummyTransport());
     $dealer = new \Thruway\Role\Dealer();
     $session->dispatcher->addRealmSubscriber($dealer);
     $welcomeMessage = new \Thruway\Message\WelcomeMessage($session->getSessionId(), new stdClass());
     $session->dispatcher->addListener('SendWelcomeMessageEvent', function (\Thruway\Event\MessageEvent $event) use(&$brokerFeatures, &$dealerFeatures) {
         $dealerFeatures = $event->message->getDetails()->roles->dealer->features;
     });
     $session->dispatchMessage($welcomeMessage, "Send");
     $this->assertInstanceOf('stdClass', $dealerFeatures);
     $this->assertTrue($dealerFeatures->caller_identification);
     $this->assertTrue($dealerFeatures->progressive_call_results);
 }
Exemplo n.º 3
0
 public function testStateRestoreWithNoQueue()
 {
     $router = new \Thruway\Peer\Router();
     $stateHandlerRegistry = new \Thruway\Subscription\StateHandlerRegistry('state.test.realm');
     $router->registerModule($stateHandlerRegistry);
     $router->start(false);
     $transportStateHandler = $this->createTransportMock();
     $registrationId = 0;
     $invocationReqId = 0;
     $subscriptionId = 0;
     $transportStateHandler->expects($this->exactly(7))->method('sendMessage')->withConsecutive([$this->isInstanceOf('\\Thruway\\Message\\WelcomeMessage')], [$this->callback(function (\Thruway\Message\RegisteredMessage $msg) use(&$registrationId) {
         $registrationId = $msg->getRegistrationId();
         return true;
     })], [$this->callback(function (\Thruway\Message\ErrorMessage $msg) {
         $this->assertEquals("No uri set for state handler registration.", $msg->getArguments()[0]);
         return true;
     })], [$this->callback(function (\Thruway\Message\ErrorMessage $msg) {
         $this->assertEquals("No handler uri set for state handler registration.", $msg->getArguments()[0]);
         return true;
     })], [$this->callback(function (\Thruway\Message\ErrorMessage $msg) {
         $this->assertEquals("No uri set for state handler registration.", $msg->getArguments()[0]);
         return true;
     })], [$this->callback(function (\Thruway\Message\ResultMessage $msg) {
         return true;
     })], [$this->callback(function (\Thruway\Message\InvocationMessage $msg) use(&$registrationId, &$invocationReqId) {
         $this->assertEquals($registrationId, $msg->getRegistrationId());
         $invocationReqId = $msg->getRequestId();
         return true;
     })]);
     $transportSubscriber = $this->createTransportMock();
     $transportSubscriber->expects($this->exactly(5))->method("sendMessage")->withConsecutive([$this->isInstanceOf('\\Thruway\\Message\\WelcomeMessage')], [$this->callback(function (\Thruway\Message\SubscribedMessage $msg) use(&$subscriptionId) {
         $subscriptionId = $msg->getSubscriptionId();
         return true;
     })], [$this->callback(function ($msg) {
         $this->assertEventMessageWithArgument0(3, $msg);
         return true;
     })], [$this->callback(function ($msg) {
         $this->assertEventMessageWithArgument0(4, $msg);
         return true;
     })], [$this->callback(function ($msg) {
         $this->assertEventMessageWithArgument0(5, $msg);
         return true;
     })]);
     $sessionStateHandler = new \Thruway\Session($transportStateHandler);
     $sessionSubscriber = new \Thruway\Session($transportSubscriber);
     $router->getEventDispatcher()->dispatch("connection_open", new \Thruway\Event\ConnectionOpenEvent($sessionStateHandler));
     $router->getEventDispatcher()->dispatch("connection_open", new \Thruway\Event\ConnectionOpenEvent($sessionSubscriber));
     $hello = new \Thruway\Message\HelloMessage('state.test.realm', (object) []);
     $sessionStateHandler->dispatchMessage($hello);
     $sessionSubscriber->dispatchMessage($hello);
     $register = new \Thruway\Message\RegisterMessage(12345, (object) [], 'my_state_handler');
     $sessionStateHandler->dispatchMessage($register);
     $call = new \Thruway\Message\CallMessage(2, (object) [], 'add_state_handler', [[]]);
     $sessionStateHandler->dispatchMessage($call);
     $call->setArguments([(object) ["uri" => "test.stateful.uri"]]);
     $sessionStateHandler->dispatchMessage($call);
     $call->setArguments([(object) ["handler_uri" => "my_state_handler"]]);
     $sessionStateHandler->dispatchMessage($call);
     $call->setArguments([(object) ["uri" => "test.stateful.uri", "handler_uri" => "my_state_handler"]]);
     $sessionStateHandler->dispatchMessage($call);
     $subscribe = new \Thruway\Message\SubscribeMessage(2, (object) [], "test.stateful.uri");
     $sessionSubscriber->dispatchMessage($subscribe);
     $yield = new \Thruway\Message\YieldMessage($invocationReqId, (object) []);
     $sessionStateHandler->dispatchMessage($yield);
     for ($i = 3; $i < 6; $i++) {
         $publish = new \Thruway\Message\PublishMessage($i, (object) [], "test.stateful.uri", [$i]);
         $publish->setPublicationId($i);
         $sessionStateHandler->dispatchMessage($publish);
     }
 }