@ -1,4 +1,6 @@
< ? php
declare ( strict_types = 1 );
/**
* SPDX - FileCopyrightText : 2019 - 2024 Nextcloud GmbH and Nextcloud contributors
* SPDX - FileCopyrightText : 2014 - 2015 ownCloud , Inc .
@ -40,38 +42,22 @@ use PHPUnit\Framework\MockObject\MockObject;
* @ package Tests\Settings\Controller
*/
class UsersControllerTest extends \Test\TestCase {
/** @var IGroupManager|\PHPUnit\Framework\MockObject\MockObject */
private $groupManager ;
/** @var UserManager|\PHPUnit\Framework\MockObject\MockObject */
private $userManager ;
/** @var IUserSession|\PHPUnit\Framework\MockObject\MockObject */
private $userSession ;
/** @var IConfig|\PHPUnit\Framework\MockObject\MockObject */
private $config ;
/** @var IMailer|\PHPUnit\Framework\MockObject\MockObject */
private $mailer ;
/** @var IFactory|\PHPUnit\Framework\MockObject\MockObject */
private $l10nFactory ;
/** @var IAppManager|\PHPUnit\Framework\MockObject\MockObject */
private $appManager ;
/** @var IL10N|\PHPUnit\Framework\MockObject\MockObject */
private $l ;
/** @var AccountManager|\PHPUnit\Framework\MockObject\MockObject */
private $accountManager ;
/** @var IJobList | \PHPUnit\Framework\MockObject\MockObject */
private $jobList ;
/** @var \OC\Security\IdentityProof\Manager|\PHPUnit\Framework\MockObject\MockObject */
private $securityManager ;
/** @var IManager|\PHPUnit\Framework\MockObject\MockObject */
private $encryptionManager ;
/** @var KnownUserService|\PHPUnit\Framework\MockObject\MockObject */
private $knownUserService ;
/** @var IEncryptionModule|\PHPUnit\Framework\MockObject\MockObject */
private $encryptionModule ;
/** @var IEventDispatcher|\PHPUnit\Framework\MockObject\MockObject */
private $dispatcher ;
/** @var IInitialState|\PHPUnit\Framework\MockObject\MockObject */
private $initialState ;
private IGroupManager & MockObject $groupManager ;
private UserManager & MockObject $userManager ;
private IUserSession & MockObject $userSession ;
private IConfig & MockObject $config ;
private IMailer & MockObject $mailer ;
private IFactory & MockObject $l10nFactory ;
private IAppManager & MockObject $appManager ;
private IL10N & MockObject $l ;
private AccountManager & MockObject $accountManager ;
private IJobList & MockObject $jobList ;
private \OC\Security\IdentityProof\Manager & MockObject $securityManager ;
private IManager & MockObject $encryptionManager ;
private KnownUserService & MockObject $knownUserService ;
private IEncryptionModule & MockObject $encryptionModule ;
private IEventDispatcher & MockObject $dispatcher ;
private IInitialState & MockObject $initialState ;
protected function setUp () : void {
parent :: setUp ();
@ -85,7 +71,7 @@ class UsersControllerTest extends \Test\TestCase {
$this -> l10nFactory = $this -> createMock ( IFactory :: class );
$this -> appManager = $this -> createMock ( IAppManager :: class );
$this -> accountManager = $this -> createMock ( AccountManager :: class );
$this -> securityManager = $this -> getMockBuilder ( \OC\Security\IdentityProof\Manager :: class ) -> disableOriginalConstructor () -> getMock ( );
$this -> securityManager = $this -> createMock ( \OC\Security\IdentityProof\Manager :: class );
$this -> jobList = $this -> createMock ( IJobList :: class );
$this -> encryptionManager = $this -> createMock ( IManager :: class );
$this -> knownUserService = $this -> createMock ( KnownUserService :: class );
@ -106,9 +92,9 @@ class UsersControllerTest extends \Test\TestCase {
/**
* @ param bool $isAdmin
* @ return UsersController | \PHPUnit\Framework\MockObject\ MockObject
* @ return UsersController | MockObject
*/
protected function getController ( $isAdmin = false , $mockedMethods = []) {
protected function getController ( bool $isAdmin = false , array $mockedMethods = []) {
$this -> groupManager -> expects ( $this -> any ())
-> method ( 'isAdmin' )
-> willReturn ( $isAdmin );
@ -155,7 +141,9 @@ class UsersControllerTest extends \Test\TestCase {
$this -> dispatcher ,
$this -> initialState ,
]
) -> onlyMethods ( $mockedMethods ) -> getMock ();
)
-> onlyMethods ( $mockedMethods )
-> getMock ();
}
}
@ -177,7 +165,7 @@ class UsersControllerTest extends \Test\TestCase {
return $property ;
}
protected function getDefaultAccountMock ( bool $useDefaultValues = true ) : MockObject {
protected function getDefaultAccountMock () : MockObject {
$propertyMocks = [
IAccountManager :: PROPERTY_DISPLAYNAME => $this -> buildPropertyMock (
IAccountManager :: PROPERTY_DISPLAYNAME ,
@ -249,12 +237,8 @@ class UsersControllerTest extends \Test\TestCase {
/**
* @ dataProvider dataTestSetUserSettings
*
* @ param string $email
* @ param bool $validEmail
* @ param $expectedStatus
*/
public function testSetUserSettings ( $email , $validEmail , $expectedStatus ) : void {
public function testSetUserSettings ( string $email , bool $validEmail , int $expectedStatus ) : void {
$controller = $this -> getController ( false , [ 'saveUserSettings' ]);
$user = $this -> createMock ( IUser :: class );
$user -> method ( 'getUID' ) -> willReturn ( 'johndoe' );
@ -305,7 +289,7 @@ class UsersControllerTest extends \Test\TestCase {
$this -> assertSame ( $expectedStatus , $result -> getStatus ());
}
public function dataTestSetUserSettings () {
public static function dataTestSetUserSettings () : array {
return [
[ '' , true , Http :: STATUS_OK ],
[ '' , false , Http :: STATUS_OK ],
@ -515,18 +499,15 @@ class UsersControllerTest extends \Test\TestCase {
/**
* @ dataProvider dataTestSetUserSettingsSubset
*
* @ param string $property
* @ param string $propertyValue
*/
public function testSetUserSettingsSubset ( $property , $propertyValue ) : void {
public function testSetUserSettingsSubset ( string $property , string $propertyValue ) : void {
$controller = $this -> getController ( false , [ 'saveUserSettings' ]);
$user = $this -> createMock ( IUser :: class );
$user -> method ( 'getUID' ) -> willReturn ( 'johndoe' );
$this -> userSession -> method ( 'getUser' ) -> willReturn ( $user );
/** @var IAccount| MockObject $userAccount */
/** @var IAccount& MockObject $userAccount */
$userAccount = $this -> getDefaultAccountMock ();
$this -> accountManager -> expects ( $this -> once ())
@ -554,9 +535,9 @@ class UsersControllerTest extends \Test\TestCase {
$pronouns = ( $property === 'pronouns' ) ? $propertyValue : null ;
$pronounsScope = ( $property === 'pronounsScope' ) ? $propertyValue : null ;
/** @var IAccountProperty[]| MockObject[] $expectedProperties */
/** @var IAccountProperty[]& MockObject[] $expectedProperties */
$expectedProperties = $userAccount -> getProperties ();
$isScope = strrpos ( $property , 'Scope' ) === strlen ( $property ) - strlen ( 5 );
$isScope = strrpos ( $property , 'Scope' ) === strlen ( $property ) - strlen ( '5' );
switch ( $property ) {
case 'avatarScope' :
$propertyId = IAccountManager :: PROPERTY_AVATAR ;
@ -636,7 +617,7 @@ class UsersControllerTest extends \Test\TestCase {
);
}
public function dataTestSetUserSettingsSubset () {
public static function dataTestSetUserSettingsSubset () : array {
return [
[ 'avatarScope' , IAccountManager :: SCOPE_PUBLISHED ],
[ 'displayName' , 'Display name' ],
@ -662,15 +643,8 @@ class UsersControllerTest extends \Test\TestCase {
/**
* @ dataProvider dataTestSaveUserSettings
*
* @ param array $data
* @ param ? string $oldEmailAddress
* @ param ? string $oldDisplayName
*/
public function testSaveUserSettings ( $data ,
$oldEmailAddress ,
$oldDisplayName ,
) : void {
public function testSaveUserSettings ( array $data , ? string $oldEmailAddress , ? string $oldDisplayName ) : void {
$controller = $this -> getController ();
$user = $this -> createMock ( IUser :: class );
@ -722,7 +696,7 @@ class UsersControllerTest extends \Test\TestCase {
$this -> invokePrivate ( $controller , 'saveUserSettings' , [ $account ]);
}
public function dataTestSaveUserSettings () {
public static function dataTestSaveUserSettings () : array {
return [
[
[
@ -833,7 +807,7 @@ class UsersControllerTest extends \Test\TestCase {
}
public function dataTestSaveUserSettingsException () {
public static function dataTestSaveUserSettingsException () : array {
return [
[
[
@ -870,14 +844,9 @@ class UsersControllerTest extends \Test\TestCase {
}
/**
* @ param string $account
* @ param string $type
* @ param array $dataBefore
* @ param array $expectedData
*
* @ dataProvider dataTestGetVerificationCode
*/
public function testGetVerificationCode ( $account , $type , $dataBefore , $expectedData , $onlyVerificationCode ) : void {
public function testGetVerificationCode ( string $account , string $type , array $dataBefore , array $expectedData , bool $onlyVerificationCode ) : void {
$message = 'Use my Federated Cloud ID to share with me: user@nextcloud.com' ;
$signature = 'theSignature' ;
@ -936,7 +905,7 @@ class UsersControllerTest extends \Test\TestCase {
$this -> assertSame ( $code , $data [ 'code' ]);
}
public function dataTestGetVerificationCode () {
public static function dataTestGetVerificationCode () : array {
$accountDataBefore = [
IAccountManager :: PROPERTY_WEBSITE => [ 'value' => 'https://nextcloud.com' , 'verified' => IAccountManager :: NOT_VERIFIED ],
IAccountManager :: PROPERTY_TWITTER => [ 'value' => '@nextclouders' , 'verified' => IAccountManager :: NOT_VERIFIED , 'signature' => 'theSignature' ],
@ -973,16 +942,13 @@ class UsersControllerTest extends \Test\TestCase {
/**
* @ dataProvider dataTestCanAdminChangeUserPasswords
*
* @ param bool $encryptionEnabled
* @ param bool $encryptionModuleLoaded
* @ param bool $masterKeyEnabled
* @ param bool $expected
*/
public function testCanAdminChangeUserPasswords ( $encryptionEnabled ,
$encryptionModuleLoaded ,
$masterKeyEnabled ,
$expected ) : void {
public function testCanAdminChangeUserPasswords (
bool $encryptionEnabled ,
bool $encryptionModuleLoaded ,
bool $masterKeyEnabled ,
bool $expected ,
) : void {
$controller = $this -> getController ();
$this -> encryptionManager -> expects ( $this -> any ())
@ -1005,7 +971,7 @@ class UsersControllerTest extends \Test\TestCase {
$this -> assertSame ( $expected , $result );
}
public function dataTestCanAdminChangeUserPasswords () {
public static function dataTestCanAdminChangeUserPasswords () : array {
return [
// encryptionEnabled, encryptionModuleLoaded, masterKeyEnabled, expectedResult
[ true , true , true , true ],