1111use Acquia \Cli \Helpers \SshHelper ;
1212use Acquia \Cli \Transformer \EnvironmentTransformer ;
1313use AcquiaCloudApi \Response \SiteInstanceDatabaseBackupResponse ;
14+ use AcquiaCloudApi \Response \SiteInstanceDatabaseConnectionResponse ;
1415use AcquiaCloudApi \Response \SiteInstanceDatabaseResponse ;
1516use GuzzleHttp \Client ;
1617use Prophecy \Argument ;
@@ -463,6 +464,10 @@ public function testPullDatabasesWithCodebaseUuid(): void
463464 $ this ->clientProphecy ->request ('get ' , '/site-instances/8979a8ac-80dc-4df8-b2f0-6be36554a370.3e8ecbec-ea7c-4260-8414-ef2938c859bc/database ' )
464465 ->willReturn ($ siteInstanceDatabase )
465466 ->shouldBeCalled ();
467+ $ siteInstanceDatabaseConnection = $ this ->getMockSiteInstanceDatabaseConnectionResponse ();
468+ $ this ->clientProphecy ->request ('get ' , '/site-instances/8979a8ac-80dc-4df8-b2f0-6be36554a370.3e8ecbec-ea7c-4260-8414-ef2938c859bc/database/connection ' )
469+ ->willReturn ($ siteInstanceDatabaseConnection )
470+ ->shouldBeCalled ();
466471 $ createSiteInstanceDatabaseBackup = $ this ->getMockSiteInstanceDatabaseBackupsResponse ('post ' , '201 ' );
467472 $ this ->clientProphecy ->request ('post ' , '/site-instances/8979a8ac-80dc-4df8-b2f0-6be36554a370.3e8ecbec-ea7c-4260-8414-ef2938c859bc/database/backups ' )
468473 ->willReturn ($ createSiteInstanceDatabaseBackup );
@@ -472,7 +477,7 @@ public function testPullDatabasesWithCodebaseUuid(): void
472477 ->shouldBeCalled ();
473478
474479 $ url = "https://environment-service-php.acquia.com/api/environments/d3f7270e-c45f-4801-9308-5e8afe84a323/ " ;
475- $ this ->mockDownloadCodebaseBackup (EnvironmentTransformer::transformSiteInstanceDatabase (new SiteInstanceDatabaseResponse ($ siteInstanceDatabase )), $ url , EnvironmentTransformer::transformSiteInstanceDatabaseBackup (new SiteInstanceDatabaseBackupResponse ($ siteInstanceDatabaseBackups ->_embedded ->items [0 ])));
480+ $ this ->mockDownloadCodebaseBackup (EnvironmentTransformer::transformSiteInstanceDatabase (new SiteInstanceDatabaseResponse ($ siteInstanceDatabase ), new SiteInstanceDatabaseConnectionResponse ( $ siteInstanceDatabaseConnection ) ), $ url , EnvironmentTransformer::transformSiteInstanceDatabaseBackup (new SiteInstanceDatabaseBackupResponse ($ siteInstanceDatabaseBackups ->_embedded ->items [0 ])));
476481
477482 $ localMachineHelper = $ this ->mockLocalMachineHelper ();
478483 $ this ->mockExecuteMySqlConnect ($ localMachineHelper , true );
@@ -587,6 +592,10 @@ public function testPullDatabasesWithCodebaseUuidOnDemand(): void
587592 $ this ->clientProphecy ->request ('get ' , '/site-instances/8979a8ac-80dc-4df8-b2f0-6be36554a370.3e8ecbec-ea7c-4260-8414-ef2938c859bc/database ' )
588593 ->willReturn ($ siteInstanceDatabase )
589594 ->shouldBeCalled ();
595+ $ siteInstanceDatabaseConnection = $ this ->getMockSiteInstanceDatabaseConnectionResponse ();
596+ $ this ->clientProphecy ->request ('get ' , '/site-instances/8979a8ac-80dc-4df8-b2f0-6be36554a370.3e8ecbec-ea7c-4260-8414-ef2938c859bc/database/connection ' )
597+ ->willReturn ($ siteInstanceDatabaseConnection )
598+ ->shouldBeCalled ();
590599 $ createSiteInstanceDatabaseBackup = $ this ->getMockSiteInstanceDatabaseBackupsResponse ('post ' , '201 ' );
591600 $ this ->clientProphecy ->request ('post ' , '/site-instances/8979a8ac-80dc-4df8-b2f0-6be36554a370.3e8ecbec-ea7c-4260-8414-ef2938c859bc/database/backups ' )
592601 ->willReturn ($ createSiteInstanceDatabaseBackup )
@@ -598,7 +607,7 @@ public function testPullDatabasesWithCodebaseUuidOnDemand(): void
598607 ->shouldBeCalled ();
599608
600609 $ url = "https://environment-service-php.acquia.com/api/environments/d3f7270e-c45f-4801-9308-5e8afe84a323/ " ;
601- $ this ->mockDownloadCodebaseBackup (EnvironmentTransformer::transformSiteInstanceDatabase (new SiteInstanceDatabaseResponse ($ siteInstanceDatabase )), $ url , EnvironmentTransformer::transformSiteInstanceDatabaseBackup (new SiteInstanceDatabaseBackupResponse ($ siteInstanceDatabaseBackups ->_embedded ->items [0 ])));
610+ $ this ->mockDownloadCodebaseBackup (EnvironmentTransformer::transformSiteInstanceDatabase (new SiteInstanceDatabaseResponse ($ siteInstanceDatabase ), new SiteInstanceDatabaseConnectionResponse ( $ siteInstanceDatabaseConnection ) ), $ url , EnvironmentTransformer::transformSiteInstanceDatabaseBackup (new SiteInstanceDatabaseBackupResponse ($ siteInstanceDatabaseBackups ->_embedded ->items [0 ])));
602611
603612 $ localMachineHelper = $ this ->mockLocalMachineHelper ();
604613 $ this ->mockExecuteMySqlConnect ($ localMachineHelper , true );
@@ -637,4 +646,48 @@ public function testPullDatabasesWithCodebaseUuidOnDemand(): void
637646
638647 self ::unsetEnvVars (['AH_CODEBASE_UUID ' ]);
639648 }
649+
650+ /**
651+ * Test catch block in getSiteInstanceDatabaseConnection method.
652+ * Covers the logger->debug() line when an exception is caught.
653+ */
654+ public function testGetSiteInstanceDatabaseConnectionCatchBlock (): void
655+ {
656+ // Mock the client to throw an exception.
657+ $ this ->clientProphecy ->request ('get ' , Argument::containingString ('/site-instances/ ' ))
658+ ->willThrow (new \Exception ('API Connection Error ' ))
659+ ->shouldBeCalled ();
660+
661+ // Use reflection to call the private method (PHP 8.1+ doesn't need setAccessible).
662+ $ reflection = new \ReflectionClass ($ this ->command );
663+ $ method = $ reflection ->getMethod ('getSiteInstanceDatabaseConnection ' );
664+
665+ // Call the method - it should catch the exception and return null.
666+ $ result = $ method ->invoke ($ this ->command , 'test-site-uuid ' , 'test-env-uuid ' );
667+
668+ // Assert null is returned when exception is caught.
669+ $ this ->assertNull ($ result );
670+ }
671+
672+ /**
673+ * Test catch block in getSiteInstanceDatabase method.
674+ * Covers the logger->debug() line when an exception is caught.
675+ */
676+ public function testGetSiteInstanceDatabaseCatchBlock (): void
677+ {
678+ // Mock the client to throw an exception.
679+ $ this ->clientProphecy ->request ('get ' , Argument::containingString ('/site-instances/ ' ))
680+ ->willThrow (new \Exception ('API Error ' ))
681+ ->shouldBeCalled ();
682+
683+ // Use reflection to call the private method (PHP 8.1+ doesn't need setAccessible).
684+ $ reflection = new \ReflectionClass ($ this ->command );
685+ $ method = $ reflection ->getMethod ('getSiteInstanceDatabase ' );
686+
687+ // Call the method - it should catch the exception and return null.
688+ $ result = $ method ->invoke ($ this ->command , 'test-site-uuid ' , 'test-env-uuid ' );
689+
690+ // Assert null is returned when exception is caught.
691+ $ this ->assertNull ($ result );
692+ }
640693}
0 commit comments