acquia_dam-1.0.0-rc1/tests/src/Kernel/DamClientFactoryTest.php
tests/src/Kernel/DamClientFactoryTest.php
<?php namespace Drupal\Tests\acquia_dam\Kernel; use GuzzleHttp\HandlerStack; use Psr\Http\Message\UriInterface; /** * Tests client factory client creation. * * @group acquia_dam */ class DamClientFactoryTest extends AcquiaDamKernelTestBase { /** * Tests the client created with client factory. * * @throws \Exception */ public function testClient() { $user = $this->drupalSetUpCurrentUser(); $client_factory = $this->container->get('acquia_dam.client.factory'); $client = $client_factory->getUserClient(); /** @var array<string, mixed> $config */ $config = $client->getConfig(); $this->assertNotEmpty($config); $this->assertNotEmpty($config['base_uri']); $base_uri = $config['base_uri']; self::assertInstanceOf(UriInterface::class, $base_uri); $this->assertEquals('api.widencollective.com', $base_uri->getHost()); $this->assertEquals('https', $base_uri->getScheme()); $this->assertNotEmpty($config['headers']); $this->assertNotEmpty($config['headers']['Content-Type']); $this->assertNotEmpty($config['handler']); $token = $this->container->get('acquia_dam.authentication_service') ->getUserData($user->id()); self::assertArrayHasKey('acquia_dam_token', $token); $this->assertEquals('application/json', $config['headers']['Content-Type']); $this->assertInstanceOf(HandlerStack::class, $config['handler']); } /** * Tests the config for the created client. */ public function testClientConfig(): void { $client = $this->container->get('acquia_dam.client.factory')->getUserClient(); $config = $client->getConfig(); self::assertEquals('https://api.widencollective.com', (string) $config['base_uri']); self::assertStringContainsString('AcquiaDam', $config['client-user-agent']); self::assertEquals('application/json', $config['headers']['Content-Type']); } /** * Tests the refresh token. */ public function testRefreshToken(): void { $this->config('acquia_dam.settings') ->set('auth_type', 'refresh_token') ->save(); $expected_access_token = 'wat_laser_b1d3c61e03c65d0650550f35a330249e'; $expected_refresh_token = 'wrt_laser_cccc84d27f899e00b27fbe25b1fcf35f'; $this->setDamSiteToken(); // At this point we have a random string as access and refresh tokens. // Mock middleware will return 401. $access_token = $this->state->get('acquia_dam_token'); $refresh_token = $this->state->get('acquia_dam_refresh_token'); $this->assertNotEquals($expected_access_token, $access_token); $this->assertNotEquals($expected_refresh_token, $refresh_token); $client = $this->container->get('acquia_dam.client.factory')->getSiteClient(); // Following request will trigger the middleware to replace the tokens. $client->get('/v2/test'); $access_token = $this->state->get('acquia_dam_token'); $refresh_token = $this->state->get('acquia_dam_refresh_token'); $this->assertEquals($expected_access_token, $access_token); $this->assertEquals($expected_refresh_token, $refresh_token); } }