function it_listens_cookie_event(CookieEvent $cookieEvent, Response $response, ResponseHeaderBag $responseHeaderBag, SessionInterface $session) { $cookieEvent->getSession()->shouldBeCalled()->willReturn($session); $session->has('access_token')->shouldBeCalled()->willReturn(true); $session->has('refresh_token')->shouldBeCalled()->willReturn(true); $cookieEvent->getResponse()->shouldBeCalled()->willReturn($response); $session->get('access_token')->shouldBeCalled()->willReturn('accesstoken'); $session->get('refresh_token')->shouldBeCalled()->willReturn('refreshtoken'); $responseHeaderBag->setCookie(Argument::type('Symfony\\Component\\HttpFoundation\\Cookie'))->shouldBeCalled(); $responseHeaderBag->setCookie(Argument::type('Symfony\\Component\\HttpFoundation\\Cookie'))->shouldBeCalled(); $response->headers = $responseHeaderBag; $this->onCookieEvent($cookieEvent); }
/** * Checks if the session has the tokens to create cookies that will be add into response. * * @param \Kreta\Bundle\UserBundle\Event\CookieEvent $event The cookie event */ public function onCookieEvent(CookieEvent $event) { $session = $event->getSession(); if (!$session->has('access_token') || !$session->has('refresh_token')) { throw new SessionUnavailableException(); } $event->getResponse()->headers->setCookie($this->cookie('access_token', $session->get('access_token'))); $event->getResponse()->headers->setCookie($this->cookie('refresh_token', $session->get('refresh_token'))); }