Exemplo n.º 1
0
 public function testUnsubscribeSendingUnsubThenError()
 {
     $broker = new \Thruway\Role\Broker();
     $transport = new \Thruway\Transport\DummyTransport();
     $session = new \Thruway\Session($transport);
     $subscribeMsg = new \Thruway\Message\SubscribeMessage(123, new stdClass(), 'issue100');
     $broker->handleSubscribeMessage(new \Thruway\Event\MessageEvent($session, $subscribeMsg));
     /** @var \Thruway\Message\SubscribedMessage $msg */
     $msg = $transport->getLastMessageSent();
     $this->assertInstanceOf('\\Thruway\\Message\\SubscribedMessage', $msg);
     $this->assertEquals(123, $msg->getRequestId());
     $subId = $msg->getSubscriptionId();
     // subscribe to a second that is in a different sub group
     $subscribeMsg = new \Thruway\Message\SubscribeMessage(234, new stdClass(), 'issue100_again');
     $broker->handleSubscribeMessage(new \Thruway\Event\MessageEvent($session, $subscribeMsg));
     /** @var \Thruway\Message\SubscribedMessage $msg */
     $msg = $transport->getLastMessageSent();
     $this->assertInstanceOf('\\Thruway\\Message\\SubscribedMessage', $msg);
     $this->assertEquals(234, $msg->getRequestId());
     $subId2 = $msg->getSubscriptionId();
     // unsubscribe from the first
     $unsubscribeMsg = new \Thruway\Message\UnsubscribeMessage(456, $subId);
     $broker->handleUnsubscribeMessage(new \Thruway\Event\MessageEvent($session, $unsubscribeMsg));
     /** @var \Thruway\Message\UnsubscribedMessage $unsubedMsg */
     $unsubedMsg = $transport->getLastMessageSent();
     $this->assertInstanceOf('\\Thruway\\Message\\UnsubscribedMessage', $unsubedMsg);
     $this->assertEquals(456, $unsubedMsg->getRequestId());
     // try unsubscribing again
     $unsubscribeMsg = new \Thruway\Message\UnsubscribeMessage(789, $subId);
     $broker->handleUnsubscribeMessage(new \Thruway\Event\MessageEvent($session, $unsubscribeMsg));
     /** @var \Thruway\Message\ErrorMessage $unsubedErrMsg */
     $unsubedErrMsg = $transport->getLastMessageSent();
     $this->assertInstanceOf('\\Thruway\\Message\\ErrorMessage', $unsubedErrMsg);
     $this->assertEquals(\Thruway\Message\Message::MSG_UNSUBSCRIBE, $unsubedErrMsg->getErrorMsgCode());
     $this->assertEquals(789, $unsubedErrMsg->getRequestId());
 }
Exemplo n.º 2
0
 public function testRemoveRegistration()
 {
     $transport = $this->getMockBuilder('\\Thruway\\Transport\\TransportInterface')->getMock();
     $transport->expects($this->any())->method("getTransportDetails")->will($this->returnValue(""));
     $session = $this->getMockBuilder('\\Thruway\\Session')->setMethods(["sendMessage"])->setConstructorArgs([$transport])->getMock();
     /** @var $session \Thruway\Session */
     $session->setRealm(new \Thruway\Realm("testrealm"));
     $broker = new \Thruway\Role\Broker();
     $subscribeMsg = new \Thruway\Message\SubscribeMessage(\Thruway\Common\Utils::getUniqueId(), [], "test.topic");
     $messageEvent = new \Thruway\Event\MessageEvent($session, $subscribeMsg);
     $broker->handleSubscribeMessage($messageEvent);
     $subscriptions = $broker->getSubscriptions();
     $this->assertTrue(count($subscriptions) === 1);
     $subscriptions = array_values($subscriptions);
     $messageEvent = new \Thruway\Event\MessageEvent($session, new \Thruway\Message\UnsubscribeMessage(\Thruway\Common\Utils::getUniqueId(), $subscriptions[0]->getId()));
     $broker->handleUnsubscribeMessage($messageEvent);
     $this->assertTrue(count($broker->getSubscriptions()) === 0);
 }