Provided for testing.
public setRequest ( Zend\Http\Request $request ) | ||
$request | Zend\Http\Request |
public function testProcessPutRequest() { $currentDir = getcwd(); $tmpDir = sys_get_temp_dir() . "/" . uniqid(__NAMESPACE__ . '_'); mkdir($tmpDir); mkdir("{$tmpDir}/module/Foo", 0775, true); mkdir("{$tmpDir}/config"); file_put_contents("{$tmpDir}/config/application.config.php", '<' . '?php return array(\'modules\'=>array(\'Foo\'));'); file_put_contents("{$tmpDir}/module/Foo/Module.php", "<" . "?php\n\nnamespace Foo;\n\nclass Module\n{\n}"); chdir($tmpDir); require 'module/Foo/Module.php'; $moduleManager = $this->getMockBuilder('Zend\\ModuleManager\\ModuleManager')->disableOriginalConstructor()->getMock(); $moduleManager->expects($this->any())->method('getLoadedModules')->will($this->returnValue(['Foo' => new \Foo\Module()])); $moduleResource = new ModuleModel($moduleManager, [], []); $controller = new ModuleCreationController($moduleResource); $request = new Request(); $request->setMethod('put'); $request->getHeaders()->addHeaderLine('Accept', 'application/json'); $request->getHeaders()->addHeaderLine('Content-Type', 'application/json'); $parameters = new ParameterDataContainer(); $parameters->setBodyParam('module', 'Foo'); $event = new MvcEvent(); $event->setParam('ZFContentNegotiationParameterData', $parameters); $plugins = new PluginManager(); $plugins->setInvokableClass('bodyParam', 'ZF\\ContentNegotiation\\ControllerPlugin\\BodyParam'); $controller->setRequest($request); $controller->setEvent($event); $controller->setPluginManager($plugins); $result = $controller->apiEnableAction(); $this->assertInstanceOf('ZF\\ContentNegotiation\\ViewModel', $result); $payload = $result->getVariable('payload'); $entity = method_exists($payload, 'getEntity') ? $payload->getEntity() : $payload->entity; $this->assertInstanceOf('ZF\\Hal\\Entity', $payload); $this->assertInstanceOf('ZF\\Apigility\\Admin\\Model\\ModuleEntity', $entity); $this->assertEquals('Foo', $entity->getName()); $this->removeDir($tmpDir); chdir($currentDir); }