public function testAuthenticateSuccess() { $content = ['access_token' => 'access_token', 'refresh_token' => 'refresh_token', 'expires_in' => 3600]; $browserMock = $this->getMockBuilder(Browser::class)->disableOriginalConstructor()->getMock(); $responseMock = $this->getMockBuilder(Response::class)->disableOriginalConstructor()->getMock(); $responseMock->expects($this->once())->method('getStatusCode')->willReturn(200); $responseMock->expects($this->once())->method('getContent')->willReturn(json_encode($content)); $browserMock->expects($this->once())->method('get')->willReturn($responseMock); $browserManager = $this->getMockBuilder(BrowserManager::class)->disableOriginalConstructor()->getMock(); $browserManager->expects($this->once())->method('getBrowser')->willReturn($browserMock); $provider = new RoleTokenProvider($browserManager); $data = $provider->authentificate('/token', [], 'ROLE_ADMIN'); $this->assertEquals($content['access_token'], $data['accessToken']); }
/** * @param TokenInterface $token * @param UserProviderInterface $userProvider * @param $providerKey * @return UsernamePasswordToken */ public function authenticateToken(TokenInterface $token, UserProviderInterface $userProvider, $providerKey) { $user = $userProvider->loadUserByUsername($token->getUsername()); $config = $this->configProvider->getRoleConfig(); $params = ["client_id" => $config['client_id'], "client_secret" => $config['client_secret'], "username" => $token->getUsername(), "password" => $token->getCredentials()]; try { $storage = $this->roleTokenProvider->authentificate($config['endpoint'], $params, $this->role); } catch (BadAuthentificationException $e) { // CAUTION: this message will be returned to the client // (so don't put any un-trusted messages / error strings here) throw new CustomUserMessageAuthenticationException('Invalid username or password'); } $roleToken = new RoleToken($user, $user->getPassword(), $providerKey, $user->getRoles()); $roleToken->setAccessToken($storage['accessToken']); $roleToken->setRefreshToken($storage['refreshToken']); $roleToken->setRoleRequired($this->role); $roleToken->setExpiresIn($storage['expiresIn']); return $roleToken; }