protected function AuthenticationOAuthTest::createAuthenticationPlugin in Entity Share 8.3
Helper function to create the authentication plugin.
Parameters
\Drupal\user\UserInterface $user: The user whose credentials will be used for the plugin.
\Drupal\entity_share_client\Entity\RemoteInterface $remote: The "Remote" entity.
Return value
\Drupal\entity_share_client\ClientAuthorization\ClientAuthorizationInterface The Entity share Authorization plugin.
Overrides EntityShareClientFunctionalTestBase::createAuthenticationPlugin
2 calls to AuthenticationOAuthTest::createAuthenticationPlugin()
- AuthenticationOAuthTest::setUp in modules/
entity_share_client/ tests/ src/ Functional/ AuthenticationOAuthTest.php - AuthenticationOAuthTest::testImport in modules/
entity_share_client/ tests/ src/ Functional/ AuthenticationOAuthTest.php - Test that correct entities are created with different authentications.
File
- modules/
entity_share_client/ tests/ src/ Functional/ AuthenticationOAuthTest.php, line 118
Class
- AuthenticationOAuthTest
- Functional test class for import with "OAuth" authorization.
Namespace
Drupal\Tests\entity_share_client\FunctionalCode
protected function createAuthenticationPlugin(UserInterface $user, RemoteInterface $remote) {
// Create all needed OAuth-related entities on the "server" side.
$this
->serverOauthSetup();
$plugin = $this->authPluginManager
->createInstance('oauth');
$configuration = $plugin
->getConfiguration();
// To properly test, delete the cached key used in the previous run.
if ($this->keyValueStore
->get($configuration['uuid'] . '-' . $plugin
->getPluginId()) instanceof AccessTokenInterface) {
$this->keyValueStore
->delete($configuration['uuid'] . '-' . $plugin
->getPluginId());
}
// Override Guzzle HTTP client options.
// This is mandatory because otherwise in testing environment there would
// be a redirection from POST /oauth/token to GET /oauth/token.
// @see GuzzleHttp\RedirectMiddleware::modifyRequest().
$request_options = [
RequestOptions::HTTP_ERRORS => FALSE,
RequestOptions::ALLOW_REDIRECTS => [
'strict' => TRUE,
],
];
$site_settings = Settings::getAll();
$site_settings['http_client_config'] = $request_options;
new Settings($site_settings);
// Obtain the access token from server.
$credentials = [
'username' => $user
->getAccountName(),
'password' => $user->passRaw,
'client_id' => $this->clients[$user
->id()]
->uuid(),
'client_secret' => $this->clientSecret,
'authorization_path' => '/oauth/authorize',
'token_path' => '/oauth/token',
];
$access_token = '';
try {
$access_token = $plugin
->initializeToken($remote, $credentials);
} catch (\Exception $e) {
// Do nothing.
}
// Since this is an important part of OAuth functionality,
// assert that it is successful.
$this
->assertNotEmpty($access_token, 'The access token is not empty.');
// Remove the username and password.
unset($credentials['username']);
unset($credentials['password']);
$storage_key = $configuration['uuid'];
$this->keyValueStore
->set($storage_key, $credentials);
// Save the token.
$this->keyValueStore
->set($storage_key . '-' . $plugin
->getPluginId(), $access_token);
// We are using key value store for local credentials storage.
$configuration['data'] = [
'credential_provider' => 'entity_share',
'storage_key' => $storage_key,
];
$plugin
->setConfiguration($configuration);
return $plugin;
}