/** * Special override to set up the app with controllers that have a dynamic middleware. This is better suited to * testing Middleware so that the developer can pass in the middleware and subsequently perform tests on it * * @param array $env * @param array $middlewares */ public function setUpApp($env = array(), $middlewares = array()) { parent::setUpApp($env); $this->app->setModelLoaders(array(new \MABI\DirectoryModelLoader(__DIR__ . '/../TestApp/TestModelDir', $this->app, 'mabiTesting'))); $dirControllerLoader = new \MABI\DirectoryControllerLoader(__DIR__ . '/../TestApp/TestControllerDir', $this->app, 'mabiTesting'); foreach ($dirControllerLoader->getControllers() as $controller) { if (get_class($controller) == 'mabiTesting\\JustAController') { $this->controller = $controller; if (!empty($middlewares)) { foreach ($middlewares as $middleware) { $this->controller->addMiddleware($middleware); } $this->controller->addMiddleware(new \MABI\Middleware\AnonymousIdentifier()); } } if (get_class($controller) == 'mabiTesting\\ModelBController') { $this->restController = $controller; if (!empty($middlewares)) { foreach ($middlewares as $middleware) { $this->restController->addMiddleware($middleware); } $this->restController->addMiddleware(new \MABI\Middleware\AnonymousIdentifier()); } } } $this->app->setControllerLoaders(array($dirControllerLoader)); }
/** * test that middleware was added appropriately */ function testMiddleware() { $this->setUpApp(); $dirControllerLoader = new \MABI\DirectoryControllerLoader('TestApp/TestControllerDir', $this->app, 'mabiTesting'); $this->app->setControllerLoaders(array($dirControllerLoader)); $controllers = $dirControllerLoader->getControllers(); foreach ($controllers as $controller) { if (get_class($controller) == 'mabiTesting\\JustAController') { /** * @var $middlewares \MABI\Middleware[] */ $middlewares = $controller->getMiddlewares(); $this->assertInternalType('array', $middlewares); $this->assertNotEmpty($middlewares); $this->assertInstanceOf('MABI\\Middleware\\AnonymousIdentifier', $middlewares[0]); } } }