3 namespace Tests\Wallabag\CoreBundle
;
5 use Symfony\Bundle\FrameworkBundle\Test\WebTestCase
;
6 use Symfony\Component\BrowserKit\Cookie
;
8 abstract class WallabagCoreTestCase
extends WebTestCase
10 private $client = null;
12 public function getClient()
17 public function setUp()
21 $this->client
= static::createClient();
25 * Login a user without making a HTTP request.
26 * If we make a HTTP request we lose ability to mock service in the container.
28 * @param string $username User to log in
30 public function logInAs($username)
32 $container = $this->client
->getContainer();
33 $session = $container->get('session');
35 $userManager = $container->get('fos_user.user_manager');
36 $loginManager = $container->get('fos_user.security.login_manager');
37 $firewallName = $container->getParameter('fos_user.firewall_name');
39 $user = $userManager->findUserBy(array('username' => $username));
40 $loginManager->loginUser($firewallName, $user);
42 $session->set('_security_'.$firewallName, serialize($container->get('security.token_storage')->getToken()));
45 $cookie = new Cookie($session->getName(), $session->getId());
46 $this->client
->getCookieJar()->set($cookie);
50 * Instead of `logInAs` this method use a HTTP request to log in the user.
51 * Could be better for some tests.
53 * @param string $username User to log in
55 public function logInAsUsingHttp($username)
57 $crawler = $this->client
->request('GET', '/login');
58 $form = $crawler->filter('button[type=submit]')->form();
60 '_username' => $username,
61 '_password' => 'mypassword',
64 $this->client
->submit($form, $data);
68 * Return the user id of the logged in user.
69 * You should be sure that you called `logInAs` before.
73 public function getLoggedInUserId()
75 $token = static::$kernel->getContainer()->get('security.token_storage')->getToken();
77 if (null !== $token) {
78 return $token->getUser()->getId();
81 throw new \
RuntimeException('No logged in User.');
85 * Check if Redis is installed.
86 * If not, mark test as skip.
88 protected function checkRedis()
91 $this->client
->getContainer()->get('wallabag_core.redis.client')->connect();
92 } catch (\Exception
$e) {
93 $this->markTestSkipped('Redis is not installed/activated');