public function testForward() { $actionConfig = new ActionMapping(); $actionConfig->setPath('/test'); $actionConfig->setParameter('success'); $moduleConfig = new ModuleConfig(''); $moduleConfig->addActionConfig($actionConfig); $actionConfig->setModuleConfig($moduleConfig); $forwardConfigOrig = new ForwardConfig(); $forwardConfigOrig->setName('success'); $actionConfig->addForwardConfig($forwardConfigOrig); $action = new ForwardAction(); $request = new Request(); $response = new Response(); $forwardConfig = $action->execute($actionConfig, null, $request, $response); $this->assertNotEmpty($forwardConfig); $this->assertEquals($forwardConfigOrig->getName(), $forwardConfig->getName()); }
public function testStoreException() { $storeException = self::getMethod('storeException'); $request = new Request(); $property = 'prop'; $error = new ActionError('example'); $forwardConfig = new ForwardConfig(); $forwardConfig->setPath("path"); $forwardConfig->setName("name"); $scope = "request"; $storeException->invokeArgs($this->exceptionHandler, array($request, $property, $error, $forwardConfig, $scope)); $this->assertNotEmpty($request->attributes->get(\Phruts\Util\Globals::ERROR_KEY)); $this->assertTrue($request->attributes->get(\Phruts\Util\Globals::ERROR_KEY) instanceof \Phruts\Action\ActionErrors); $scope = "session"; $storage = new \Symfony\Component\HttpFoundation\Session\Storage\MockArraySessionStorage(); $session = new \Symfony\Component\HttpFoundation\Session\Session($storage); $request->setSession($session); $storeException->invokeArgs($this->exceptionHandler, array($request, $property, $error, $forwardConfig, $scope)); $this->assertNotEmpty($request->getSession()->get(\Phruts\Util\Globals::ERROR_KEY)); $this->assertTrue($request->getSession()->get(\Phruts\Util\Globals::ERROR_KEY) instanceof \Phruts\Action\ActionErrors); }
public function execute(ActionMapping $mapping, AbstractActionForm $form = null, Request $request, Response $response) { // Action Config defines the parameter for the forward configuration $parameter = $mapping->getParameter(); if (empty($parameter)) { throw new \Phruts\Exception\IllegalArgumentException('Need to specify a parameter for this ForwardAction'); } // Original strategy, let's assume it is a path if (!preg_match('/^[A-z]+$/', $parameter)) { $forward = new ForwardConfig(); $forward->setPath($parameter); $forward->setContextRelative(true); return $forward; } else { // Forward the request $forward = $mapping->findForwardConfig($parameter); if (empty($forward)) { throw new \Phruts\Exception('ForwardAction parameter should reference a forward config name'); } return $forward; } }
public function testInvalidActionForm() { // Mock a request $request = Request::create('http://localhost/test', 'GET', array(), array(), array(), array('PATH_INFO' => '/test')); $formConfig = new FormBeanConfig(); $formConfig->setName('form1'); $formConfig->setType('\\ActionTest\\MyInvalidForm'); $this->moduleConfig->addFormBeanConfig($formConfig); $actionMapping = new ActionMapping(); $actionMapping->setScope('request'); $actionMapping->setPath('/test'); $actionMapping->setType('\\Phruts\\Actions\\ForwardAction'); $actionMapping->setParameter('success'); $actionMapping->setName('form1'); $actionMapping->setInput('myinput.html.twig'); $forwardConfig = new ForwardConfig(); $forwardConfig->setName('success'); $forwardConfig->setPath('success.html.twig'); $actionMapping->addForwardConfig($forwardConfig); $actionMapping->setModuleConfig($this->moduleConfig); $this->moduleConfig->addActionConfig($actionMapping); $this->requestProcessor->process($request, $this->response); }
public function testModuleConfig() { $config = new ModuleConfig('prefix2'); $this->assertEquals('prefix2', $config->getPrefix()); $config->setPrefix('prefix'); $this->assertEquals('prefix', $config->getPrefix()); $controllerConfig = new ControllerConfig(); $controllerConfig->setProcessorClass('\\Mock\\Proccessor'); $controllerConfig->setContentType('application/x-javascript'); $controllerConfig->setNocache('true'); $controllerConfig->setInputForward('true'); $controllerConfig->setLocale('true'); $expected = "\\Phruts\\Config\\ControllerConfig[processorClass='\\\\Mock\\\\Proccessor',contentType='application/x-javascript',nocache=true,inputForward=true,locale=true]"; $this->assertEquals($expected, (string) $controllerConfig); $config->setControllerConfig($controllerConfig); $this->assertNotEmpty($config->getControllerConfig()); $actionConfig1 = new ActionConfig(); $actionConfig1->setPath('action1'); $actionConfig1->setType('\\ForwardConfig'); $config->addActionConfig($actionConfig1); $actionConfig2 = new ActionConfig(); $actionConfig2->setPath('action2'); $actionConfig2->setType('\\ForwardConfig'); $config->addActionConfig($actionConfig2); $this->assertNotEmpty($config->findActionConfig('/action1')); $this->assertNotEmpty($config->findActionConfig('/action2')); $config->removeActionConfig($actionConfig2); $this->assertEmpty($config->findActionConfig('/action2')); $actionClass = '\\MyActionConfigClass'; $config->setActionClass($actionClass); $this->assertEquals('\\MyActionConfigClass', $config->getActionClass()); $formBeanConfig1 = new FormBeanConfig(); $formBeanConfig1->setName('myForm1'); $formBeanConfig1->setType('\\MyForm1'); $formBeanConfig2 = new FormBeanConfig(); $formBeanConfig2->setName('myForm2'); $formBeanConfig2->setType('\\MyForm2'); $config->addFormBeanConfig($formBeanConfig1); $config->addFormBeanConfig($formBeanConfig2); $this->assertEquals(2, count($config->findFormBeanConfigs())); $this->assertEquals($formBeanConfig1, $config->findFormBeanConfig('myForm1')); $this->assertEquals($formBeanConfig2, $config->findFormBeanConfig('myForm2')); $config->removeFormBeanConfig($formBeanConfig2); $this->assertEmpty($config->findFormBeanConfig('myForm2')); $forwardConfig1 = new ForwardConfig(); $forwardConfig1->setName('welcome'); $forwardConfig1->setPath('welcome.html.twig'); $forwardConfig2 = new ForwardConfig(); $forwardConfig2->setName('login'); $forwardConfig1->setPath('login.html.twig'); $config->addForwardConfig($forwardConfig1); $config->addForwardConfig($forwardConfig2); $this->assertEquals($forwardConfig1, $config->findForwardConfig('welcome')); $this->assertEquals($forwardConfig2, $config->findForwardConfig('login')); $config->removeForwardConfig($forwardConfig1); $this->assertEmpty($config->findForwardConfig('welcome')); $dataSourceConfig = new DataSourceConfig(); $dataSourceConfig->setKey('key1'); $config->addDataSourceConfig($dataSourceConfig); $dataSourceConfig2 = new DataSourceConfig(); $dataSourceConfig2->setKey('key2'); $config->addDataSourceConfig($dataSourceConfig2); $this->assertEquals(2, count($config->findDataSourceConfigs())); $this->assertEquals($dataSourceConfig, $config->findDataSourceConfig('key1')); $this->assertEquals($dataSourceConfig2, $config->findDataSourceConfig('key2')); $config->removeDataSourceConfig($dataSourceConfig); $this->assertEmpty($config->findDataSourceConfig('key1')); $messageConfig = new MessageResourcesConfig(); $messageConfig->setKey('key1'); $config->addMessageResourcesConfig($messageConfig); $this->assertEquals($messageConfig, $config->findMessageResourcesConfig('key1')); $this->assertEquals(1, count($config->findMessageResourcesConfigs())); $config->removeMessageResourcesConfig($messageConfig); $this->assertEmpty($config->findMessageResourcesConfig('key1')); $plugInConfig = new PlugInConfig(); $plugInConfig->setKey('test'); $plugInConfig->setClassName('\\stdClass'); $config->addPlugInConfig($plugInConfig); $this->assertEquals(1, count($config->findPlugInConfigs())); $exceptionConfig = new ExceptionConfig(); $exceptionConfig->setType('\\Exception'); $config->addExceptionConfig($exceptionConfig); $this->assertEquals(1, count($config->findExceptionConfigs())); $this->assertEquals($exceptionConfig, $config->findExceptionConfig('\\Exception')); $config->removeExceptionConfig($exceptionConfig); $this->assertEmpty($config->findExceptionConfig('\\Exception')); // Test exception $config->freeze(); $this->assertTrue($config->getConfigured()); $this->setExpectedException('\\Phruts\\Exception\\IllegalStateException'); $config->setPrefix('prefix2'); }
/** * Remove the specified forward configuration instance. * * @param ForwardConfig $config ForwardConfig instance to be removed * @throws \Phruts\Exception\IllegalStateException */ public function removeForwardConfig(\Phruts\Config\ForwardConfig $config) { if ($this->configured) { throw new \Phruts\Exception\IllegalStateException('Configuration is frozen'); } unset($this->forwards[$config->getName()]); }