public function testCallCancelNoOptions()
{
$sessionMockBuilder = $this->getMockBuilder('\\Thruway\\Session')->setMethods(['sendMessage'])->disableOriginalConstructor();
$eeSession = $sessionMockBuilder->getMock();
$erSession = $sessionMockBuilder->getMock();
$dealer = new \Thruway\Role\Dealer();
$interruptMessage = null;
$eeSession->expects($this->exactly(3))->method('sendMessage')->withConsecutive([$this->isInstanceOf('\\Thruway\\Message\\RegisteredMessage')], [$this->isInstanceOf('\\Thruway\\Message\\InvocationMessage')], [$this->callback(function (\Thruway\Message\InterruptMessage $msg) use(&$interruptMessage) {
$interruptMessage = $msg;
return true;
})]);
$erSession->expects($this->exactly(2))->method('sendMessage')->withConsecutive([$this->callback(function (\Thruway\Message\ErrorMessage $msg) {
$this->assertEquals("wamp.error.not_supported", $msg->getErrorURI());
return true;
})], [$this->callback(function (\Thruway\Message\ErrorMessage $msg) {
$this->assertEquals("wamp.error.canceled", $msg->getErrorURI());
return true;
})]);
$registerMsg = new \Thruway\Message\RegisterMessage(12345, (object) [], 'test.procedure');
$dealer->handleRegisterMessage(new \Thruway\Event\MessageEvent($eeSession, $registerMsg));
$callMsg = new \Thruway\Message\CallMessage(1, (object) [], 'test.procedure');
$dealer->handleCallMessage(new \Thruway\Event\MessageEvent($erSession, $callMsg));
$this->assertEquals(1, $eeSession->getPendingCallCount());
$cancelMsg = new \Thruway\Message\CancelMessage(1, (object) []);
$dealer->handleCancelMessage(new \Thruway\Event\MessageEvent($erSession, $cancelMsg));
$eeSession->setHelloMessage($this->_helloMessage);
$dealer->handleCancelMessage(new \Thruway\Event\MessageEvent($erSession, $cancelMsg));
$errorMsgFromEe = \Thruway\Message\ErrorMessage::createErrorMessageFromMessage($interruptMessage);
$errorMsgFromEe->setErrorURI("wamp.error.canceled");
$dealer->handleErrorMessage(new \Thruway\Event\MessageEvent($eeSession, $errorMsgFromEe));
/** @var \Thruway\Session $eeSession */
$this->assertEquals(0, $eeSession->getPendingCallCount());
}