UserFixtures::USERNAME_SUPER_ADMIN, 'PHP_AUTH_PW' => UserFixtures::DEFAULT_PASSWORD, ]); break; case User::ROLE_ADMIN: $client = self::createClient([], [ 'PHP_AUTH_USER' => UserFixtures::USERNAME_ADMIN, 'PHP_AUTH_PW' => UserFixtures::DEFAULT_PASSWORD, ]); break; case User::ROLE_TEAMLEAD: $client = self::createClient([], [ 'PHP_AUTH_USER' => UserFixtures::USERNAME_TEAMLEAD, 'PHP_AUTH_PW' => UserFixtures::DEFAULT_PASSWORD, ]); break; case User::ROLE_USER: $client = self::createClient([], [ 'PHP_AUTH_USER' => UserFixtures::USERNAME_USER, 'PHP_AUTH_PW' => UserFixtures::DEFAULT_PASSWORD, ]); break; default: $client = null; break; } return $client; } /** * @param string $url * @return string */ protected function createUrl($url) { return '/' . self::DEFAULT_LANGUAGE . '/' . ltrim($url, '/'); } /** * @param Client $client * @param string $url * @param string $method * @param array $parameters * @param string $content * @return \Symfony\Component\DomCrawler\Crawler */ protected function request(Client $client, string $url, $method = 'GET', array $parameters = [], string $content = null) { return $client->request($method, $this->createUrl($url), $parameters, [], [], $content); } /** * @param Client $client * @param string $url * @param string $method */ protected function assertRequestIsSecured(Client $client, string $url, ?string $method = 'GET') { $this->request($client, $url, $method); /** @var RedirectResponse $response */ $response = $client->getResponse(); self::assertInstanceOf(RedirectResponse::class, $response); self::assertTrue( $response->isRedirect(), sprintf('The secure URL %s is not protected.', $url) ); self::assertStringEndsWith( '/login', $response->getTargetUrl(), sprintf('The secure URL %s does not redirect to the login form.', $url) ); } /** * @param string $url * @param string $method */ protected function assertUrlIsSecured(string $url, $method = 'GET') { $client = self::createClient(); $this->assertRequestIsSecured($client, $url, $method); } /** * @param string $role * @param string $url * @param string $method */ protected function assertUrlIsSecuredForRole(string $role, string $url, string $method = 'GET') { $client = $this->getClientForAuthenticatedUser($role); $client->request($method, $this->createUrl($url)); self::assertFalse( $client->getResponse()->isSuccessful(), sprintf('The secure URL %s is not protected for role %s', $url, $role) ); $this->assertAccessDenied($client); } protected function assertAccessDenied(Client $client) { self::assertFalse( $client->getResponse()->isSuccessful(), 'Access is not denied for URL: ' . $client->getRequest()->getUri() ); self::assertStringContainsString( 'Symfony\Component\Security\Core\Exception\AccessDeniedException', $client->getResponse()->getContent(), 'Could not find AccessDeniedException in response' ); } protected function assertAccessIsGranted(Client $client, string $url, string $method = 'GET', array $parameters = []) { $this->request($client, $url, $method, $parameters); self::assertTrue($client->getResponse()->isSuccessful()); } protected function assertRouteNotFound(Client $client) { self::assertFalse($client->getResponse()->isSuccessful()); self::assertEquals(404, $client->getResponse()->getStatusCode()); } protected function assertMainContentClass(Client $client, string $classname) { self::assertStringContainsString('
', $client->getResponse()->getContent()); } /** * @param Client $client */ protected function assertHasDataTable(Client $client) { self::assertStringContainsString('