function SecurityAdvisoriesFetcherTest::testHttpFallback
Same name in other branches
- 9 core/modules/system/tests/src/Kernel/SecurityAdvisories/SecurityAdvisoriesFetcherTest.php \Drupal\Tests\system\Kernel\SecurityAdvisories\SecurityAdvisoriesFetcherTest::testHttpFallback()
- 10 core/modules/system/tests/src/Kernel/SecurityAdvisories/SecurityAdvisoriesFetcherTest.php \Drupal\Tests\system\Kernel\SecurityAdvisories\SecurityAdvisoriesFetcherTest::testHttpFallback()
@covers ::doRequest @covers ::getSecurityAdvisories
File
-
core/
modules/ system/ tests/ src/ Kernel/ SecurityAdvisories/ SecurityAdvisoriesFetcherTest.php, line 628
Class
- SecurityAdvisoriesFetcherTest
- @coversDefaultClass \Drupal\system\SecurityAdvisories\SecurityAdvisoriesFetcher
Namespace
Drupal\Tests\system\Kernel\SecurityAdvisoriesCode
public function testHttpFallback() : void {
$this->setSetting('update_fetch_with_http_fallback', TRUE);
$feed_item = [
'is_psa' => 1,
'type' => 'core',
'project' => 'drupal',
'insecure' => [
\Drupal::VERSION,
],
'title' => 'SA title',
'link' => 'http://example.com',
];
$this->setTestFeedResponses([
new Response(500, [], 'HTTPS failed'),
new Response(200, [], json_encode([
$feed_item,
])),
]);
$advisories = $this->getAdvisories();
// There should be two request / response pairs.
$this->assertCount(2, $this->history);
// The first request should have been HTTPS and should have failed.
$first_try = $this->history[0];
$this->assertNotEmpty($first_try);
$this->assertEquals('https', $first_try['request']->getUri()
->getScheme());
$this->assertEquals(500, $first_try['response']->getStatusCode());
// The second request should have been the HTTP fallback and should have
// worked.
$second_try = $this->history[1];
$this->assertNotEmpty($second_try);
$this->assertEquals('http', $second_try['request']->getUri()
->getScheme());
$this->assertEquals(200, $second_try['response']->getStatusCode());
$this->assertCount(1, $advisories);
$this->assertSame('http://example.com', $advisories[0]->getUrl());
$this->assertSame('SA title', $advisories[0]->getTitle());
$this->assertSame([
"Server error: `GET https://updates.drupal.org/psa.json` resulted in a `500 Internal Server Error` response:\nHTTPS failed\n",
], $this->errorMessages);
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.