From d105d7261cea3f2fb58f1b3280a39fd1a0f4fe5e Mon Sep 17 00:00:00 2001
From: "kunal.sachdev" <kunal.sachdev@3685163.no-reply.drupal.org>
Date: Wed, 8 Jun 2022 14:41:13 +0000
Subject: [PATCH] Issue #3276534 by kunal.sachdev, phenaproxima,
 Theresa.Grannum: CronUpdater::getMode() should always return a value

---
 src/CronUpdater.php                                      | 8 +++-----
 tests/src/Kernel/AutomaticUpdatesKernelTestBase.php      | 8 ++++----
 .../ReadinessValidation/CronFrequencyValidatorTest.php   | 9 +++++++++
 .../ReadinessValidationManagerTest.php                   | 6 ++++--
 .../Kernel/ReadinessValidation/SettingsValidatorTest.php | 2 +-
 .../StagedDatabaseUpdateValidatorTest.php                | 2 +-
 .../ReadinessValidation/StagedProjectsValidatorTest.php  | 2 +-
 tests/src/Kernel/ReleaseChooserTest.php                  | 4 ++--
 8 files changed, 25 insertions(+), 16 deletions(-)

diff --git a/src/CronUpdater.php b/src/CronUpdater.php
index c5a4359f7f..116b17e287 100644
--- a/src/CronUpdater.php
+++ b/src/CronUpdater.php
@@ -172,15 +172,13 @@ class CronUpdater extends Updater {
    *     can be done during cron.
    *   - \Drupal\automatic_updates\CronUpdater::ALL if all updates are allowed
    *     during cron.
-   *
-   * @todo Make this always return a string, with a sensible default, in
-   *   https://www.drupal.org/i/3276534.
    */
-  final public function getMode(): ?string {
+  final public function getMode(): string {
     if (self::$disabled) {
       return static::DISABLED;
     }
-    return $this->configFactory->get('automatic_updates.settings')->get('cron');
+    $mode = $this->configFactory->get('automatic_updates.settings')->get('cron');
+    return $mode ?: CronUpdater::SECURITY;
   }
 
 }
diff --git a/tests/src/Kernel/AutomaticUpdatesKernelTestBase.php b/tests/src/Kernel/AutomaticUpdatesKernelTestBase.php
index 8900b78412..8e7046d441 100644
--- a/tests/src/Kernel/AutomaticUpdatesKernelTestBase.php
+++ b/tests/src/Kernel/AutomaticUpdatesKernelTestBase.php
@@ -65,10 +65,10 @@ abstract class AutomaticUpdatesKernelTestBase extends PackageManagerKernelTestBa
     // have run.
     $this->registerPostUpdateFunctions();
 
-    // By default, pretend we're running Drupal core 9.8.1 and a non-security
-    // update to 9.8.2 is available.
-    $this->setCoreVersion('9.8.1');
-    $this->setReleaseMetadata(['drupal' => __DIR__ . '/../../fixtures/release-history/drupal.9.8.2.xml']);
+    // By default, pretend we're running Drupal core 9.8.0 and a non-security
+    // update to 9.8.1 is available.
+    $this->setCoreVersion('9.8.0');
+    $this->setReleaseMetadata(['drupal' => __DIR__ . '/../../fixtures/release-history/drupal.9.8.1-security.xml']);
 
     // Set a last cron run time so that the cron frequency validator will run
     // from a sane state.
diff --git a/tests/src/Kernel/ReadinessValidation/CronFrequencyValidatorTest.php b/tests/src/Kernel/ReadinessValidation/CronFrequencyValidatorTest.php
index 47d15ae228..07fd5e9351 100644
--- a/tests/src/Kernel/ReadinessValidation/CronFrequencyValidatorTest.php
+++ b/tests/src/Kernel/ReadinessValidation/CronFrequencyValidatorTest.php
@@ -21,6 +21,15 @@ class CronFrequencyValidatorTest extends AutomaticUpdatesKernelTestBase {
    */
   protected static $modules = ['automatic_updates'];
 
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp(): void {
+    parent::setUp();
+    $this->setCoreVersion('9.8.0');
+    $this->setReleaseMetadata(['drupal' => __DIR__ . '/../../../fixtures/release-history/drupal.9.8.1-security.xml']);
+  }
+
   /**
    * Tests that nothing is validated if updates are disabled during cron.
    */
diff --git a/tests/src/Kernel/ReadinessValidation/ReadinessValidationManagerTest.php b/tests/src/Kernel/ReadinessValidation/ReadinessValidationManagerTest.php
index 9db8368bfc..4094b1f2de 100644
--- a/tests/src/Kernel/ReadinessValidation/ReadinessValidationManagerTest.php
+++ b/tests/src/Kernel/ReadinessValidation/ReadinessValidationManagerTest.php
@@ -220,7 +220,8 @@ class ReadinessValidationManagerTest extends AutomaticUpdatesKernelTestBase {
    */
   public function testStoredResultsDeletedPostApply(): void {
     $this->enableModules(['automatic_updates']);
-    $this->setCoreVersion('9.8.1');
+    $this->setCoreVersion('9.8.0');
+    $this->setReleaseMetadata(['drupal' => __DIR__ . '/../../../fixtures/release-history/drupal.9.8.1-security.xml']);
 
     // The readiness checker should raise a warning, so that the update is not
     // blocked or aborted.
@@ -231,6 +232,7 @@ class ReadinessValidationManagerTest extends AutomaticUpdatesKernelTestBase {
     /** @var \Drupal\automatic_updates\Validation\ReadinessValidationManager $manager */
     $manager = $this->container->get('automatic_updates.readiness_validation_manager')
       ->run();
+    $this->assertValidationResultsEqual($results, $manager->getResults());
     TestSubscriber1::setTestResult(NULL, ReadinessCheckEvent::class);
     // Even though the checker no longer returns any results, the previous
     // results should be stored.
@@ -244,7 +246,7 @@ class ReadinessValidationManagerTest extends AutomaticUpdatesKernelTestBase {
 
     /** @var \Drupal\automatic_updates\Updater $updater */
     $updater = $this->container->get('automatic_updates.updater');
-    $updater->begin(['drupal' => '9.8.2']);
+    $updater->begin(['drupal' => '9.8.1']);
     $updater->stage();
     $updater->apply();
     $updater->destroy();
diff --git a/tests/src/Kernel/ReadinessValidation/SettingsValidatorTest.php b/tests/src/Kernel/ReadinessValidation/SettingsValidatorTest.php
index dff44ec010..30493cecf7 100644
--- a/tests/src/Kernel/ReadinessValidation/SettingsValidatorTest.php
+++ b/tests/src/Kernel/ReadinessValidation/SettingsValidatorTest.php
@@ -51,7 +51,7 @@ class SettingsValidatorTest extends AutomaticUpdatesKernelTestBase {
     $this->assertCheckerResultsFromManager($expected_results, TRUE);
     try {
       $this->container->get('automatic_updates.updater')->begin([
-        'drupal' => '9.8.2',
+        'drupal' => '9.8.1',
       ]);
       // If there was no exception, ensure we're not expecting any errors.
       $this->assertSame([], $expected_results);
diff --git a/tests/src/Kernel/ReadinessValidation/StagedDatabaseUpdateValidatorTest.php b/tests/src/Kernel/ReadinessValidation/StagedDatabaseUpdateValidatorTest.php
index 1269a0cee0..aaf909d17c 100644
--- a/tests/src/Kernel/ReadinessValidation/StagedDatabaseUpdateValidatorTest.php
+++ b/tests/src/Kernel/ReadinessValidation/StagedDatabaseUpdateValidatorTest.php
@@ -35,7 +35,7 @@ class StagedDatabaseUpdateValidatorTest extends AutomaticUpdatesKernelTestBase {
 
     /** @var \Drupal\Tests\automatic_updates\Kernel\TestCronUpdater $updater */
     $updater = $this->container->get('automatic_updates.cron_updater');
-    $updater->begin(['drupal' => '9.8.2']);
+    $updater->begin(['drupal' => '9.8.1']);
     $updater->stage();
   }
 
diff --git a/tests/src/Kernel/ReadinessValidation/StagedProjectsValidatorTest.php b/tests/src/Kernel/ReadinessValidation/StagedProjectsValidatorTest.php
index 8ff6271c6f..f393369997 100644
--- a/tests/src/Kernel/ReadinessValidation/StagedProjectsValidatorTest.php
+++ b/tests/src/Kernel/ReadinessValidation/StagedProjectsValidatorTest.php
@@ -46,7 +46,7 @@ class StagedProjectsValidatorTest extends AutomaticUpdatesKernelTestBase {
   private function validate(array $expected_results): void {
     /** @var \Drupal\automatic_updates\Updater $updater */
     $updater = $this->container->get('automatic_updates.updater');
-    $updater->begin(['drupal' => '9.8.2']);
+    $updater->begin(['drupal' => '9.8.1']);
     $updater->stage();
 
     try {
diff --git a/tests/src/Kernel/ReleaseChooserTest.php b/tests/src/Kernel/ReleaseChooserTest.php
index 82c7e686da..52d8e918bd 100644
--- a/tests/src/Kernel/ReleaseChooserTest.php
+++ b/tests/src/Kernel/ReleaseChooserTest.php
@@ -79,14 +79,14 @@ class ReleaseChooserTest extends AutomaticUpdatesKernelTestBase {
         'updater' => 'automatic_updates.cron_updater',
         'minor_support' => FALSE,
         'installed_version' => '9.8.0',
-        'current_minor' => '9.8.2',
+        'current_minor' => '9.8.1',
         'next_minor' => NULL,
       ],
       'cron, installed 9.8.0, minor support' => [
         'updater' => 'automatic_updates.cron_updater',
         'minor_support' => TRUE,
         'installed_version' => '9.8.0',
-        'current_minor' => '9.8.2',
+        'current_minor' => '9.8.1',
         'next_minor' => NULL,
       ],
       'cron, installed 9.7.0, no minor support' => [
-- 
GitLab