diff --git a/apps/dav/tests/unit/CalDAV/WebcalCaching/RefreshWebcalServiceTest.php b/apps/dav/tests/unit/CalDAV/WebcalCaching/RefreshWebcalServiceTest.php index 8de32ad8c35..e662f4651a0 100644 --- a/apps/dav/tests/unit/CalDAV/WebcalCaching/RefreshWebcalServiceTest.php +++ b/apps/dav/tests/unit/CalDAV/WebcalCaching/RefreshWebcalServiceTest.php @@ -31,6 +31,7 @@ use OCA\DAV\CalDAV\WebcalCaching\RefreshWebcalService; use OCP\Http\Client\IClient; use OCP\Http\Client\IClientService; use OCP\Http\Client\IResponse; +use OCP\Http\Client\LocalServerException; use OCP\IConfig; use OCP\ILogger; use PHPUnit\Framework\MockObject\MockObject; @@ -170,8 +171,12 @@ class RefreshWebcalServiceTest extends TestCase { * @param string $source */ public function testRunLocalURL($source) { - $refreshWebcalService = new RefreshWebcalService($this->caldavBackend, - $this->clientService, $this->config, $this->logger); + $refreshWebcalService = new RefreshWebcalService( + $this->caldavBackend, + $this->clientService, + $this->config, + $this->logger + ); $this->caldavBackend->expects($this->once()) ->method('getSubscriptionsForUser') @@ -199,8 +204,13 @@ class RefreshWebcalServiceTest extends TestCase { ->with('dav', 'webcalAllowLocalAccess', 'no') ->willReturn('no'); - $client->expects($this->never()) - ->method('get'); + $client->expects($this->once()) + ->method('get') + ->willThrowException(new LocalServerException()); + + $this->logger->expects($this->once()) + ->method('logException') + ->with($this->isInstanceOf(LocalServerException::class), $this->anything()); $refreshWebcalService->refreshSubscription('principals/users/testuser', 'sub123'); } @@ -221,7 +231,42 @@ class RefreshWebcalServiceTest extends TestCase { ['10.0.0.1'], ['another-host.local'], ['service.localhost'], - ['!@#$'], // test invalid url ]; } + + public function testInvalidUrl() { + $refreshWebcalService = new RefreshWebcalService($this->caldavBackend, + $this->clientService, $this->config, $this->logger); + + $this->caldavBackend->expects($this->once()) + ->method('getSubscriptionsForUser') + ->with('principals/users/testuser') + ->willReturn([ + [ + 'id' => 42, + 'uri' => 'sub123', + 'refreshreate' => 'P1H', + 'striptodos' => 1, + 'stripalarms' => 1, + 'stripattachments' => 1, + 'source' => '!@#$' + ], + ]); + + $client = $this->createMock(IClient::class); + $this->clientService->expects($this->once()) + ->method('newClient') + ->with() + ->willReturn($client); + + $this->config->expects($this->once()) + ->method('getAppValue') + ->with('dav', 'webcalAllowLocalAccess', 'no') + ->willReturn('no'); + + $client->expects($this->never()) + ->method('get'); + + $refreshWebcalService->refreshSubscription('principals/users/testuser', 'sub123'); + } } diff --git a/tests/lib/Http/Client/ClientServiceTest.php b/tests/lib/Http/Client/ClientServiceTest.php index 02f331483de..b1bc5a188ce 100644 --- a/tests/lib/Http/Client/ClientServiceTest.php +++ b/tests/lib/Http/Client/ClientServiceTest.php @@ -13,6 +13,7 @@ use OC\Http\Client\Client; use OC\Http\Client\ClientService; use OCP\ICertificateManager; use OCP\IConfig; +use OCP\ILogger; /** * Class ClientServiceTest @@ -23,10 +24,11 @@ class ClientServiceTest extends \Test\TestCase { $config = $this->createMock(IConfig::class); /** @var ICertificateManager $certificateManager */ $certificateManager = $this->createMock(ICertificateManager::class); + $logger = $this->createMock(ILogger::class); - $clientService = new ClientService($config, $certificateManager); + $clientService = new ClientService($config, $logger, $certificateManager); $this->assertEquals( - new Client($config, $certificateManager, new GuzzleClient()), + new Client($config, $logger, $certificateManager, new GuzzleClient()), $clientService->newClient() ); }