public function testUpdateOnlineUsers()
 {
     $provider = $this->getMock(OnlineUserIdWriteProviderInterface::class);
     $provider->expects($this->once())->method('addUserId');
     $user = $this->getMockWithoutInvokingTheOriginalConstructor(User::class);
     $entityManager = $this->getMock(EntityManagerInterface::class);
     $entityManager->expects($this->once())->method('persist')->with($user);
     $user->expects($this->once())->method('updateLastAction');
     $user->expects($this->once())->method('getId')->willReturn('1');
     $entityManager->expects($this->once())->method('flush');
     $token = $this->getMockWithoutInvokingTheOriginalConstructor(PreAuthenticatedToken::class);
     $token->expects($this->once())->method('getUser')->willReturn($user);
     $listener = new OnlineUsersUpdateListener($provider, $entityManager);
     $event = new OnFirewallAuthenticationEvent();
     $event->setToken($token);
     $listener->onFirewallLogin($event);
 }
 public function testUpdateOnlineUsers()
 {
     $provider = $this->getMock(OnlineUserIdDataProviderInterface::class);
     $provider->expects($this->once())->method('addUserId');
     $now = time();
     $request = Request::create('/');
     $request->server->set('REQUEST_TIME', $now);
     $requestStack = $this->getMock(RequestStack::class, ['getMasterRequest']);
     $requestStack->expects($this->once())->method('getMasterRequest')->willReturn($request);
     $user = User::create('Ma27', '123456', '*****@*****.**');
     $entityManager = $this->getMock(EntityManagerInterface::class);
     $entityManager->expects($this->once())->method('persist')->with($user);
     $entityManager->expects($this->once())->method('flush')->with($user);
     $token = $this->getMockWithoutInvokingTheOriginalConstructor(PreAuthenticatedToken::class);
     $token->expects($this->once())->method('getUser')->willReturn($user);
     $listener = new OnlineUsersUpdateListener($provider, $requestStack, $entityManager);
     $event = new OnFirewallAuthenticationEvent();
     $event->setToken($token);
     $listener->onFirewallLogin($event);
     $this->assertSame($now, $user->getLastAction()->getTimestamp());
 }