Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions config/packages/test/ezplatform.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
parameters:
ezsettings.default.unit_test: 'default value'
ezsettings.site.unit_test: 'site value'
ezsettings.admin_group.unit_test: 'admin value'
4 changes: 4 additions & 0 deletions config/services_test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,7 @@ services:

App\Tests\Behat\:
resource: '../tests/Behat/*'

test_alias.ezpublish.siteaccess_service:
alias: 'ezpublish.siteaccess_service'
public: true
11 changes: 11 additions & 0 deletions phpunit.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/6.5/phpunit.xsd"
bootstrap="config/bootstrap.php"
>
<php>
<server name="KERNEL_CLASS" value="App\Kernel" />
<server name="APP_ENV" value="test" force="true" />
<env name="SYMFONY_DEPRECATIONS_HELPER" value="disabled" />
</php>
</phpunit>
57 changes: 57 additions & 0 deletions tests/SiteAccessAwareTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
<?php

namespace App\Tests;

use eZ\Bundle\EzPublishCoreBundle\DependencyInjection\Configuration\ChainConfigResolver;
use eZ\Publish\Core\MVC\Symfony\SiteAccess\SiteAccessAware;
use eZ\Publish\Core\MVC\Symfony\SiteAccess\SiteAccessService;
use eZ\Publish\Core\Repository\SiteAccessAware\Repository;
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;

class SiteAccessAwareTest extends KernelTestCase
{
/** @var SiteAccessService */
private $siteAccessService;

/** @var ChainConfigResolver */
private $configResolver;

public function setup(): void
{
self::bootKernel();
$this->siteAccessService = self::$kernel->getContainer()->get('test_alias.ezpublish.siteaccess_service');
$this->configResolver = self::$kernel->getContainer()->get('ezpublish.config.resolver');
}

public function testSiteAccess()
{
//$wantedSiteAccess = 'site';
$wantedSiteAccess = 'admin';

// Contrary to 2.5: The "ezpublish.siteaccess" service is private, you cannot replace it.
//self::$kernel->getContainer()->set('ezpublish.siteaccess', new SiteAccess($wantedSiteAccess, 'phpunit'));

$this->siteAccessService->setSiteAccess($this->siteAccessService->get($wantedSiteAccess));
self::assertEquals($wantedSiteAccess, $this->siteAccessService->getCurrent()->name);

// Shows that the SiteAccessService doesn't change the current SiteAccess from a ConfigResolver POV
self::assertEquals('default value', $this->configResolver->getParameter('unit_test'));

foreach($this->configResolver->getAllResolvers() as $resolver) {
if ($resolver instanceof SiteAccessAware) {
$resolver->setSiteAccess($this->siteAccessService->getCurrent());
}
}

self::assertEquals("$wantedSiteAccess value", $this->configResolver->getParameter('unit_test'));

/** @var Repository $repository */
$repository = self::$kernel->getContainer()->get('ezpublish.api.repository');

// Shows that the default connection is used
$rootLocation = $repository->getLocationService()->loadLocation(2);
self::assertNotNull($rootLocation);
self::assertEquals(2, $rootLocation->id);
self::assertEquals('Welcome to eZ Platform Enterprise Edition', $rootLocation->getContentInfo()->name);
}
}