ProviderRepositoryTest.php in oEmbed Providers 2.x
File
tests/src/Functional/ProviderRepositoryTest.php
View source
<?php
namespace Drupal\Tests\oembed_providers\Functional;
use Drupal\media\OEmbed\ProviderException;
use Drupal\Tests\media\Functional\MediaFunctionalTestBase;
use GuzzleHttp\Client;
use GuzzleHttp\Exception\RequestException;
use GuzzleHttp\Handler\MockHandler;
use GuzzleHttp\HandlerStack;
use GuzzleHttp\Psr7\Request;
class ProviderRepositoryTest extends MediaFunctionalTestBase {
protected $defaultTheme = 'stark';
protected static $modules = [
'oembed_providers',
];
public function testEmptyProviderList($content) {
$response = $this
->prophesize('\\GuzzleHttp\\Psr7\\Response');
$response
->getBody()
->willReturn($content);
$client = $this
->createMock('\\GuzzleHttp\\Client');
$client
->method('request')
->withAnyParameters()
->willReturn($response
->reveal());
$this->container
->set('http_client', $client);
$this
->expectException(ProviderException::class);
$this
->expectExceptionMessage('Remote oEmbed providers database returned invalid or empty list.');
$this->container
->get('media.oembed.provider_repository')
->getAll();
}
public function providerEmptyProviderList() {
return [
'empty array' => [
'[]',
],
'empty string' => [
'',
],
];
}
public function testNonExistingProviderDatabase($providers_url, $exception_message) {
$this
->config('media.settings')
->set('oembed_providers_url', $providers_url)
->save();
$mock = new MockHandler([
new RequestException('Error Communicating with Server', new Request('GET', 'test')),
]);
$handlerStack = HandlerStack::create($mock);
$client = new Client([
'handler' => $handlerStack,
]);
$this->container
->set('http_client', $client);
$this
->expectException(ProviderException::class);
$this
->expectExceptionMessage($exception_message);
$this->container
->get('media.oembed.provider_repository')
->getAll();
}
public function providerNonExistingProviderDatabase() {
return [
[
'http://oembed1.com/providers.json',
'Could not retrieve the oEmbed provider database from http://oembed1.com/providers.json',
],
[
'http://oembed.com/providers1.json',
'Could not retrieve the oEmbed provider database from http://oembed.com/providers1.json',
],
];
}
public function testProvidersAlterHook() {
$this->container
->get('module_installer')
->install([
'oembed_providers_test',
]);
$providers = $this->container
->get('media.oembed.provider_repository')
->getAll();
$this
->assertArrayHasKey('My Custom Provider', $providers);
}
}