From 25627ce04e9de3de65c8f386eb5516ac9aa776b5 Mon Sep 17 00:00:00 2001
From: "kunal.sachdev" <kunal.sachdev@3685163.no-reply.drupal.org>
Date: Sat, 12 Nov 2022 14:48:23 +0000
Subject: [PATCH] Issue #3320487 by kunal.sachdev, tedbow: fake-site fixtures
 has invalid packages in composer files

---
 .../fake_site/vendor/composer/installed.json    |  7 +++++--
 .../fake_site/vendor/composer/installed.php     |  1 +
 .../tests/src/Kernel/FakeSiteFixtureTest.php    | 17 +++++++++++++++++
 .../src/Kernel/FixtureUtilityTraitTest.php      | 14 ++++++++++++--
 4 files changed, 35 insertions(+), 4 deletions(-)

diff --git a/package_manager/tests/fixtures/fake_site/vendor/composer/installed.json b/package_manager/tests/fixtures/fake_site/vendor/composer/installed.json
index db52c02689..59e05ee10a 100644
--- a/package_manager/tests/fixtures/fake_site/vendor/composer/installed.json
+++ b/package_manager/tests/fixtures/fake_site/vendor/composer/installed.json
@@ -3,6 +3,7 @@
     {
       "name": "drupal/core",
       "version": "9.8.0",
+      "type": "drupal-core",
       "extra": {
         "drupal-scaffold": {
           "file-mapping": {
@@ -14,11 +15,13 @@
     },
     {
       "name": "drupal/core-recommended",
-      "version": "9.8.0"
+      "version": "9.8.0",
+      "type": "drupal-core"
     },
     {
       "name": "drupal/core-dev",
-      "version": "9.8.0"
+      "version": "9.8.0",
+      "type": "drupal-core"
     }
   ],
   "dev-package-names": []
diff --git a/package_manager/tests/fixtures/fake_site/vendor/composer/installed.php b/package_manager/tests/fixtures/fake_site/vendor/composer/installed.php
index e1e78adc66..df34477937 100644
--- a/package_manager/tests/fixtures/fake_site/vendor/composer/installed.php
+++ b/package_manager/tests/fixtures/fake_site/vendor/composer/installed.php
@@ -9,6 +9,7 @@ return [
   'versions' => [
     'drupal/core' => [
       'name' => 'drupal/core',
+      'type' => 'drupal-core',
     ],
   ],
 ];
diff --git a/package_manager/tests/src/Kernel/FakeSiteFixtureTest.php b/package_manager/tests/src/Kernel/FakeSiteFixtureTest.php
index b04ee4b83f..e8a2dd6921 100644
--- a/package_manager/tests/src/Kernel/FakeSiteFixtureTest.php
+++ b/package_manager/tests/src/Kernel/FakeSiteFixtureTest.php
@@ -2,6 +2,8 @@
 
 namespace Drupal\Tests\package_manager\Kernel;
 
+use Drupal\package_manager\ComposerUtility;
+
 /**
  * Test that the 'fake-site' fixture is a valid starting point.
  *
@@ -20,4 +22,19 @@ class FakeSiteFixtureTest extends PackageManagerKernelTestBase {
     $this->assertStatusCheckResults([]);
   }
 
+  /**
+   * Tests calls to ComposerUtility class methods.
+   */
+  public function testCallToComposerUtilityMethods(): void {
+    $active_dir = $this->container->get('package_manager.path_locator')->getProjectRoot();
+    $composer_utility = ComposerUtility::createForDirectory($active_dir);
+    // Although the fake-site fixture does not contain any Composer packages or
+    // Drupal projects that would be returned from these methods calling them
+    // and asserting that they return NULL proves there are not any missing
+    // metadata in the fixture files that would cause these methods to throw an
+    // exception.
+    $this->assertNull($composer_utility->getProjectForPackage('any_random_name'));
+    $this->assertNull($composer_utility->getPackageForProject('drupal/any_random_name'));
+  }
+
 }
diff --git a/package_manager/tests/src/Kernel/FixtureUtilityTraitTest.php b/package_manager/tests/src/Kernel/FixtureUtilityTraitTest.php
index f9677be07d..fb078d62e4 100644
--- a/package_manager/tests/src/Kernel/FixtureUtilityTraitTest.php
+++ b/package_manager/tests/src/Kernel/FixtureUtilityTraitTest.php
@@ -97,7 +97,12 @@ class FixtureUtilityTraitTest extends PackageManagerKernelTestBase {
     // have been prefixed with the __DIR__ constant, which should be interpreted
     // when installed.php is loaded by the PHP runtime.
     $installed_php_expected_packages['my/dev-package']['install_path'] = "$this->dir/vendor/composer/../relative/path";
-    $installed_php_expected_packages = ['drupal/core' => ['name' => 'drupal/core']] + $installed_php_expected_packages;
+    $installed_php_expected_packages = [
+      'drupal/core' => [
+        'name' => 'drupal/core',
+        'type' => 'drupal-core',
+      ],
+    ] + $installed_php_expected_packages;
     $this->assertSame($installed_php_expected_packages, $installed_php);
   }
 
@@ -183,7 +188,12 @@ class FixtureUtilityTraitTest extends PackageManagerKernelTestBase {
     $this->assertContains('my/dev-package', $installed_json['dev-package-names']);
     $this->assertNotContains('my/other-package', $installed_json['dev-package-names']);
     $this->assertNotContains('my/package', $installed_json['dev-package-names']);
-    $installed_php_expected_packages = ['drupal/core' => ['name' => 'drupal/core']] + $installed_php_expected_packages;
+    $installed_php_expected_packages = [
+      'drupal/core' => [
+        'name' => 'drupal/core',
+        'type' => 'drupal-core',
+      ],
+    ] + $installed_php_expected_packages;
     // @see ::testAddPackage()
     $this->assertSame($installed_php_expected_packages, $installed_php);
   }
-- 
GitLab