Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
<?php /** * This file is part of the Phalcon Framework. * * (c) Phalcon Team <team@pha..
Decoded Output download
<?php
/**
* This file is part of the Phalcon Framework.
*
* (c) Phalcon Team <[email protected]>
*
* For the full copyright and license information, please view the LICENSE.txt
* file that was distributed with this source code.
*/
declare(strict_types=1);
namespace Phalcon\Tests\Integration\Mvc\Dispatcher\Refactor;
use Exception;
use IntegrationTester;
use Phalcon\Tests\Integration\Mvc\Dispatcher\Helper\BaseDispatcher;
/**
* Class DispatcherAfterDispatchCest
*
* @package Phalcon\Tests\Integration\Mvc\Dispatcher
* @todo: refactor
*/
class DispatcherAfterDispatchCest extends BaseDispatcher
{
/**
* Tests the forwarding in the afterDispatch event
*
* @author Mark Johnson <https://github.com/virgofx>
* @since 2017-10-07
*/
public function testAfterDispatchForwardOnce(IntegrationTester $I)
{
$forwarded = false;
$dispatcher = $this->getDispatcher();
$dispatcher->getEventsManager()->attach(
'dispatch:afterDispatch',
function ($event, $dispatcher) use (&$forwarded) {
if ($forwarded === false) {
$dispatcher->forward(['action' => 'index2']);
$forwarded = true;
}
}
);
$dispatcher->dispatch();
$expected = [
'beforeDispatchLoop',
'beforeDispatch',
'beforeExecuteRoute',
'beforeExecuteRoute-method',
'initialize-method',
'afterInitialize',
'indexAction',
'afterExecuteRoute',
'afterExecuteRoute-method',
'afterDispatch',
'beforeDispatch',
'beforeExecuteRoute',
'beforeExecuteRoute-method',
'index2Action',
'afterExecuteRoute',
'afterExecuteRoute-method',
'afterDispatch',
'afterDispatchLoop',
];
$actual = $this->getDispatcherListener()->getTrace();
$I->assertEquals($expected, $actual);
}
/**
* Tests returning <tt>false</tt> inside a afterDispatch event.
*
* @author Mark Johnson <https://github.com/virgofx>
* @since 2017-10-07
*/
public function testAfterDispatchReturnFalse(IntegrationTester $I)
{
$dispatcher = $this->getDispatcher();
$dispatcherListener = $this->getDispatcherListener();
$dispatcher->getEventsManager()->attach(
'dispatch:afterDispatch',
function () use ($dispatcherListener) {
$dispatcherListener->trace('afterDispatch: custom return false');
return false;
}
);
$dispatcher->dispatch();
$expected = [
'beforeDispatchLoop',
'beforeDispatch',
'beforeExecuteRoute',
'beforeExecuteRoute-method',
'initialize-method',
'afterInitialize',
'indexAction',
'afterExecuteRoute',
'afterExecuteRoute-method',
'afterDispatch',
'afterDispatch: custom return false',
'afterDispatchLoop',
];
$actual = $this->getDispatcherListener()->getTrace();
$I->assertEquals($expected, $actual);
}
/**
* Tests exception handling to ensure exceptions can be properly handled
* when thrown from inside an "afterDispatch" event and then ensure the
* exception is not bubbled when returning with <tt>false</tt>.
*
* @author Mark Johnson <https://github.com/virgofx>
* @since 2017-10-07
*/
public function testAfterDispatchWithBeforeExceptionReturningFalse(IntegrationTester $I)
{
$dispatcher = $this->getDispatcher();
$dispatcher->getEventsManager()->attach(
'dispatch:afterDispatch',
function () {
throw new Exception('afterDispatch exception occurred');
}
);
$dispatcher->getEventsManager()->attach(
'dispatch:beforeException',
function () {
return false;
}
);
$dispatcher->dispatch();
$expected = [
'beforeDispatchLoop',
'beforeDispatch',
'beforeExecuteRoute',
'beforeExecuteRoute-method',
'initialize-method',
'afterInitialize',
'indexAction',
'afterExecuteRoute',
'afterExecuteRoute-method',
'afterDispatch',
'beforeException: afterDispatch exception occurred',
'afterDispatchLoop',
];
$actual = $this->getDispatcherListener()->getTrace();
$I->assertEquals($expected, $actual);
}
/**
* Tests exception handling to ensure exceptions can be properly handled
* via beforeException event and then will properly bubble up the stack if
* anything other than <tt>false</tt> is returned.
*
* @author Mark Johnson <https://github.com/virgofx>
* @since 2017-10-07
*/
public function testAfterDispatchWithBeforeExceptionBubble(IntegrationTester $I)
{
$dispatcher = $this->getDispatcher();
$dispatcherListener = $this->getDispatcherListener();
$dispatcher->getEventsManager()->attach(
'dispatch:afterDispatch',
function () {
throw new Exception('afterDispatch exception occurred');
}
);
$dispatcher->getEventsManager()->attach(
'dispatch:beforeException',
function () use ($dispatcherListener) {
$dispatcherListener->trace('beforeException: custom before exception bubble');
return null;
}
);
$I->expectThrowable(
Exception::class,
function () use ($dispatcher) {
$dispatcher->dispatch();
}
);
$expected = [
'beforeDispatchLoop',
'beforeDispatch',
'beforeExecuteRoute',
'beforeExecuteRoute-method',
'initialize-method',
'afterInitialize',
'indexAction',
'afterExecuteRoute',
'afterExecuteRoute-method',
'afterDispatch',
'beforeException: afterDispatch exception occurred',
'beforeException: custom before exception bubble',
];
$actual = $this->getDispatcherListener()->getTrace();
$I->assertEquals($expected, $actual);
}
/**
* Tests dispatch forward handling inside the beforeException when a
* afterDispatch exception occurs.
*
* @author Mark Johnson <https://github.com/virgofx>
* @since 2017-10-07
*/
public function testAfterDispatchWithBeforeExceptionForwardOnce(IntegrationTester $I)
{
$forwarded = false;
$dispatcher = $this->getDispatcher();
$dispatcherListener = $this->getDispatcherListener();
$dispatcher->getEventsManager()->attach(
'dispatch:afterDispatch',
function () use (&$forwarded) {
if ($forwarded === false) {
$forwarded = true;
throw new Exception('afterDispatch exception occurred');
}
}
);
$dispatcher->getEventsManager()->attach(
'dispatch:beforeException',
function ($event, $dispatcher) use ($dispatcherListener) {
$dispatcherListener->trace('beforeException: custom before exception forward');
$dispatcher->forward(['action' => 'index2']);
}
);
$dispatcher->dispatch();
$expected = [
'beforeDispatchLoop',
'beforeDispatch',
'beforeExecuteRoute',
'beforeExecuteRoute-method',
'initialize-method',
'afterInitialize',
'indexAction',
'afterExecuteRoute',
'afterExecuteRoute-method',
'afterDispatch',
'beforeException: afterDispatch exception occurred',
'beforeException: custom before exception forward',
'beforeDispatch',
'beforeExecuteRoute',
'beforeExecuteRoute-method',
'index2Action',
'afterExecuteRoute',
'afterExecuteRoute-method',
'afterDispatch',
'afterDispatchLoop',
];
$actual = $this->getDispatcherListener()->getTrace();
$I->assertEquals($expected, $actual);
}
}
?>
Did this file decode correctly?
Original Code
<?php
/**
* This file is part of the Phalcon Framework.
*
* (c) Phalcon Team <[email protected]>
*
* For the full copyright and license information, please view the LICENSE.txt
* file that was distributed with this source code.
*/
declare(strict_types=1);
namespace Phalcon\Tests\Integration\Mvc\Dispatcher\Refactor;
use Exception;
use IntegrationTester;
use Phalcon\Tests\Integration\Mvc\Dispatcher\Helper\BaseDispatcher;
/**
* Class DispatcherAfterDispatchCest
*
* @package Phalcon\Tests\Integration\Mvc\Dispatcher
* @todo: refactor
*/
class DispatcherAfterDispatchCest extends BaseDispatcher
{
/**
* Tests the forwarding in the afterDispatch event
*
* @author Mark Johnson <https://github.com/virgofx>
* @since 2017-10-07
*/
public function testAfterDispatchForwardOnce(IntegrationTester $I)
{
$forwarded = false;
$dispatcher = $this->getDispatcher();
$dispatcher->getEventsManager()->attach(
'dispatch:afterDispatch',
function ($event, $dispatcher) use (&$forwarded) {
if ($forwarded === false) {
$dispatcher->forward(['action' => 'index2']);
$forwarded = true;
}
}
);
$dispatcher->dispatch();
$expected = [
'beforeDispatchLoop',
'beforeDispatch',
'beforeExecuteRoute',
'beforeExecuteRoute-method',
'initialize-method',
'afterInitialize',
'indexAction',
'afterExecuteRoute',
'afterExecuteRoute-method',
'afterDispatch',
'beforeDispatch',
'beforeExecuteRoute',
'beforeExecuteRoute-method',
'index2Action',
'afterExecuteRoute',
'afterExecuteRoute-method',
'afterDispatch',
'afterDispatchLoop',
];
$actual = $this->getDispatcherListener()->getTrace();
$I->assertEquals($expected, $actual);
}
/**
* Tests returning <tt>false</tt> inside a afterDispatch event.
*
* @author Mark Johnson <https://github.com/virgofx>
* @since 2017-10-07
*/
public function testAfterDispatchReturnFalse(IntegrationTester $I)
{
$dispatcher = $this->getDispatcher();
$dispatcherListener = $this->getDispatcherListener();
$dispatcher->getEventsManager()->attach(
'dispatch:afterDispatch',
function () use ($dispatcherListener) {
$dispatcherListener->trace('afterDispatch: custom return false');
return false;
}
);
$dispatcher->dispatch();
$expected = [
'beforeDispatchLoop',
'beforeDispatch',
'beforeExecuteRoute',
'beforeExecuteRoute-method',
'initialize-method',
'afterInitialize',
'indexAction',
'afterExecuteRoute',
'afterExecuteRoute-method',
'afterDispatch',
'afterDispatch: custom return false',
'afterDispatchLoop',
];
$actual = $this->getDispatcherListener()->getTrace();
$I->assertEquals($expected, $actual);
}
/**
* Tests exception handling to ensure exceptions can be properly handled
* when thrown from inside an "afterDispatch" event and then ensure the
* exception is not bubbled when returning with <tt>false</tt>.
*
* @author Mark Johnson <https://github.com/virgofx>
* @since 2017-10-07
*/
public function testAfterDispatchWithBeforeExceptionReturningFalse(IntegrationTester $I)
{
$dispatcher = $this->getDispatcher();
$dispatcher->getEventsManager()->attach(
'dispatch:afterDispatch',
function () {
throw new Exception('afterDispatch exception occurred');
}
);
$dispatcher->getEventsManager()->attach(
'dispatch:beforeException',
function () {
return false;
}
);
$dispatcher->dispatch();
$expected = [
'beforeDispatchLoop',
'beforeDispatch',
'beforeExecuteRoute',
'beforeExecuteRoute-method',
'initialize-method',
'afterInitialize',
'indexAction',
'afterExecuteRoute',
'afterExecuteRoute-method',
'afterDispatch',
'beforeException: afterDispatch exception occurred',
'afterDispatchLoop',
];
$actual = $this->getDispatcherListener()->getTrace();
$I->assertEquals($expected, $actual);
}
/**
* Tests exception handling to ensure exceptions can be properly handled
* via beforeException event and then will properly bubble up the stack if
* anything other than <tt>false</tt> is returned.
*
* @author Mark Johnson <https://github.com/virgofx>
* @since 2017-10-07
*/
public function testAfterDispatchWithBeforeExceptionBubble(IntegrationTester $I)
{
$dispatcher = $this->getDispatcher();
$dispatcherListener = $this->getDispatcherListener();
$dispatcher->getEventsManager()->attach(
'dispatch:afterDispatch',
function () {
throw new Exception('afterDispatch exception occurred');
}
);
$dispatcher->getEventsManager()->attach(
'dispatch:beforeException',
function () use ($dispatcherListener) {
$dispatcherListener->trace('beforeException: custom before exception bubble');
return null;
}
);
$I->expectThrowable(
Exception::class,
function () use ($dispatcher) {
$dispatcher->dispatch();
}
);
$expected = [
'beforeDispatchLoop',
'beforeDispatch',
'beforeExecuteRoute',
'beforeExecuteRoute-method',
'initialize-method',
'afterInitialize',
'indexAction',
'afterExecuteRoute',
'afterExecuteRoute-method',
'afterDispatch',
'beforeException: afterDispatch exception occurred',
'beforeException: custom before exception bubble',
];
$actual = $this->getDispatcherListener()->getTrace();
$I->assertEquals($expected, $actual);
}
/**
* Tests dispatch forward handling inside the beforeException when a
* afterDispatch exception occurs.
*
* @author Mark Johnson <https://github.com/virgofx>
* @since 2017-10-07
*/
public function testAfterDispatchWithBeforeExceptionForwardOnce(IntegrationTester $I)
{
$forwarded = false;
$dispatcher = $this->getDispatcher();
$dispatcherListener = $this->getDispatcherListener();
$dispatcher->getEventsManager()->attach(
'dispatch:afterDispatch',
function () use (&$forwarded) {
if ($forwarded === false) {
$forwarded = true;
throw new Exception('afterDispatch exception occurred');
}
}
);
$dispatcher->getEventsManager()->attach(
'dispatch:beforeException',
function ($event, $dispatcher) use ($dispatcherListener) {
$dispatcherListener->trace('beforeException: custom before exception forward');
$dispatcher->forward(['action' => 'index2']);
}
);
$dispatcher->dispatch();
$expected = [
'beforeDispatchLoop',
'beforeDispatch',
'beforeExecuteRoute',
'beforeExecuteRoute-method',
'initialize-method',
'afterInitialize',
'indexAction',
'afterExecuteRoute',
'afterExecuteRoute-method',
'afterDispatch',
'beforeException: afterDispatch exception occurred',
'beforeException: custom before exception forward',
'beforeDispatch',
'beforeExecuteRoute',
'beforeExecuteRoute-method',
'index2Action',
'afterExecuteRoute',
'afterExecuteRoute-method',
'afterDispatch',
'afterDispatchLoop',
];
$actual = $this->getDispatcherListener()->getTrace();
$I->assertEquals($expected, $actual);
}
}
Function Calls
None |
Stats
MD5 | 1d3cf7911b1548283f9389519d7f4cbb |
Eval Count | 0 |
Decode Time | 94 ms |