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']) ); } } }