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->setExpectedException(ProviderException::class, 'Remote oEmbed providers database returned invalid or empty list.'); $this->container->get('media.oembed.provider_repository')->getAll(); } /** * Data provider for testEmptyProviderList(). * * @see ::testEmptyProviderList() * * @return array */ public function providerEmptyProviderList() { return [ 'empty array' => ['[]'], 'empty string' => [''], ]; } /** * Tests that provider discovery fails with a non-existent provider database. * * @param string $providers_url * The URL of the provider database. * @param string $exception_message * The expected exception message. * * @dataProvider providerNonExistingProviderDatabase */ public function testNonExistingProviderDatabase($providers_url, $exception_message) { $this->config('media.settings') ->set('oembed_providers_url', $providers_url) ->save(); $this->setExpectedException(ProviderException::class, $exception_message); $this->container->get('media.oembed.provider_repository')->getAll(); } /** * Data provider for testEmptyProviderList(). * * @see ::testEmptyProviderList() * * @return array */ 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', ], ]; } }