From 0d6a7929e17c84052cbb3e494d5e5c195c24ca04 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Nicolas=20L=C5=93uillet?= Date: Wed, 14 Oct 2015 17:10:12 +0200 Subject: [PATCH] add tests for 2factor authentication --- app/config/config.yml | 3 +- .../Controller/SecurityControllerTest.php | 58 +++++++++++++++++++ .../UserBundle/Resources/config/services.yml | 19 ------ 3 files changed, 59 insertions(+), 21 deletions(-) create mode 100644 src/Wallabag/CoreBundle/Tests/Controller/SecurityControllerTest.php diff --git a/app/config/config.yml b/app/config/config.yml index b2699c83..4a2c02bf 100644 --- a/app/config/config.yml +++ b/app/config/config.yml @@ -173,11 +173,10 @@ fos_oauth_server: user_provider: fos_user.user_manager scheb_two_factor: - trusted_computer: enabled: true cookie_name: wllbg_trusted_computer - cookie_lifetime: 5184000 + cookie_lifetime: 2592000 email: enabled: true diff --git a/src/Wallabag/CoreBundle/Tests/Controller/SecurityControllerTest.php b/src/Wallabag/CoreBundle/Tests/Controller/SecurityControllerTest.php new file mode 100644 index 00000000..3402b340 --- /dev/null +++ b/src/Wallabag/CoreBundle/Tests/Controller/SecurityControllerTest.php @@ -0,0 +1,58 @@ +logInAs('admin'); + $client = $this->getClient(); + $client->followRedirects(); + + $client->request('GET', '/config'); + $this->assertContains('RSS', $client->getResponse()->getContent()); + } + + public function testLoginWith2Factor() + { + $client = $this->getClient(); + $client->followRedirects(); + + $em = $client->getContainer()->get('doctrine.orm.entity_manager'); + $user = $em + ->getRepository('WallabagUserBundle:User') + ->findOneByUsername('admin'); + $user->setTwoFactorAuthentication(true); + $em->persist($user); + $em->flush(); + + $this->logInAs('admin'); + $client->request('GET', '/config'); + $this->assertContains('trusted computer', $client->getResponse()->getContent()); + + // restore user + $user = $em + ->getRepository('WallabagUserBundle:User') + ->findOneByUsername('admin'); + $user->setTwoFactorAuthentication(false); + $em->persist($user); + $em->flush(); + } + + public function testTrustedComputer() + { + $client = $this->getClient(); + $em = $client->getContainer()->get('doctrine.orm.entity_manager'); + $user = $em + ->getRepository('WallabagUserBundle:User') + ->findOneByUsername('admin'); + + $date = new \DateTime(); + $user->addTrustedComputer('ABCDEF', $date->add(new \DateInterval('P1M'))); + $this->assertTrue($user->isTrustedComputer('ABCDEF')); + $this->assertFalse($user->isTrustedComputer('FEDCBA')); + } +} diff --git a/src/Wallabag/UserBundle/Resources/config/services.yml b/src/Wallabag/UserBundle/Resources/config/services.yml index 9cdd247d..e69de29b 100644 --- a/src/Wallabag/UserBundle/Resources/config/services.yml +++ b/src/Wallabag/UserBundle/Resources/config/services.yml @@ -1,19 +0,0 @@ -parameters: - wallabag_user.twofactor.email.provider.class: Wallabag\UserBundle\Security\TwoFactor\Email\Helper - wallabag_user.twofactor.email.interactive_login_listener.class: Wallabag\UserBundle\Security\TwoFactor\Email\InteractiveLoginListener - wallabag_user.twofactor.email.request_listener.class: Wallabag\UserBundle\Security\TwoFactor\Email\RequestListener - -services: - wallabag_user.twofactor.email.provider: - class: %wallabag_user.twofactor.email.provider.class% - arguments: ['@doctrine.orm.entity_manager', '@mailer'] - wallabag_user.twofactor.email.interactive_login_listener: - class: %wallabag_user.twofactor.email.interactive_login_listener.class% - tags: - - { name: kernel.event_listener, event: security.interactive_login, method: onSecurityInteractiveLogin } - arguments: ['@wallabag_user.twofactor.email.provider'] - wallabag_user.twofactor.email.request_listener: - class: %wallabag_user.twofactor.email.request_listener.class% - tags: - - { name: kernel.event_listener, event: kernel.request, method: onCoreRequest, priority: -1 } - arguments: ['@wallabag_user.twofactor.email.provider', '@security.context', '@templating', '@router'] -- 2.41.0