Skip to content

Commit 85c141e

Browse files
Merge pull request #53150 from nextcloud/tests/noid/ldap
2 parents d21bf9c + 6c7f8ea commit 85c141e

32 files changed

+606
-662
lines changed

apps/user_ldap/tests/AccessTest.php

Lines changed: 48 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
<?php
2+
3+
declare(strict_types=1);
24
/**
35
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
46
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
@@ -41,36 +43,25 @@
4143
* @package OCA\User_LDAP\Tests
4244
*/
4345
class AccessTest extends TestCase {
44-
/** @var UserMapping|MockObject */
45-
protected $userMapper;
46-
/** @var IManager|MockObject */
47-
protected $shareManager;
48-
/** @var GroupMapping|MockObject */
49-
protected $groupMapper;
50-
/** @var Connection|MockObject */
51-
private $connection;
52-
/** @var LDAP|MockObject */
53-
private $ldap;
54-
/** @var Manager|MockObject */
55-
private $userManager;
56-
/** @var Helper|MockObject */
57-
private $helper;
58-
/** @var IConfig|MockObject */
59-
private $config;
60-
/** @var IUserManager|MockObject */
61-
private $ncUserManager;
62-
46+
protected UserMapping&MockObject $userMapper;
47+
protected IManager&MockObject $shareManager;
48+
protected GroupMapping&MockObject $groupMapper;
49+
private Connection&MockObject $connection;
50+
private LDAP&MockObject $ldap;
51+
private Manager&MockObject $userManager;
52+
private Helper&MockObject $helper;
53+
private IConfig&MockObject $config;
54+
private IUserManager&MockObject $ncUserManager;
6355
private LoggerInterface&MockObject $logger;
64-
6556
private IAppConfig&MockObject $appConfig;
66-
67-
/** @var IEventDispatcher|MockObject */
68-
private $dispatcher;
57+
private IEventDispatcher&MockObject $dispatcher;
6958
private Access $access;
7059

7160
protected function setUp(): void {
72-
$this->connection = $this->createMock(Connection::class);
7361
$this->ldap = $this->createMock(LDAP::class);
62+
$this->connection = $this->getMockBuilder(Connection::class)
63+
->setConstructorArgs([$this->ldap])
64+
->getMock();
7465
$this->userManager = $this->createMock(Manager::class);
7566
$this->helper = $this->createMock(Helper::class);
7667
$this->config = $this->createMock(IConfig::class);
@@ -126,19 +117,19 @@ private function getConnectorAndLdapMock() {
126117

127118
public function testEscapeFilterPartValidChars(): void {
128119
$input = 'okay';
129-
$this->assertTrue($input === $this->access->escapeFilterPart($input));
120+
$this->assertSame($input, $this->access->escapeFilterPart($input));
130121
}
131122

132123
public function testEscapeFilterPartEscapeWildcard(): void {
133124
$input = '*';
134125
$expected = '\\2a';
135-
$this->assertTrue($expected === $this->access->escapeFilterPart($input));
126+
$this->assertSame($expected, $this->access->escapeFilterPart($input));
136127
}
137128

138129
public function testEscapeFilterPartEscapeWildcard2(): void {
139130
$input = 'foo*bar';
140131
$expected = 'foo\\2abar';
141-
$this->assertTrue($expected === $this->access->escapeFilterPart($input));
132+
$this->assertSame($expected, $this->access->escapeFilterPart($input));
142133
}
143134

144135
/**
@@ -151,7 +142,7 @@ public function testConvertSID2StrSuccess(array $sidArray, $sidExpected): void {
151142
$this->assertSame($sidExpected, $this->access->convertSID2Str($sidBinary));
152143
}
153144

154-
public function convertSID2StrSuccessData() {
145+
public static function convertSID2StrSuccessData(): array {
155146
return [
156147
[
157148
[
@@ -209,55 +200,53 @@ public function testGetDomainDNFromDNError(): void {
209200
$this->assertSame($expected, $this->access->getDomainDNFromDN($inputDN));
210201
}
211202

212-
public function dnInputDataProvider() {
213-
return [[
203+
public static function dnInputDataProvider(): array {
204+
return [
214205
[
215-
'input' => 'foo=bar,bar=foo,dc=foobar',
216-
'interResult' => [
206+
'foo=bar,bar=foo,dc=foobar',
207+
[
217208
'count' => 3,
218209
0 => 'foo=bar',
219210
1 => 'bar=foo',
220211
2 => 'dc=foobar'
221212
],
222-
'expectedResult' => true
213+
true
223214
],
224215
[
225-
'input' => 'foobarbarfoodcfoobar',
226-
'interResult' => false,
227-
'expectedResult' => false
216+
'foobarbarfoodcfoobar',
217+
false,
218+
false
228219
]
229-
]];
220+
];
230221
}
231222

232223
/**
233224
* @dataProvider dnInputDataProvider
234-
* @param array $case
235225
*/
236-
public function testStringResemblesDN($case): void {
226+
public function testStringResemblesDN(string $input, array|bool $interResult, bool $expectedResult): void {
237227
[$lw, $con, $um, $helper] = $this->getConnectorAndLdapMock();
238-
/** @var IConfig|MockObject $config */
228+
/** @var IConfig&MockObject $config */
239229
$config = $this->createMock(IConfig::class);
240230
$access = new Access($lw, $con, $um, $helper, $config, $this->ncUserManager, $this->logger, $this->appConfig, $this->dispatcher);
241231

242232
$lw->expects($this->exactly(1))
243233
->method('explodeDN')
244-
->willReturnCallback(function ($dn) use ($case) {
245-
if ($dn === $case['input']) {
246-
return $case['interResult'];
234+
->willReturnCallback(function ($dn) use ($input, $interResult) {
235+
if ($dn === $input) {
236+
return $interResult;
247237
}
248238
return null;
249239
});
250240

251-
$this->assertSame($case['expectedResult'], $access->stringResemblesDN($case['input']));
241+
$this->assertSame($expectedResult, $access->stringResemblesDN($input));
252242
}
253243

254244
/**
255245
* @dataProvider dnInputDataProvider
256-
* @param $case
257246
*/
258-
public function testStringResemblesDNLDAPmod($case): void {
247+
public function testStringResemblesDNLDAPmod(string $input, array|bool $interResult, bool $expectedResult): void {
259248
[, $con, $um, $helper] = $this->getConnectorAndLdapMock();
260-
/** @var IConfig|MockObject $config */
249+
/** @var IConfig&MockObject $config */
261250
$config = $this->createMock(IConfig::class);
262251
$lw = new LDAP();
263252
$access = new Access($lw, $con, $um, $helper, $config, $this->ncUserManager, $this->logger, $this->appConfig, $this->dispatcher);
@@ -266,7 +255,7 @@ public function testStringResemblesDNLDAPmod($case): void {
266255
$this->markTestSkipped('LDAP Module not available');
267256
}
268257

269-
$this->assertSame($case['expectedResult'], $access->stringResemblesDN($case['input']));
258+
$this->assertSame($expectedResult, $access->stringResemblesDN($input));
270259
}
271260

272261
public function testCacheUserHome(): void {
@@ -290,7 +279,7 @@ public function testBatchApplyUserAttributes(): void {
290279
->method('getAttributes')
291280
->willReturn(['displayname' => ['bar', 'count' => 1]]);
292281

293-
/** @var UserMapping|MockObject $mapperMock */
282+
/** @var UserMapping&MockObject $mapperMock */
294283
$mapperMock = $this->createMock(UserMapping::class);
295284
$mapperMock->expects($this->any())
296285
->method('getNameByDN')
@@ -335,7 +324,7 @@ public function testBatchApplyUserAttributes(): void {
335324
}
336325

337326
public function testBatchApplyUserAttributesSkipped(): void {
338-
/** @var UserMapping|MockObject $mapperMock */
327+
/** @var UserMapping&MockObject $mapperMock */
339328
$mapperMock = $this->createMock(UserMapping::class);
340329
$mapperMock->expects($this->any())
341330
->method('getNameByDN')
@@ -376,7 +365,7 @@ public function testBatchApplyUserAttributesSkipped(): void {
376365
}
377366

378367
public function testBatchApplyUserAttributesDontSkip(): void {
379-
/** @var UserMapping|MockObject $mapperMock */
368+
/** @var UserMapping&MockObject $mapperMock */
380369
$mapperMock = $this->createMock(UserMapping::class);
381370
$mapperMock->expects($this->any())
382371
->method('getNameByDN')
@@ -416,7 +405,7 @@ public function testBatchApplyUserAttributesDontSkip(): void {
416405
$this->access->batchApplyUserAttributes($data);
417406
}
418407

419-
public function dNAttributeProvider() {
408+
public static function dNAttributeProvider(): array {
420409
// corresponds to Access::resemblesDN()
421410
return [
422411
'dn' => ['dn'],
@@ -428,11 +417,10 @@ public function dNAttributeProvider() {
428417

429418
/**
430419
* @dataProvider dNAttributeProvider
431-
* @param $attribute
432420
*/
433-
public function testSanitizeDN($attribute): void {
421+
public function testSanitizeDN(string $attribute): void {
434422
[$lw, $con, $um, $helper] = $this->getConnectorAndLdapMock();
435-
/** @var IConfig|MockObject $config */
423+
/** @var IConfig&MockObject $config */
436424
$config = $this->createMock(IConfig::class);
437425

438426
$dnFromServer = 'cn=Mixed Cases,ou=Are Sufficient To,ou=Test,dc=example,dc=org';
@@ -628,7 +616,7 @@ public function testFetchListOfUsers(): void {
628616
$this->userMapper->expects($this->exactly($fakeLdapEntries['count']))
629617
->method('getNameByDN')
630618
->willReturnCallback(function ($fdn) {
631-
$parts = ldap_explode_dn($fdn, false);
619+
$parts = ldap_explode_dn($fdn, 0);
632620
return $parts[0];
633621
});
634622

@@ -676,7 +664,7 @@ public function testFetchListOfGroupsKnown(): void {
676664
$this->assertSame('Another Good Team', $groups[1]['cn'][0]);
677665
}
678666

679-
public function intUsernameProvider() {
667+
public static function intUsernameProvider(): array {
680668
return [
681669
['alice', 'alice'],
682670
['b/ob', 'bob'],
@@ -694,7 +682,7 @@ public function intUsernameProvider() {
694682
];
695683
}
696684

697-
public function groupIDCandidateProvider() {
685+
public static function groupIDCandidateProvider(): array {
698686
return [
699687
['alice', 'alice'],
700688
['b/ob', 'b/ob'],
@@ -713,11 +701,8 @@ public function groupIDCandidateProvider() {
713701

714702
/**
715703
* @dataProvider intUsernameProvider
716-
*
717-
* @param $name
718-
* @param $expected
719704
*/
720-
public function testSanitizeUsername($name, $expected): void {
705+
public function testSanitizeUsername(string $name, ?string $expected): void {
721706
if ($expected === null) {
722707
$this->expectException(\InvalidArgumentException::class);
723708
}
@@ -752,7 +737,7 @@ public function testUserStateUpdate(): void {
752737
->with('detta')
753738
->willReturnOnConsecutiveCalls($offlineUserMock, $regularUserMock);
754739

755-
/** @var UserMapping|MockObject $mapperMock */
740+
/** @var UserMapping&MockObject $mapperMock */
756741
$mapperMock = $this->createMock(UserMapping::class);
757742
$mapperMock->expects($this->any())
758743
->method('getNameByDN')

apps/user_ldap/tests/ConfigurationTest.php

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<?php
22

3+
declare(strict_types=1);
34
/**
45
* SPDX-FileCopyrightText: 2018-2024 Nextcloud GmbH and Nextcloud contributors
56
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
@@ -10,15 +11,14 @@
1011
use OCA\User_LDAP\Configuration;
1112

1213
class ConfigurationTest extends \Test\TestCase {
13-
/** @var Configuration */
14-
protected $configuration;
14+
protected Configuration $configuration;
1515

1616
protected function setUp(): void {
1717
parent::setUp();
1818
$this->configuration = new Configuration('t01', false);
1919
}
2020

21-
public function configurationDataProvider() {
21+
public static function configurationDataProvider(): array {
2222
$inputWithDN = [
2323
'cn=someUsers,dc=example,dc=org',
2424
' ',
@@ -89,12 +89,12 @@ public function configurationDataProvider() {
8989
/**
9090
* @dataProvider configurationDataProvider
9191
*/
92-
public function testSetValue($key, $input, $expected): void {
92+
public function testSetValue(string $key, string|array $input, string|array $expected): void {
9393
$this->configuration->setConfiguration([$key => $input]);
9494
$this->assertSame($this->configuration->$key, $expected);
9595
}
9696

97-
public function avatarRuleValueProvider() {
97+
public static function avatarRuleValueProvider(): array {
9898
return [
9999
['none', []],
100100
['data:selfie', ['selfie']],
@@ -108,15 +108,15 @@ public function avatarRuleValueProvider() {
108108
/**
109109
* @dataProvider avatarRuleValueProvider
110110
*/
111-
public function testGetAvatarAttributes($setting, $expected): void {
111+
public function testGetAvatarAttributes(string $setting, array $expected): void {
112112
$this->configuration->setConfiguration(['ldapUserAvatarRule' => $setting]);
113113
$this->assertSame($expected, $this->configuration->getAvatarAttributes());
114114
}
115115

116116
/**
117117
* @dataProvider avatarRuleValueProvider
118118
*/
119-
public function testResolveRule($setting, $expected): void {
119+
public function testResolveRule(string $setting, array $expected): void {
120120
$this->configuration->setConfiguration(['ldapUserAvatarRule' => $setting]);
121121
// so far the only thing that can get resolved :)
122122
$this->assertSame($expected, $this->configuration->resolveRule('avatar'));

apps/user_ldap/tests/ConnectionTest.php

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<?php
22

3+
declare(strict_types=1);
34
/**
45
* SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
56
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
@@ -10,6 +11,7 @@
1011
use OC\ServerNotAvailableException;
1112
use OCA\User_LDAP\Connection;
1213
use OCA\User_LDAP\ILDAPWrapper;
14+
use PHPUnit\Framework\MockObject\MockObject;
1315

1416
/**
1517
* Class Test_Connection
@@ -19,19 +21,16 @@
1921
* @package OCA\User_LDAP\Tests
2022
*/
2123
class ConnectionTest extends \Test\TestCase {
22-
/** @var ILDAPWrapper|\PHPUnit\Framework\MockObject\MockObject */
23-
protected $ldap;
24-
25-
/** @var Connection */
26-
protected $connection;
24+
protected ILDAPWrapper&MockObject $ldap;
25+
protected Connection $connection;
2726

2827
protected function setUp(): void {
2928
parent::setUp();
3029

3130
$this->ldap = $this->createMock(ILDAPWrapper::class);
3231
// we use a mock here to replace the cache mechanism, due to missing DI in LDAP backend.
33-
$this->connection = $this->getMockBuilder('OCA\User_LDAP\Connection')
34-
->setMethods(['getFromCache', 'writeToCache'])
32+
$this->connection = $this->getMockBuilder(Connection::class)
33+
->onlyMethods(['getFromCache', 'writeToCache'])
3534
->setConstructorArgs([$this->ldap, '', null])
3635
->getMock();
3736

0 commit comments

Comments
 (0)