public function testPreviewDefaultSiteaccess() { $contentId = 123; $lang = 'eng-GB'; $versionNo = 3; $locationId = 456; $content = $this->getMock('eZ\\Publish\\API\\Repository\\Values\\Content\\Content'); $location = $this->getMockBuilder('eZ\\Publish\\API\\Repository\\Values\\Content\\Location')->setConstructorArgs(array(array('id' => $locationId)))->getMockForAbstractClass(); // Repository expectations $this->locationProvider->expects($this->once())->method('loadMainLocation')->with($contentId)->will($this->returnValue($location)); $this->contentService->expects($this->once())->method('loadContent')->with($contentId, array($lang), $versionNo)->will($this->returnValue($content)); $this->authorizationChecker->expects($this->once())->method('isGranted')->with($this->equalTo(new AuthorizationAttribute('content', 'versionread', array('valueObject' => $content))))->will($this->returnValue(true)); $previousSiteAccessName = 'foo'; $previousSiteAccess = new SiteAccess($previousSiteAccessName); $request = $this->getMock('Symfony\\Component\\HttpFoundation\\Request', array('duplicate')); $this->previewHelper->expects($this->once())->method('getOriginalSiteAccess')->will($this->returnValue($previousSiteAccess)); $this->previewHelper->expects($this->once())->method('restoreConfigScope'); // Request expectations $duplicatedRequest = $this->getDuplicatedRequest($location, $content, $previousSiteAccess); $request->expects($this->once())->method('duplicate')->will($this->returnValue($duplicatedRequest)); // Kernel expectations $expectedResponse = new Response(); $this->httpKernel->expects($this->once())->method('handle')->with($duplicatedRequest, HttpKernelInterface::SUB_REQUEST)->will($this->returnValue($expectedResponse)); $controller = $this->getPreviewController(); $this->assertSame($expectedResponse, $controller->previewContentAction($request, $contentId, $versionNo, $lang)); }
/** * Returns the Request object that will be forwarded to the kernel for previewing the content. * * @param \eZ\Publish\API\Repository\Values\Content\Location $location * @param \eZ\Publish\API\Repository\Values\Content\Content $content * @param \eZ\Publish\Core\MVC\Symfony\SiteAccess $previewSiteAccess * @param Request $request * @param string $language * * @return \Symfony\Component\HttpFoundation\Request */ protected function getForwardRequest(Location $location, Content $content, SiteAccess $previewSiteAccess, Request $request, $language) { $forwardRequestParameters = array('_controller' => UrlAliasRouter::VIEW_ACTION, '_route' => UrlAliasGenerator::INTERNAL_CONTENT_VIEW_ROUTE, '_route_params' => array('contentId' => $content->id, 'locationId' => $location->id, 'language' => $language), 'location' => $location, 'viewType' => ViewManagerInterface::VIEW_TYPE_FULL, 'layout' => true, 'params' => array('content' => $content, 'location' => $location, 'isPreview' => true), 'siteaccess' => $previewSiteAccess, 'semanticPathinfo' => $request->attributes->get('semanticPathinfo')); if ($this->controllerChecker->usesCustomController($content, $location)) { $forwardRequestParameters = ['_controller' => 'ez_content:viewLocation', '_route' => self::INTERNAL_LOCATION_VIEW_ROUTE] + $forwardRequestParameters; } return $request->duplicate(null, null, $forwardRequestParameters); }