11<?php
2+
3+ declare (strict_types=1 );
24/**
35 * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
46 * SPDX-FileCopyrightText: 2016 ownCloud, Inc.
4143 * @package OCA\User_LDAP\Tests
4244 */
4345class 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 ' )
0 commit comments