Skip to content

Instantly share code, notes, and snippets.

@jakzal
Last active May 2, 2022 10:18

Revisions

  1. jakzal revised this gist Apr 11, 2014. 1 changed file with 11 additions and 4 deletions.
    15 changes: 11 additions & 4 deletions AuthenticationContext.php
    Original file line number Diff line number Diff line change
    @@ -36,7 +36,7 @@ public function iAmLoggedIn()
    {
    $this->user = $this->createUser();

    $token = $this->getOAuthToken($this->user, array('ROLE_USER'));
    $token = $this->createOAuthToken($this->user, array('ROLE_USER'));

    $firewall = 'secured_area';
    $session = $this->kernel->getContainer()->get('session');
    @@ -62,14 +62,21 @@ private function createUser()
    }

    /**
    * @param mixed $user
    * @param User $user
    * @param array $roles
    *
    * @return OAuthToken
    */
    private function getOAuthToken($user, array $roles)
    private function createOAuthToken(User $user, array $roles)
    {
    $token = new OAuthToken('a-random-access-token', $roles);
    $accessToken = array (
    'access_token' => 'ya29.1.AADtN_VkmddcBXq1eg-0fleRxahbSkIYb7CCY1sKLCyTzcqDa_xMMzA--dwL6QQAKh6Bmg',
    'token_type' => 'Bearer',
    'expires_in' => 3600,
    'id_token' => 'eyJhbGciOiJSUzI1NiIsImtpZCI6IjFkYjcxNzc4ZjkyOTBlNmVjOWQ5ZjFkYTQzMDA4NjE4MDllYzk2NGUifQ'
    );

    $token = new OAuthToken($accessToken, $roles);
    $token->setResourceOwnerName('google');
    $token->setUser($user);

  2. jakzal created this gist Jan 4, 2014.
    86 changes: 86 additions & 0 deletions AuthenticationContext.php
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,86 @@
    <?php

    namespace Acme\Context;

    use Acme\MyApp\User;
    use Behat\MinkExtension\Context\RawMinkContext;
    use Behat\Symfony2Extension\Context\KernelAwareInterface;
    use Doctrine\ORM\EntityManager;
    use HWI\Bundle\OAuthBundle\Security\Core\Authentication\Token\OAuthToken;
    use Symfony\Component\HttpKernel\KernelInterface;

    class LeaveRequestContext extends RawMinkContext implements KernelAwareInterface
    {
    /**
    * @var KernelInterface
    */
    private $kernel;

    /**
    * @var User
    */
    private $user;

    /**
    * @param KernelInterface $kernel
    */
    public function setKernel(KernelInterface $kernel)
    {
    $this->kernel = $kernel;
    }

    /**
    * @Given /^I am logged in$/
    */
    public function iAmLoggedIn()
    {
    $this->user = $this->createUser();

    $token = $this->getOAuthToken($this->user, array('ROLE_USER'));

    $firewall = 'secured_area';
    $session = $this->kernel->getContainer()->get('session');
    $session->set('_security_'.$firewall, serialize($token));
    $session->save();

    $this->getSession()->setCookie($session->getName(), $session->getId());
    }

    /**
    * @return User
    */
    private function createUser()
    {
    $user = new User();
    $user->setName('Kuba');

    $em = $this->getEntityManager();
    $em->persist($user);
    $em->flush();

    return $user;
    }

    /**
    * @param mixed $user
    * @param array $roles
    *
    * @return OAuthToken
    */
    private function getOAuthToken($user, array $roles)
    {
    $token = new OAuthToken('a-random-access-token', $roles);
    $token->setResourceOwnerName('google');
    $token->setUser($user);

    return $token;
    }

    /**
    * @return EntityManager
    */
    private function getEntityManager()
    {
    return $this->kernel->getContainer()->get('doctrine')->getManager();
    }
    }