public function testHandle() { $request = Request::create('http://localhost/test', 'GET', array(), array(), array(), array('PATH_INFO' => '/test')); $fileCache = new FileCacheModuleProvider($this->application); $fileCache->setCachePath(vfsStream::url('cacheDir')); $this->application[\Phruts\Util\Globals::MODULE_CONFIG_PROVIDER] = $fileCache; $response = $this->actionKernel->handle($request, HttpKernelInterface::MASTER_REQUEST, false); $this->assertEquals(200, $response->getStatusCode(), $response->getContent()); // $request = Request::create('http://localhost/admin/test', 'GET', array(), array(), array(), array('PATH_INFO' => '/admin/test')); // RequestUtils::selectModule($request, $this->application); // $response = $this->actionKernel->handle($request, HttpKernelInterface::MASTER_REQUEST, false); // $this->assertEquals(200, $response->getStatusCode(), $response->getContent()); }
/** * Registers services on the given app. * * This method should only be used to configure services and parameters. * It should not get services. * * @param \Silex\Application $app An Application instance */ public function register(\Silex\Application $app) { // Register our action server $app[\Phruts\Util\Globals::ACTION_KERNEL] = $app->share(function () use($app) { return new \Phruts\Action\ActionKernel($app); }); // Register our digester for when we need it $app[\Phruts\Util\Globals::DIGESTER] = $app->share(function () use($app) { $digester = new Digester(); $digester->addRuleSet(new ConfigRuleSet('phruts-config')); return $digester; }); $app[\Phruts\Util\Globals::MODULE_CONFIG_PROVIDER] = $app->share(function () use($app) { $provider = new FileCacheModuleProvider($app); // Set the cache $cache = $app[\Phruts\Util\Globals::CACHE_DIR]; if (empty($cache)) { $cache = getcwd() . '/../app/cache/'; } $provider->setCachePath($cache); return $provider; }); }
public function createApplication() { // Create a silex application $app = new Silex\Application(); // Configure test environments $app['debug'] = true; $app['exception_handler']->disable(); $app['session.test'] = true; // Add in phruts to organise your controllers $app->register(new Phruts\Provider\PhrutsServiceProvider(), array(Phruts\Util\Globals::ACTION_KERNEL_CONFIG => array('config' => __DIR__ . '/Resources/module1-config.xml', 'config/moduleA' => __DIR__ . '/Resources/module2-config.xml', 'config/moduleB' => __DIR__ . '/Resources/module2-config.xml,' . __DIR__ . '/Resources/module1-config.xml'))); // Setup the mock file system for caching vfsStreamWrapper::register(); vfsStreamWrapper::setRoot(new vfsStreamDirectory('cacheDir')); $app[Phruts\Util\Globals::MODULE_CONFIG_PROVIDER] = $app->share(function () use($app) { $provider = new FileCacheModuleProvider($app); $provider->setCachePath(vfsStream::url('cacheDir')); return $provider; }); // Add a relevant html $app->get('{path}', function ($path) use($app) { return new \Symfony\Component\HttpFoundation\Response(file_get_contents(__DIR__ . '/Resources/' . $path)); })->assert('path', '.+\\.html'); // Add routes to be matched by Phruts $app->get('/my/{path}.do', function (Request $request) use($app) { return $app[Phruts\Util\Globals::ACTION_KERNEL]->handle($request, HttpKernelInterface::SUB_REQUEST, false); })->assert('path', '.*')->before(function (Request $request) { // Match a ".do" as context path $path = $request->attributes->get('path'); if (!empty($path)) { $request->attributes->set(\Phruts\Action\RequestProcessor::INCLUDE_PATH_INFO, $path); } }); // Add routes to be matched by Phruts $app->get('{path}', function (Request $request) use($app) { return $app[Phruts\Util\Globals::ACTION_KERNEL]->handle($request, HttpKernelInterface::SUB_REQUEST, false); })->assert('path', '.*')->value('path', '/')->before(function (Request $request) { $do = $request->get('do'); if (!empty($do)) { $rewritePath = $request->attributes->get('_rewrite_path'); // tmp var as attributes if (empty($rewritePath)) { $request->attributes->set(\Phruts\Action\RequestProcessor::INCLUDE_PATH_INFO, $do); $request->attributes->set('_rewrite_path', 1); } else { $request->attributes->set(\Phruts\Action\RequestProcessor::INCLUDE_PATH_INFO, null); } } }); return $app; }