X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=web%2Fcore%2Fmodules%2Fmedia%2Ftests%2Fsrc%2FTraits%2FOEmbedTestTrait.php;fp=web%2Fcore%2Fmodules%2Fmedia%2Ftests%2Fsrc%2FTraits%2FOEmbedTestTrait.php;h=a3699ff690720b77c2b0250764ab24f156add81a;hp=0000000000000000000000000000000000000000;hb=0bf8d09d2542548982e81a441b1f16e75873a04f;hpb=74df008bdbb3a11eeea356744f39b802369bda3c diff --git a/web/core/modules/media/tests/src/Traits/OEmbedTestTrait.php b/web/core/modules/media/tests/src/Traits/OEmbedTestTrait.php new file mode 100644 index 000000000..a3699ff69 --- /dev/null +++ b/web/core/modules/media/tests/src/Traits/OEmbedTestTrait.php @@ -0,0 +1,89 @@ +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']) + ); + } + } + +}