Mercurial > hg > isophonics-drupal-site
view core/modules/media/tests/src/Traits/OEmbedTestTrait.php @ 19:fa3358dc1485 tip
Add ndrum files
author | Chris Cannam |
---|---|
date | Wed, 28 Aug 2019 13:14:47 +0100 |
parents | 129ea1e6d783 |
children |
line wrap: on
line source
<?php namespace Drupal\Tests\media\Traits; use Drupal\Component\Serialization\Json; use Drupal\Core\Url; use Drupal\media\OEmbed\Provider; /** * Contains helper functions for testing oEmbed functionality in isolation. */ trait OEmbedTestTrait { /** * Returns the relative path to the oEmbed fixtures directory. * * @return string */ protected function getFixturesDirectory() { return drupal_get_path('module', 'media') . '/tests/fixtures/oembed'; } /** * Returns the absolute URL of the oEmbed fixtures directory. * * @return string */ protected function getFixturesUrl() { return $this->baseUrl . '/' . $this->getFixturesDirectory(); } /** * Forces Media to use the provider database in the fixtures directory. */ protected function useFixtureProviders() { $this->config('media.settings') ->set('oembed_providers_url', $this->getFixturesUrl() . '/providers.json') ->save(); } /** * Configures the http_client service so that all requests are carried out * relative to the URL of the fixtures directory. For example, after calling * this method, a request for foobar.html will actually request * http://test-site/path/to/fuxtures/foobar.html. */ protected function lockHttpClientToFixtures() { $this->writeSettings([ 'settings' => [ 'http_client_config' => [ 'base_uri' => (object) [ 'value' => $this->getFixturesUrl() . '/', 'required' => TRUE, ], ], ], ]); } /** * Ensures that all oEmbed provider endpoints defined in the fixture * providers.json will use the media_test_oembed.resource.get route as their * URL. * * This requires the media_test_oembed module in order to work. */ protected function hijackProviderEndpoints() { $providers = $this->getFixturesDirectory() . '/providers.json'; $providers = file_get_contents($providers); $providers = Json::decode($providers); $endpoint_url = Url::fromRoute('media_test_oembed.resource.get') ->setAbsolute() ->toString(); /** @var \Drupal\media_test_oembed\ProviderRepository $provider_repository */ $provider_repository = $this->container->get('media.oembed.provider_repository'); foreach ($providers as &$provider) { foreach ($provider['endpoints'] as &$endpoint) { $endpoint['url'] = $endpoint_url; } $provider_repository->setProvider( new Provider($provider['provider_name'], $provider['provider_url'], $provider['endpoints']) ); } } }