You are here

public function ProviderRepositoryTest::testCorruptProviderIgnored in Drupal 9

Tests a successful fetch but with a single corrupt item.

File

core/modules/media/tests/src/Unit/ProviderRepositoryTest.php, line 206

Class

ProviderRepositoryTest
@coversDefaultClass \Drupal\media\OEmbed\ProviderRepository

Namespace

Drupal\Tests\media\Unit

Code

public function testCorruptProviderIgnored() : void {
  $body = <<<END
[
  {
    "provider_name": "YouTube",
    "provider_url": "https:\\/\\/www.youtube.com\\/",
    "endpoints": [
      {
        "schemes": [
          "https:\\/\\/*.youtube.com\\/watch*",
          "https:\\/\\/*.youtube.com\\/v\\/*"
        ],
        "url": "https:\\/\\/www.youtube.com\\/oembed",
        "discovery": true
      }
    ]
  },
  {
    "provider_name": "Uncle Rico's football videos",
    "provider_url": "not a real url",
    "endpoints": []
  }
]
END;
  $response = new Response(200, [], $body);
  $this->responses
    ->append($response);

  // The corrupt provider should cause a warning to be logged.
  $this->logger
    ->log(RfcLogLevel::WARNING, "Provider Uncle Rico's football videos does not define a valid external URL.", Argument::type('array'))
    ->shouldBeCalled();
  $youtube = $this->repository
    ->get('YouTube');

  // The corrupt provider should not be stored.
  $stored_data = [
    'data' => [
      'YouTube' => $youtube,
    ],
    'expires' => $this->currentTime + 604800,
  ];
  $this
    ->assertSame($stored_data, $this->keyValue
    ->get('oembed_providers'));
  $this
    ->expectException('InvalidArgumentException');
  $this->repository
    ->get("Uncle Rico's football videos");
}