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.php74
1 files changed, 47 insertions, 27 deletions
diff --git a/apps/user_ldap/tests/LDAPTest.php b/apps/user_ldap/tests/LDAPTest.php
index 8e181741b50..6da592ad6a1 100644
--- a/apps/user_ldap/tests/LDAPTest.php
+++ b/apps/user_ldap/tests/LDAPTest.php
@@ -1,50 +1,70 @@
<?php
+
+declare(strict_types=1);
/**
- * @copyright Copyright (c) 2016 Lukas Reschke <lukas@statuscode.ch>
- *
- * @author Lukas Reschke <lukas@statuscode.ch>
- *
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
+ * 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 {
- /** @var LDAP|\PHPUnit_Framework_MockObject_MockObject */
- private $ldap;
+class LDAPTest extends TestCase {
+ private LDAP&MockObject $ldap;
- public function setUp() {
+ protected function setUp(): void {
parent::setUp();
$this->ldap = $this->getMockBuilder(LDAP::class)
- ->setMethods(['invokeLDAPMethod'])
+ ->onlyMethods(['invokeLDAPMethod'])
->getMock();
}
- public function testModReplace() {
+ 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, array('userPassword' => $password))
+ ->with('mod_replace', $link, $userDN, ['userPassword' => $password])
->willReturn(true);
$this->assertTrue($this->ldap->modReplace($link, $userDN, $password));