1
1
<?php
2
+
3
+ declare (strict_types=1 );
2
4
/**
3
5
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
4
6
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
41
43
* @package OCA\User_LDAP\Tests
42
44
*/
43
45
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 ;
63
55
private LoggerInterface &MockObject $ logger ;
64
-
65
56
private IAppConfig &MockObject $ appConfig ;
66
-
67
- /** @var IEventDispatcher|MockObject */
68
- private $ dispatcher ;
57
+ private IEventDispatcher &MockObject $ dispatcher ;
69
58
private Access $ access ;
70
59
71
60
protected function setUp (): void {
72
- $ this ->connection = $ this ->createMock (Connection::class);
73
61
$ this ->ldap = $ this ->createMock (LDAP ::class);
62
+ $ this ->connection = $ this ->getMockBuilder (Connection::class)
63
+ ->setConstructorArgs ([$ this ->ldap ])
64
+ ->getMock ();
74
65
$ this ->userManager = $ this ->createMock (Manager::class);
75
66
$ this ->helper = $ this ->createMock (Helper::class);
76
67
$ this ->config = $ this ->createMock (IConfig::class);
@@ -126,19 +117,19 @@ private function getConnectorAndLdapMock() {
126
117
127
118
public function testEscapeFilterPartValidChars (): void {
128
119
$ input = 'okay ' ;
129
- $ this ->assertTrue ($ input === $ this ->access ->escapeFilterPart ($ input ));
120
+ $ this ->assertSame ($ input, $ this ->access ->escapeFilterPart ($ input ));
130
121
}
131
122
132
123
public function testEscapeFilterPartEscapeWildcard (): void {
133
124
$ input = '* ' ;
134
125
$ expected = '\\2a ' ;
135
- $ this ->assertTrue ($ expected === $ this ->access ->escapeFilterPart ($ input ));
126
+ $ this ->assertSame ($ expected, $ this ->access ->escapeFilterPart ($ input ));
136
127
}
137
128
138
129
public function testEscapeFilterPartEscapeWildcard2 (): void {
139
130
$ input = 'foo*bar ' ;
140
131
$ expected = 'foo \\2abar ' ;
141
- $ this ->assertTrue ($ expected === $ this ->access ->escapeFilterPart ($ input ));
132
+ $ this ->assertSame ($ expected, $ this ->access ->escapeFilterPart ($ input ));
142
133
}
143
134
144
135
/**
@@ -151,7 +142,7 @@ public function testConvertSID2StrSuccess(array $sidArray, $sidExpected): void {
151
142
$ this ->assertSame ($ sidExpected , $ this ->access ->convertSID2Str ($ sidBinary ));
152
143
}
153
144
154
- public function convertSID2StrSuccessData () {
145
+ public static function convertSID2StrSuccessData (): array {
155
146
return [
156
147
[
157
148
[
@@ -209,55 +200,53 @@ public function testGetDomainDNFromDNError(): void {
209
200
$ this ->assertSame ($ expected , $ this ->access ->getDomainDNFromDN ($ inputDN ));
210
201
}
211
202
212
- public function dnInputDataProvider () {
213
- return [ [
203
+ public static function dnInputDataProvider (): array {
204
+ return [
214
205
[
215
- 'input ' => ' foo=bar,bar=foo,dc=foobar ' ,
216
- ' interResult ' => [
206
+ 'foo=bar,bar=foo,dc=foobar ' ,
207
+ [
217
208
'count ' => 3 ,
218
209
0 => 'foo=bar ' ,
219
210
1 => 'bar=foo ' ,
220
211
2 => 'dc=foobar '
221
212
],
222
- ' expectedResult ' => true
213
+ true
223
214
],
224
215
[
225
- 'input ' => ' foobarbarfoodcfoobar ' ,
226
- ' interResult ' => false ,
227
- ' expectedResult ' => false
216
+ 'foobarbarfoodcfoobar ' ,
217
+ false ,
218
+ false
228
219
]
229
- ]] ;
220
+ ];
230
221
}
231
222
232
223
/**
233
224
* @dataProvider dnInputDataProvider
234
- * @param array $case
235
225
*/
236
- public function testStringResemblesDN ($ case ): void {
226
+ public function testStringResemblesDN (string $ input , array | bool $ interResult , bool $ expectedResult ): void {
237
227
[$ lw , $ con , $ um , $ helper ] = $ this ->getConnectorAndLdapMock ();
238
- /** @var IConfig| MockObject $config */
228
+ /** @var IConfig& MockObject $config */
239
229
$ config = $ this ->createMock (IConfig::class);
240
230
$ access = new Access ($ lw , $ con , $ um , $ helper , $ config , $ this ->ncUserManager , $ this ->logger , $ this ->appConfig , $ this ->dispatcher );
241
231
242
232
$ lw ->expects ($ this ->exactly (1 ))
243
233
->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 ;
247
237
}
248
238
return null ;
249
239
});
250
240
251
- $ this ->assertSame ($ case [ ' expectedResult ' ] , $ access ->stringResemblesDN ($ case [ ' input ' ] ));
241
+ $ this ->assertSame ($ expectedResult , $ access ->stringResemblesDN ($ input ));
252
242
}
253
243
254
244
/**
255
245
* @dataProvider dnInputDataProvider
256
- * @param $case
257
246
*/
258
- public function testStringResemblesDNLDAPmod ($ case ): void {
247
+ public function testStringResemblesDNLDAPmod (string $ input , array | bool $ interResult , bool $ expectedResult ): void {
259
248
[, $ con , $ um , $ helper ] = $ this ->getConnectorAndLdapMock ();
260
- /** @var IConfig| MockObject $config */
249
+ /** @var IConfig& MockObject $config */
261
250
$ config = $ this ->createMock (IConfig::class);
262
251
$ lw = new LDAP ();
263
252
$ 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 {
266
255
$ this ->markTestSkipped ('LDAP Module not available ' );
267
256
}
268
257
269
- $ this ->assertSame ($ case [ ' expectedResult ' ] , $ access ->stringResemblesDN ($ case [ ' input ' ] ));
258
+ $ this ->assertSame ($ expectedResult , $ access ->stringResemblesDN ($ input ));
270
259
}
271
260
272
261
public function testCacheUserHome (): void {
@@ -290,7 +279,7 @@ public function testBatchApplyUserAttributes(): void {
290
279
->method ('getAttributes ' )
291
280
->willReturn (['displayname ' => ['bar ' , 'count ' => 1 ]]);
292
281
293
- /** @var UserMapping| MockObject $mapperMock */
282
+ /** @var UserMapping& MockObject $mapperMock */
294
283
$ mapperMock = $ this ->createMock (UserMapping::class);
295
284
$ mapperMock ->expects ($ this ->any ())
296
285
->method ('getNameByDN ' )
@@ -335,7 +324,7 @@ public function testBatchApplyUserAttributes(): void {
335
324
}
336
325
337
326
public function testBatchApplyUserAttributesSkipped (): void {
338
- /** @var UserMapping| MockObject $mapperMock */
327
+ /** @var UserMapping& MockObject $mapperMock */
339
328
$ mapperMock = $ this ->createMock (UserMapping::class);
340
329
$ mapperMock ->expects ($ this ->any ())
341
330
->method ('getNameByDN ' )
@@ -376,7 +365,7 @@ public function testBatchApplyUserAttributesSkipped(): void {
376
365
}
377
366
378
367
public function testBatchApplyUserAttributesDontSkip (): void {
379
- /** @var UserMapping| MockObject $mapperMock */
368
+ /** @var UserMapping& MockObject $mapperMock */
380
369
$ mapperMock = $ this ->createMock (UserMapping::class);
381
370
$ mapperMock ->expects ($ this ->any ())
382
371
->method ('getNameByDN ' )
@@ -416,7 +405,7 @@ public function testBatchApplyUserAttributesDontSkip(): void {
416
405
$ this ->access ->batchApplyUserAttributes ($ data );
417
406
}
418
407
419
- public function dNAttributeProvider () {
408
+ public static function dNAttributeProvider (): array {
420
409
// corresponds to Access::resemblesDN()
421
410
return [
422
411
'dn ' => ['dn ' ],
@@ -428,11 +417,10 @@ public function dNAttributeProvider() {
428
417
429
418
/**
430
419
* @dataProvider dNAttributeProvider
431
- * @param $attribute
432
420
*/
433
- public function testSanitizeDN ($ attribute ): void {
421
+ public function testSanitizeDN (string $ attribute ): void {
434
422
[$ lw , $ con , $ um , $ helper ] = $ this ->getConnectorAndLdapMock ();
435
- /** @var IConfig| MockObject $config */
423
+ /** @var IConfig& MockObject $config */
436
424
$ config = $ this ->createMock (IConfig::class);
437
425
438
426
$ dnFromServer = 'cn=Mixed Cases,ou=Are Sufficient To,ou=Test,dc=example,dc=org ' ;
@@ -628,7 +616,7 @@ public function testFetchListOfUsers(): void {
628
616
$ this ->userMapper ->expects ($ this ->exactly ($ fakeLdapEntries ['count ' ]))
629
617
->method ('getNameByDN ' )
630
618
->willReturnCallback (function ($ fdn ) {
631
- $ parts = ldap_explode_dn ($ fdn , false );
619
+ $ parts = ldap_explode_dn ($ fdn , 0 );
632
620
return $ parts [0 ];
633
621
});
634
622
@@ -676,7 +664,7 @@ public function testFetchListOfGroupsKnown(): void {
676
664
$ this ->assertSame ('Another Good Team ' , $ groups [1 ]['cn ' ][0 ]);
677
665
}
678
666
679
- public function intUsernameProvider () {
667
+ public static function intUsernameProvider (): array {
680
668
return [
681
669
['alice ' , 'alice ' ],
682
670
['b/ob ' , 'bob ' ],
@@ -694,7 +682,7 @@ public function intUsernameProvider() {
694
682
];
695
683
}
696
684
697
- public function groupIDCandidateProvider () {
685
+ public static function groupIDCandidateProvider (): array {
698
686
return [
699
687
['alice ' , 'alice ' ],
700
688
['b/ob ' , 'b/ob ' ],
@@ -713,11 +701,8 @@ public function groupIDCandidateProvider() {
713
701
714
702
/**
715
703
* @dataProvider intUsernameProvider
716
- *
717
- * @param $name
718
- * @param $expected
719
704
*/
720
- public function testSanitizeUsername ($ name , $ expected ): void {
705
+ public function testSanitizeUsername (string $ name , ? string $ expected ): void {
721
706
if ($ expected === null ) {
722
707
$ this ->expectException (\InvalidArgumentException::class);
723
708
}
@@ -752,7 +737,7 @@ public function testUserStateUpdate(): void {
752
737
->with ('detta ' )
753
738
->willReturnOnConsecutiveCalls ($ offlineUserMock , $ regularUserMock );
754
739
755
- /** @var UserMapping| MockObject $mapperMock */
740
+ /** @var UserMapping& MockObject $mapperMock */
756
741
$ mapperMock = $ this ->createMock (UserMapping::class);
757
742
$ mapperMock ->expects ($ this ->any ())
758
743
->method ('getNameByDN ' )
0 commit comments