aboutsummaryrefslogtreecommitdiffstats
path: root/tests/lib/Support/CrashReport/RegistryTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'tests/lib/Support/CrashReport/RegistryTest.php')
-rw-r--r--tests/lib/Support/CrashReport/RegistryTest.php106
1 files changed, 106 insertions, 0 deletions
diff --git a/tests/lib/Support/CrashReport/RegistryTest.php b/tests/lib/Support/CrashReport/RegistryTest.php
new file mode 100644
index 00000000000..adf7579b202
--- /dev/null
+++ b/tests/lib/Support/CrashReport/RegistryTest.php
@@ -0,0 +1,106 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+namespace Test\Support\CrashReport;
+
+use Exception;
+use OC\Support\CrashReport\Registry;
+use OCP\AppFramework\QueryException;
+use OCP\Support\CrashReport\ICollectBreadcrumbs;
+use OCP\Support\CrashReport\IMessageReporter;
+use OCP\Support\CrashReport\IReporter;
+use Test\TestCase;
+
+class RegistryTest extends TestCase {
+ private Registry $registry;
+
+ protected function setUp(): void {
+ parent::setUp();
+
+ $this->registry = new Registry();
+ }
+
+ /**
+ * Doesn't assert anything, just checks whether anything "explodes"
+ */
+ public function testDelegateToNone(): void {
+ $exception = new Exception('test');
+
+ $this->registry->delegateReport($exception);
+ $this->addToAssertionCount(1);
+ }
+
+ public function testRegisterLazy(): void {
+ $reporterClass = '\OCA\MyApp\Reporter';
+ $reporter = $this->createMock(IReporter::class);
+ $this->overwriteService($reporterClass, $reporter);
+ $reporter->expects($this->once())
+ ->method('report');
+ $exception = new Exception('test');
+
+ $this->registry->registerLazy($reporterClass);
+ $this->registry->delegateReport($exception);
+ }
+
+ /**
+ * Doesn't assert anything, just checks whether anything "explodes"
+ */
+ public function testRegisterLazyCantLoad(): void {
+ $reporterClass = '\OCA\MyApp\Reporter';
+ /* We do not register reporterClass in DI, so it will throw a QueryException queried */
+ $exception = new Exception('test');
+
+ $this->registry->registerLazy($reporterClass);
+ $this->registry->delegateReport($exception);
+ $this->addToAssertionCount(1);
+ }
+
+ public function testDelegateBreadcrumbCollection(): void {
+ $reporter1 = $this->createMock(IReporter::class);
+ $reporter2 = $this->createMock(ICollectBreadcrumbs::class);
+ $message = 'hello';
+ $category = 'log';
+ $reporter2->expects($this->once())
+ ->method('collect')
+ ->with($message, $category);
+
+ $this->registry->register($reporter1);
+ $this->registry->register($reporter2);
+ $this->registry->delegateBreadcrumb($message, $category);
+ }
+
+ public function testDelegateToAll(): void {
+ $reporter1 = $this->createMock(IReporter::class);
+ $reporter2 = $this->createMock(IReporter::class);
+ $exception = new Exception('test');
+ $reporter1->expects($this->once())
+ ->method('report')
+ ->with($exception);
+ $reporter2->expects($this->once())
+ ->method('report')
+ ->with($exception);
+
+ $this->registry->register($reporter1);
+ $this->registry->register($reporter2);
+ $this->registry->delegateReport($exception);
+ }
+
+ public function testDelegateMessage(): void {
+ $reporter1 = $this->createMock(IReporter::class);
+ $reporter2 = $this->createMock(IMessageReporter::class);
+ $message = 'hello';
+ $reporter2->expects($this->once())
+ ->method('reportMessage')
+ ->with($message, []);
+
+ $this->registry->register($reporter1);
+ $this->registry->register($reporter2);
+ $this->registry->delegateMessage($message);
+ }
+}