Skip to content

Commit

Permalink
Test context filter is disabled on admin page
Browse files Browse the repository at this point in the history
  • Loading branch information
jeboehm committed Jan 20, 2018
1 parent 34e2a38 commit 5eb4021
Show file tree
Hide file tree
Showing 5 changed files with 68 additions and 16 deletions.
8 changes: 7 additions & 1 deletion src/Service/ContextService.php
Original file line number Diff line number Diff line change
Expand Up @@ -47,17 +47,23 @@ public function getContext(): ContextStruct
$host = $request->getHost();
$site = $this->siteRepository->findOneByHost($host);
$preview = false;
$admin = false;

if ($site->getPreviewHost() === $host) {
$preview = true;
}

if (0 === strpos($request->getRequestUri(), '/admin/')) {
$admin = true;
}

$this->context = new ContextStruct(
$site,
$preview,
$request->getClientIp(),
$request->headers->get('referer', ''),
$request->headers->get('User-Agent', '')
$request->headers->get('User-Agent', ''),
$admin
);

return $this->context;
Expand Down
2 changes: 1 addition & 1 deletion src/Subscriber/PreviewPageRedirectSubscriber.php
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ public static function getSubscribedEvents(): array

public function onController(FilterControllerEvent $event): void
{
if (!$this->contextService->getContext()->isPreview()) {
if (!$this->contextService->getContext()->isPreview() || $this->contextService->getContext()->isAdmin()) {
return;
}

Expand Down
31 changes: 20 additions & 11 deletions tests/Functional/AbstractFunctionalTestCase.php
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,25 @@ final protected static function createClient(array $options = [], array $server
return $client;
}

final protected static function createSite(Client $client, string $host, string $previewHost, string $name): Site
{
$entityManager = $client->getContainer()->get('doctrine.orm.entity_manager');

$site = new Site();
$site
->setHost($host)
->setPreviewHost($previewHost)
->setSecure(false)
->setTest(false)
->setDefault(true)
->setName($name);

$entityManager->persist($site);
$entityManager->flush();

return $site;
}

private static function prepareEnvironment(Client $client): void
{
$entityManager = $client->getContainer()->get('doctrine.orm.entity_manager');
Expand All @@ -59,17 +78,7 @@ private static function prepareEnvironment(Client $client): void
$entityManager->flush();
$entityManager->clear();

$site = new Site();
$site
->setHost(self::HOST_DEFAULT)
->setPreviewHost(self::HOST_PREVIEW)
->setSecure(false)
->setTest(false)
->setDefault(true)
->setName('Testenvironment');

$entityManager->persist($site);
$entityManager->flush();
static::createSite($client, self::HOST_DEFAULT, self::HOST_PREVIEW, 'Testenvironment');
$entityManager->clear();
}
}
36 changes: 35 additions & 1 deletion tests/Functional/Admin/LinkAdminTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,50 @@

namespace App\Tests\Functional\Admin;

use App\Entity\Link;
use App\Helper\NameGenerator;
use App\Tests\Functional\AbstractFunctionalTestCase;
use App\Tests\Functional\HelperTrait;
use Symfony\Component\HttpFoundation\Response;

class LinkAdminTest extends AbstractFunctionalTestCase
{
use HelperTrait;

public function testAdminListRenders(): void
{
$client = static::createClient();
$client->request('GET', $client->getContainer()->get('router')->generate('admin_app_link_list'));
$client->request('GET', $this->generateUrl($client, 'admin_app_link_list'));

$this->assertEquals(Response::HTTP_OK, $client->getResponse()->getStatusCode());
}

/**
* @covers \App\Subscriber\Doctrine\ContextFilterSubscriber::onKernelRequest()
*/
public function testLinkAdminListShowsAllSitesLinks(): void
{
$client = static::createClient();
$site = static::createSite($client, 'random.test', 'preview.random.test', 'TestEnv2');
$this->createLink($client);

$entityManager = $this->getEntityManager($client);
$link = new Link($site);
$link->setUrl('http://example.com/' . NameGenerator::generate(5));
$link->setName(NameGenerator::generate(5));

$entityManager->persist($link);
$entityManager->flush();

$crawler = $client->request('GET', $this->generateUrl($client, 'admin_app_link_list'));
$filter = $crawler->filter('td');
$values = [];

foreach ($filter as $node) {
$values[] = trim($node->nodeValue);
}

$this->assertContains('TestEnv2', $values);
$this->assertContains('Testenvironment', $values);
}
}
7 changes: 5 additions & 2 deletions tests/Functional/Admin/SiteAdminTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,22 +13,25 @@
namespace App\Tests\Functional\Admin;

use App\Tests\Functional\AbstractFunctionalTestCase;
use App\Tests\Functional\HelperTrait;
use Symfony\Component\HttpFoundation\Response;

class SiteAdminTest extends AbstractFunctionalTestCase
{
use HelperTrait;

public function testAdminListRenders(): void
{
$client = static::createClient();
$client->request('GET', $client->getContainer()->get('router')->generate('admin_app_site_list'));
$client->request('GET', $this->generateUrl($client, 'admin_app_site_list'));

$this->assertEquals(Response::HTTP_OK, $client->getResponse()->getStatusCode());
}

public function testAdminCreateRenders(): void
{
$client = static::createClient();
$client->request('GET', $client->getContainer()->get('router')->generate('admin_app_site_create'));
$client->request('GET', $this->generateUrl($client, 'admin_app_site_create'));

$this->assertEquals(Response::HTTP_OK, $client->getResponse()->getStatusCode());
}
Expand Down

0 comments on commit 5eb4021

Please sign in to comment.