aboutsummaryrefslogtreecommitdiffstats
path: root/apps/user_ldap/tests/LDAPTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'apps/user_ldap/tests/LDAPTest.php')
-rw-r--r--apps/user_ldap/tests/LDAPTest.php72
1 files changed, 72 insertions, 0 deletions
diff --git a/apps/user_ldap/tests/LDAPTest.php b/apps/user_ldap/tests/LDAPTest.php
new file mode 100644
index 00000000000..6da592ad6a1
--- /dev/null
+++ b/apps/user_ldap/tests/LDAPTest.php
@@ -0,0 +1,72 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+namespace OCA\User_LDAP\Tests;
+
+use OCA\User_LDAP\LDAP;
+use PHPUnit\Framework\MockObject\MockObject;
+use Test\TestCase;
+
+class LDAPTest extends TestCase {
+ private LDAP&MockObject $ldap;
+
+ protected function setUp(): void {
+ parent::setUp();
+ $this->ldap = $this->getMockBuilder(LDAP::class)
+ ->onlyMethods(['invokeLDAPMethod'])
+ ->getMock();
+ }
+
+ public static function errorProvider(): array {
+ return [
+ [
+ 'ldap_search(): Partial search results returned: Sizelimit exceeded at /srv/http/nextcloud/master/apps/user_ldap/lib/LDAP.php#292',
+ false
+ ],
+ [
+ 'Some other error', true
+ ]
+ ];
+ }
+
+ #[\PHPUnit\Framework\Attributes\DataProvider('errorProvider')]
+ public function testSearchWithErrorHandler(string $errorMessage, bool $passThrough): void {
+ $wasErrorHandlerCalled = false;
+ $errorHandler = function ($number, $message, $file, $line) use (&$wasErrorHandlerCalled): void {
+ $wasErrorHandlerCalled = true;
+ };
+
+ set_error_handler($errorHandler);
+
+ $this->ldap
+ ->expects($this->once())
+ ->method('invokeLDAPMethod')
+ ->with('search', $this->anything(), $this->anything(), $this->anything(), $this->anything(), $this->anything())
+ ->willReturnCallback(function () use ($errorMessage): void {
+ trigger_error($errorMessage);
+ });
+
+ $fakeResource = ldap_connect();
+ $this->ldap->search($fakeResource, 'base', 'filter', []);
+ $this->assertSame($wasErrorHandlerCalled, $passThrough);
+
+ restore_error_handler();
+ }
+
+ public function testModReplace(): void {
+ $link = $this->createMock(LDAP::class);
+ $userDN = 'CN=user';
+ $password = 'MyPassword';
+ $this->ldap
+ ->expects($this->once())
+ ->method('invokeLDAPMethod')
+ ->with('mod_replace', $link, $userDN, ['userPassword' => $password])
+ ->willReturn(true);
+
+ $this->assertTrue($this->ldap->modReplace($link, $userDN, $password));
+ }
+}