diff options
Diffstat (limited to 'tests/Settings/Controller/UsersControllerTest.php')
-rw-r--r-- | tests/Settings/Controller/UsersControllerTest.php | 2524 |
1 files changed, 9 insertions, 2515 deletions
diff --git a/tests/Settings/Controller/UsersControllerTest.php b/tests/Settings/Controller/UsersControllerTest.php index 4cfec07f78b..74ac990be92 100644 --- a/tests/Settings/Controller/UsersControllerTest.php +++ b/tests/Settings/Controller/UsersControllerTest.php @@ -31,10 +31,10 @@ use OCP\IGroupManager; use OCP\IL10N; use OCP\ILogger; use OCP\IRequest; -use OCP\IURLGenerator; use OCP\IUser; use OCP\IUserManager; use OCP\IUserSession; +use OCP\L10N\IFactory; use OCP\Mail\IEMailTemplate; use OCP\Mail\IMailer; use OCP\Security\ISecureRandom; @@ -60,8 +60,8 @@ class UsersControllerTest extends \Test\TestCase { private $logger; /** @var IMailer|\PHPUnit_Framework_MockObject_MockObject */ private $mailer; - /** @var IURLGenerator|\PHPUnit_Framework_MockObject_MockObject */ - private $urlGenerator; + /** @var IFactory|\PHPUnit_Framework_MockObject_MockObject */ + private $l10nFactory; /** @var IAppManager|\PHPUnit_Framework_MockObject_MockObject */ private $appManager; /** @var IAvatarManager|\PHPUnit_Framework_MockObject_MockObject */ @@ -78,8 +78,6 @@ class UsersControllerTest extends \Test\TestCase { private $jobList; /** @var \OC\Security\IdentityProof\Manager |\PHPUnit_Framework_MockObject_MockObject */ private $securityManager; - /** @var IUserMountCache |\PHPUnit_Framework_MockObject_MockObject */ - private $userMountCache; /** @var IManager | \PHPUnit_Framework_MockObject_MockObject */ private $encryptionManager; /** @var IEncryptionModule | \PHPUnit_Framework_MockObject_MockObject */ @@ -88,46 +86,28 @@ class UsersControllerTest extends \Test\TestCase { protected function setUp() { parent::setUp(); - $this->groupManager = $this->createMock(Manager::class); $this->userManager = $this->createMock(IUserManager::class); + $this->groupManager = $this->createMock(Manager::class); $this->userSession = $this->createMock(IUserSession::class); $this->config = $this->createMock(IConfig::class); - $this->logger = $this->createMock(ILogger::class); + $this->l = $this->createMock(IL10N::class); $this->mailer = $this->createMock(IMailer::class); - $this->urlGenerator = $this->createMock(IURLGenerator::class); + $this->l10nFactory = $this->createMock(IFactory::class); $this->appManager = $this->createMock(IAppManager::class); - $this->avatarManager = $this->createMock(IAvatarManager::class); $this->accountManager = $this->createMock(AccountManager::class); - $this->secureRandom = $this->createMock(ISecureRandom::class); - $this->newUserMailHelper = $this->createMock(NewUserMailHelper::class); $this->securityManager = $this->getMockBuilder(\OC\Security\IdentityProof\Manager::class)->disableOriginalConstructor()->getMock(); $this->jobList = $this->createMock(IJobList::class); $this->encryptionManager = $this->createMock(IManager::class); - $this->l = $this->createMock(IL10N::class); + $this->l->method('t') ->will($this->returnCallback(function ($text, $parameters = []) { return vsprintf($text, $parameters); })); - $this->userMountCache = $this->createMock(IUserMountCache::class); $this->encryptionModule = $this->createMock(IEncryptionModule::class); $this->encryptionManager->expects($this->any())->method('getEncryptionModules') ->willReturn(['encryptionModule' => ['callback' => function() { return $this->encryptionModule;}]]); - /* - * Set default avatar behaviour for whole test suite - */ - - $avatarExists = $this->createMock(IAvatar::class); - $avatarExists->method('exists')->willReturn(true); - $avatarNotExists = $this->createMock(IAvatar::class); - $avatarNotExists->method('exists')->willReturn(false); - $this->avatarManager->method('getAvatar') - ->will($this->returnValueMap([ - ['foo', $avatarExists], - ['bar', $avatarExists], - ['admin', $avatarNotExists], - ])); } /** @@ -145,17 +125,12 @@ class UsersControllerTest extends \Test\TestCase { $this->config, $isAdmin, $this->l, - $this->logger, $this->mailer, - $this->urlGenerator, + $this->l10nFactory, $this->appManager, - $this->avatarManager, $this->accountManager, - $this->secureRandom, - $this->newUserMailHelper, $this->securityManager, $this->jobList, - $this->userMountCache, $this->encryptionManager ); } else { @@ -170,1926 +145,18 @@ class UsersControllerTest extends \Test\TestCase { $this->config, $isAdmin, $this->l, - $this->logger, $this->mailer, - $this->urlGenerator, + $this->l10nFactory, $this->appManager, - $this->avatarManager, $this->accountManager, - $this->secureRandom, - $this->newUserMailHelper, $this->securityManager, $this->jobList, - $this->userMountCache, $this->encryptionManager ] )->setMethods($mockedMethods)->getMock(); } } - public function testIndexAdmin() { - $controller = $this->getController(true); - - $foo = $this->createMock(User::class); - $foo - ->expects($this->exactly(2)) - ->method('getUID') - ->will($this->returnValue('foo')); - $foo - ->expects($this->once()) - ->method('getDisplayName') - ->will($this->returnValue('M. Foo')); - $foo - ->expects($this->once()) - ->method('getEMailAddress') - ->will($this->returnValue('foo@bar.com')); - $foo - ->expects($this->exactly(2)) - ->method('getQuota') - ->will($this->returnValue(1024)); - $foo - ->method('getLastLogin') - ->will($this->returnValue(500)); - $foo - ->method('getHome') - ->will($this->returnValue('/home/foo')); - $foo - ->expects($this->once()) - ->method('getBackendClassName') - ->will($this->returnValue('OC_User_Database')); - $foo->expects($this->any()) - ->method('isEnabled') - ->willReturn(true); - $admin = $this->createMock(User::class); - $admin - ->expects($this->exactly(2)) - ->method('getUID') - ->will($this->returnValue('admin')); - $admin - ->expects($this->once()) - ->method('getDisplayName') - ->will($this->returnValue('S. Admin')); - $admin - ->expects($this->once()) - ->method('getEMailAddress') - ->will($this->returnValue('admin@bar.com')); - $admin - ->expects($this->exactly(2)) - ->method('getQuota') - ->will($this->returnValue(404)); - $admin - ->expects($this->once()) - ->method('getLastLogin') - ->will($this->returnValue(12)); - $admin - ->expects($this->once()) - ->method('getHome') - ->will($this->returnValue('/home/admin')); - $admin - ->expects($this->once()) - ->method('getBackendClassName') - ->willReturn(Dummy::class); - $admin->expects($this->any()) - ->method('isEnabled') - ->willReturn(true); - $bar = $this->createMock(User::class); - $bar - ->expects($this->exactly(2)) - ->method('getUID') - ->will($this->returnValue('bar')); - $bar - ->expects($this->once()) - ->method('getDisplayName') - ->will($this->returnValue('B. Ar')); - $bar - ->expects($this->once()) - ->method('getEMailAddress') - ->will($this->returnValue('bar@dummy.com')); - $bar - ->expects($this->exactly(2)) - ->method('getQuota') - ->will($this->returnValue(2323)); - $bar - ->method('getLastLogin') - ->will($this->returnValue(3999)); - $bar - ->method('getHome') - ->will($this->returnValue('/home/bar')); - $bar - ->expects($this->once()) - ->method('getBackendClassName') - ->willReturn(Dummy::class); - $bar->expects($this->at(0)) - ->method('isEnabled') - ->willReturn(true); - $bar->expects($this->at(1)) - ->method('isEnabled') - ->willReturn(true); - $bar->expects($this->at(2)) - ->method('isEnabled') - ->willReturn(false); - - $this->groupManager - ->expects($this->once()) - ->method('displayNamesInGroup') - ->with('gid', 'pattern') - ->will($this->returnValue(array('foo' => 'M. Foo', 'admin' => 'S. Admin', 'bar' => 'B. Ar'))); - $this->groupManager - ->expects($this->exactly(3)) - ->method('getUserGroupNames') - ->will($this->onConsecutiveCalls( - array( - 'Users' => array('displayName' => 'Users'), - 'Support' => array('displayName' => 'Support') - ), - array( - 'admins' => array('displayName' => 'admins'), - 'Support' => array('displayName' => 'Support') - ), - array( - 'External Users' => array('displayName' => 'External Users') - ) - )); - $this->userManager - ->expects($this->at(0)) - ->method('get') - ->with('foo') - ->will($this->returnValue($foo)); - $this->userManager - ->expects($this->at(1)) - ->method('get') - ->with('admin') - ->will($this->returnValue($admin)); - $this->userManager - ->expects($this->at(2)) - ->method('get') - ->with('bar') - ->will($this->returnValue($bar)); - - $subadmin = $this->getMockBuilder(SubAdmin::class) - ->disableOriginalConstructor() - ->getMock(); - $subadmin - ->expects($this->any()) - ->method('getSubAdminsGroupsName') - ->with($foo) - ->will($this->returnValue([])); - $subadmin - ->expects($this->any()) - ->method('getSubAdminsGroupsName') - ->with($admin) - ->will($this->returnValue([])); - $subadmin - ->expects($this->any()) - ->method('getSubAdminsGroupsName') - ->with($bar) - ->will($this->returnValue([])); - $this->groupManager - ->expects($this->any()) - ->method('getSubAdmin') - ->will($this->returnValue($subadmin)); - - $this->userMountCache - ->expects($this->once()) - ->method('getUsedSpaceForUsers') - ->will($this->returnValue(['admin' => 200, 'bar' => 2000, 'foo' => 512])); - - $expectedResponse = new DataResponse( - array( - 0 => array( - 'name' => 'foo', - 'displayname' => 'M. Foo', - 'groups' => array( - 'Users' => array('displayName' => 'Users'), - 'Support' => array('displayName' => 'Support') - ), - 'subadmin' => array(), - 'quota' => 1024, - 'quota_bytes' => 1024.0, - 'storageLocation' => '/home/foo', - 'lastLogin' => 500000, - 'backend' => 'OC_User_Database', - 'email' => 'foo@bar.com', - 'isRestoreDisabled' => false, - 'isAvatarAvailable' => true, - 'isEnabled' => true, - 'size' => 512, - ), - 1 => array( - 'name' => 'admin', - 'displayname' => 'S. Admin', - 'groups' => array( - 'admins' => array('displayName' => 'admins'), - 'Support' => array('displayName' => 'Support') - ), - 'subadmin' => array(), - 'quota' => 404, - 'quota_bytes' => 404.0, - 'storageLocation' => '/home/admin', - 'lastLogin' => 12000, - 'backend' => Dummy::class, - 'email' => 'admin@bar.com', - 'isRestoreDisabled' => false, - 'isAvatarAvailable' => false, - 'isEnabled' => true, - 'size' => 200, - ), - 2 => array( - 'name' => 'bar', - 'displayname' => 'B. Ar', - 'groups' => array( - 'External Users' => array('displayName' => 'External Users') - ), - 'subadmin' => array(), - 'quota' => 2323, - 'quota_bytes' => 2323.0, - 'storageLocation' => '/home/bar', - 'lastLogin' => 3999000, - 'backend' => Dummy::class, - 'email' => 'bar@dummy.com', - 'isRestoreDisabled' => false, - 'isAvatarAvailable' => true, - 'isEnabled' => false, - 'size' => 2000, - ), - ) - ); - $response = $controller->index(0, 10, 'gid', 'pattern'); - $this->assertEquals($expectedResponse, $response); - } - - public function testIndexSubAdmin() { - $controller = $this->getController(false); - - $user = $this->createMock(User::class); - $this->userSession - ->expects($this->once()) - ->method('getUser') - ->will($this->returnValue($user)); - - $foo = $this->createMock(User::class); - $foo - ->expects($this->exactly(2)) - ->method('getUID') - ->will($this->returnValue('foo')); - $foo - ->expects($this->once()) - ->method('getDisplayName') - ->will($this->returnValue('M. Foo')); - $foo - ->expects($this->once()) - ->method('getEMailAddress') - ->will($this->returnValue('foo@bar.com')); - $foo - ->expects($this->exactly(2)) - ->method('getQuota') - ->will($this->returnValue('1024')); - $foo - ->method('getLastLogin') - ->will($this->returnValue(500)); - $foo - ->method('getHome') - ->will($this->returnValue('/home/foo')); - $foo - ->expects($this->once()) - ->method('getBackendClassName') - ->will($this->returnValue('OC_User_Database')); - $foo->expects($this->any()) - ->method('isEnabled') - ->willReturn(true); - $admin = $this->createMock(User::class); - $admin - ->expects($this->exactly(2)) - ->method('getUID') - ->will($this->returnValue('admin')); - $admin - ->expects($this->once()) - ->method('getDisplayName') - ->will($this->returnValue('S. Admin')); - $admin - ->expects($this->once()) - ->method('getEMailAddress') - ->will($this->returnValue('admin@bar.com')); - $admin - ->expects($this->exactly(2)) - ->method('getQuota') - ->will($this->returnValue('404')); - $admin - ->expects($this->once()) - ->method('getLastLogin') - ->will($this->returnValue(12)); - $admin - ->expects($this->once()) - ->method('getHome') - ->will($this->returnValue('/home/admin')); - $admin - ->expects($this->once()) - ->method('getBackendClassName') - ->willReturn(Dummy::class); - $admin->expects($this->any()) - ->method('isEnabled') - ->willReturn(true); - $bar = $this->createMock(User::class); - $bar - ->expects($this->exactly(2)) - ->method('getUID') - ->will($this->returnValue('bar')); - $bar - ->expects($this->once()) - ->method('getDisplayName') - ->will($this->returnValue('B. Ar')); - $bar - ->expects($this->once()) - ->method('getEMailAddress') - ->will($this->returnValue('bar@dummy.com')); - $bar - ->expects($this->exactly(2)) - ->method('getQuota') - ->will($this->returnValue('2323')); - $bar - ->method('getLastLogin') - ->will($this->returnValue(3999)); - $bar - ->method('getHome') - ->will($this->returnValue('/home/bar')); - $bar - ->expects($this->once()) - ->method('getBackendClassName') - ->willReturn(Dummy::class); - $bar->expects($this->any()) - ->method('isEnabled') - ->willReturn(true); - - $this->groupManager - ->expects($this->at(2)) - ->method('displayNamesInGroup') - ->with('SubGroup2', 'pattern') - ->will($this->returnValue(['foo' => 'M. Foo', 'admin' => 'S. Admin'])); - $this->groupManager - ->expects($this->at(1)) - ->method('displayNamesInGroup') - ->with('SubGroup1', 'pattern') - ->will($this->returnValue(['bar' => 'B. Ar'])); - $this->groupManager - ->expects($this->exactly(3)) - ->method('getUserGroupIds') - ->will($this->onConsecutiveCalls( - ['admin', 'SubGroup1', 'testGroup'], - ['SubGroup2', 'SubGroup1'], - ['SubGroup2', 'Foo'] - )); - $this->userManager - ->expects($this->at(0)) - ->method('get') - ->with('bar') - ->will($this->returnValue($bar)); - $this->userManager - ->expects($this->at(1)) - ->method('get') - ->with('foo') - ->will($this->returnValue($foo)); - $this->userManager - ->expects($this->at(2)) - ->method('get') - ->with('admin') - ->will($this->returnValue($admin)); - - $subgroup1 = $this->getMockBuilder(IGroup::class) - ->disableOriginalConstructor() - ->getMock(); - $subgroup1->expects($this->any()) - ->method('getGID') - ->will($this->returnValue('SubGroup1')); - $subgroup2 = $this->getMockBuilder(IGroup::class) - ->disableOriginalConstructor() - ->getMock(); - $subgroup2->expects($this->any()) - ->method('getGID') - ->will($this->returnValue('SubGroup2')); - $subadmin = $this->getMockBuilder(SubAdmin::class) - ->disableOriginalConstructor() - ->getMock(); - $subadmin - ->expects($this->at(0)) - ->method('getSubAdminsGroups') - ->will($this->returnValue([$subgroup1, $subgroup2])); - $subadmin - ->expects($this->any()) - ->method('getSubAdminsGroupsName') - ->will($this->returnValue([])); - $subadmin - ->expects($this->any()) - ->method('getSubAdminsGroups') - ->will($this->returnValue([])); - $this->groupManager - ->expects($this->any()) - ->method('getSubAdmin') - ->will($this->returnValue($subadmin)); - - $this->userMountCache - ->expects($this->once()) - ->method('getUsedSpaceForUsers') - ->will($this->returnValue(['admin' => 200, 'bar' => 2000, 'foo' => 512])); - - $expectedResponse = new DataResponse( - [ - 0 => [ - 'name' => 'bar', - 'displayname' => 'B. Ar', - 'groups' => ['SubGroup1'], - 'subadmin' => [], - 'quota' => '2323', - 'quota_bytes' => 2323.0, - 'storageLocation' => '/home/bar', - 'lastLogin' => 3999000, - 'backend' => Dummy::class, - 'email' => 'bar@dummy.com', - 'isRestoreDisabled' => false, - 'isAvatarAvailable' => true, - 'isEnabled' => true, - 'size' => 2000, - ], - 1=> [ - 'name' => 'foo', - 'displayname' => 'M. Foo', - 'groups' => ['SubGroup2', 'SubGroup1'], - 'subadmin' => [], - 'quota' => '1024', - 'quota_bytes' => 1024.0, - 'storageLocation' => '/home/foo', - 'lastLogin' => 500000, - 'backend' => 'OC_User_Database', - 'email' => 'foo@bar.com', - 'isRestoreDisabled' => false, - 'isAvatarAvailable' => true, - 'isEnabled' => true, - 'size' => 512, - ], - 2 => [ - 'name' => 'admin', - 'displayname' => 'S. Admin', - 'groups' => ['SubGroup2'], - 'subadmin' => [], - 'quota' => '404', - 'quota_bytes' => 404.0, - 'storageLocation' => '/home/admin', - 'lastLogin' => 12000, - 'backend' => Dummy::class, - 'email' => 'admin@bar.com', - 'isRestoreDisabled' => false, - 'isAvatarAvailable' => false, - 'isEnabled' => true, - 'size' => 200, - ], - ] - ); - - $response = $controller->index(0, 10, '', 'pattern'); - $this->assertEquals($expectedResponse, $response); - } - - /** - * TODO: Since the function uses the static OC_Subadmin class it can't be mocked - * to test for subadmins. Thus the test always assumes you have admin permissions... - */ - public function testIndexWithSearch() { - $controller = $this->getController(true); - - $foo = $this->createMock(User::class); - $foo - ->expects($this->exactly(2)) - ->method('getUID') - ->will($this->returnValue('foo')); - $foo - ->expects($this->once()) - ->method('getDisplayName') - ->will($this->returnValue('M. Foo')); - $foo - ->expects($this->once()) - ->method('getEMailAddress') - ->will($this->returnValue('foo@bar.com')); - $foo - ->expects($this->exactly(2)) - ->method('getQuota') - ->will($this->returnValue('1024')); - $foo - ->method('getLastLogin') - ->will($this->returnValue(500)); - $foo - ->method('getHome') - ->will($this->returnValue('/home/foo')); - $foo - ->expects($this->once()) - ->method('getBackendClassName') - ->will($this->returnValue('OC_User_Database')); - $foo->expects($this->any()) - ->method('isEnabled') - ->willReturn(true); - $admin = $this->createMock(User::class); - $admin - ->expects($this->exactly(2)) - ->method('getUID') - ->will($this->returnValue('admin')); - $admin - ->expects($this->once()) - ->method('getDisplayName') - ->will($this->returnValue('S. Admin')); - $admin - ->expects($this->once()) - ->method('getEMailAddress') - ->will($this->returnValue('admin@bar.com')); - $admin - ->expects($this->exactly(2)) - ->method('getQuota') - ->will($this->returnValue('404')); - $admin - ->expects($this->once()) - ->method('getLastLogin') - ->will($this->returnValue(12)); - $admin - ->expects($this->once()) - ->method('getHome') - ->will($this->returnValue('/home/admin')); - $admin - ->expects($this->once()) - ->method('getBackendClassName') - ->willReturn(Dummy::class); - $admin->expects($this->any()) - ->method('isEnabled') - ->willReturn(true); - $bar = $this->createMock(User::class); - $bar - ->expects($this->exactly(2)) - ->method('getUID') - ->will($this->returnValue('bar')); - $bar - ->expects($this->once()) - ->method('getDisplayName') - ->will($this->returnValue('B. Ar')); - $bar - ->expects($this->once()) - ->method('getEMailAddress') - ->will($this->returnValue('bar@dummy.com')); - $bar - ->expects($this->exactly(2)) - ->method('getQuota') - ->will($this->returnValue('2323')); - $bar - ->method('getLastLogin') - ->will($this->returnValue(3999)); - $bar - ->method('getHome') - ->will($this->returnValue('/home/bar')); - $bar - ->expects($this->once()) - ->method('getBackendClassName') - ->willReturn(Dummy::class); - $bar->expects($this->any()) - ->method('isEnabled') - ->willReturn(true); - - $this->userManager - ->expects($this->once()) - ->method('search') - ->with('pattern', 10, 0) - ->will($this->returnValue([$foo, $admin, $bar])); - $this->groupManager - ->expects($this->exactly(3)) - ->method('getUserGroupNames') - ->will($this->onConsecutiveCalls( - array( - 'Users' => array('displayName' => 'Users'), - 'Support' => array('displayName' => 'Support') - ), - array( - 'admins' => array('displayName' => 'admins'), - 'Support' => array('displayName' => 'Support') - ), - array( - 'External Users' => array('displayName' => 'External Users') - ) - )); - - $subadmin = $this->getMockBuilder(SubAdmin::class) - ->disableOriginalConstructor() - ->getMock(); - $subadmin->expects($this->any()) - ->method('getSubAdminsGroupsName') - ->will($this->returnValue([])); - $this->groupManager - ->expects($this->any()) - ->method('getSubAdmin') - ->will($this->returnValue($subadmin)); - - $this->userMountCache - ->expects($this->once()) - ->method('getUsedSpaceForUsers') - ->will($this->returnValue(['admin' => 200, 'bar' => 2000, 'foo' => 512])); - - $expectedResponse = new DataResponse( - array( - 0 => array( - 'name' => 'foo', - 'displayname' => 'M. Foo', - 'groups' => array( - 'Users' => array('displayName' => 'Users'), - 'Support' => array('displayName' => 'Support') - ), - 'subadmin' => array(), - 'quota' => 1024, - 'quota_bytes' => 1024, - 'storageLocation' => '/home/foo', - 'lastLogin' => 500000, - 'backend' => 'OC_User_Database', - 'email' => 'foo@bar.com', - 'isRestoreDisabled' => false, - 'isAvatarAvailable' => true, - 'isEnabled' => true, - 'size' => 512, - ), - 1 => array( - 'name' => 'admin', - 'displayname' => 'S. Admin', - 'groups' => array( - 'admins' => array('displayName' => 'admins'), - 'Support' => array('displayName' => 'Support') - ), - 'subadmin' => array(), - 'quota' => 404, - 'quota_bytes' => 404, - 'storageLocation' => '/home/admin', - 'lastLogin' => 12000, - 'backend' => Dummy::class, - 'email' => 'admin@bar.com', - 'isRestoreDisabled' => false, - 'isAvatarAvailable' => false, - 'isEnabled' => true, - 'size' => 200, - ), - 2 => array( - 'name' => 'bar', - 'displayname' => 'B. Ar', - 'groups' => array( - 'External Users' => array('displayName' => 'External Users') - ), - 'subadmin' => array(), - 'quota' => 2323, - 'quota_bytes' => 2323, - 'storageLocation' => '/home/bar', - 'lastLogin' => 3999000, - 'backend' => Dummy::class, - 'email' => 'bar@dummy.com', - 'isRestoreDisabled' => false, - 'isAvatarAvailable' => true, - 'isEnabled' => true, - 'size' => 2000, - ), - ) - ); - $response = $controller->index(0, 10, '', 'pattern'); - $this->assertEquals($expectedResponse, $response); - } - - public function testIndexWithBackend() { - $controller = $this->getController(true); - - $user = $this->createMock(User::class); - $user - ->expects($this->exactly(2)) - ->method('getUID') - ->will($this->returnValue('foo')); - $user - ->expects($this->once()) - ->method('getDisplayName') - ->will($this->returnValue('M. Foo')); - $user - ->expects($this->once()) - ->method('getEMailAddress') - ->will($this->returnValue(null)); - $user - ->expects($this->exactly(2)) - ->method('getQuota') - ->will($this->returnValue('none')); - $user - ->method('getLastLogin') - ->will($this->returnValue(500)); - $user - ->method('getHome') - ->will($this->returnValue('/home/foo')); - $user - ->expects($this->once()) - ->method('getBackendClassName') - ->will($this->returnValue('OC_User_Database')); - $user->expects($this->any()) - ->method('isEnabled') - ->willReturn(true); - - $this->userManager - ->expects($this->once()) - ->method('getBackends') - ->will($this->returnValue([new Dummy(), new \OC\User\Database()])); - $this->userManager - ->expects($this->once()) - ->method('clearBackends'); - $this->userManager - ->expects($this->once()) - ->method('search') - ->with('') - ->will($this->returnValue([$user])); - - $subadmin = $this->getMockBuilder(SubAdmin::class) - ->disableOriginalConstructor() - ->getMock(); - $subadmin->expects($this->once()) - ->method('getSubAdminsGroupsName') - ->will($this->returnValue([])); - $this->groupManager - ->expects($this->any()) - ->method('getSubAdmin') - ->will($this->returnValue($subadmin)); - - $this->userMountCache - ->expects($this->once()) - ->method('getUsedSpaceForUsers') - ->will($this->returnValue(['foo' => 512])); - - $expectedResponse = new DataResponse( - array( - 0 => array( - 'name' => 'foo', - 'displayname' => 'M. Foo', - 'groups' => null, - 'subadmin' => array(), - 'quota' => 'none', - 'quota_bytes' => 0, - 'storageLocation' => '/home/foo', - 'lastLogin' => 500000, - 'backend' => 'OC_User_Database', - 'email' => null, - 'isRestoreDisabled' => false, - 'isAvatarAvailable' => true, - 'isEnabled' => true, - 'size' => 512, - ) - ) - ); - $response = $controller->index(0, 10, '','', Dummy::class); - $this->assertEquals($expectedResponse, $response); - } - - public function testIndexWithBackendNoUser() { - $controller = $this->getController(true); - - $this->userManager - ->expects($this->once()) - ->method('getBackends') - ->will($this->returnValue([new Dummy(), new \OC\User\Database()])); - $this->userManager - ->expects($this->once()) - ->method('search') - ->with('') - ->will($this->returnValue([])); - - $this->userMountCache - ->expects($this->once()) - ->method('getUsedSpaceForUsers') - ->will($this->returnValue([])); - - $expectedResponse = new DataResponse([]); - $response = $controller->index(0, 10, '','', Dummy::class); - $this->assertEquals($expectedResponse, $response); - } - - public function testCreateSuccessfulWithoutGroupAdmin() { - $controller = $this->getController(true); - - $user = $this->createMock(User::class); - $user - ->method('getHome') - ->will($this->returnValue('/home/user')); - $user - ->method('getUID') - ->will($this->returnValue('foo')); - $user - ->expects($this->once()) - ->method('getBackendClassName') - ->will($this->returnValue('bar')); - $user->expects($this->any()) - ->method('isEnabled') - ->willReturn(true); - - $this->userManager - ->expects($this->once()) - ->method('createUser') - ->will($this->onConsecutiveCalls($user)); - - $subadmin = $this->getMockBuilder(SubAdmin::class) - ->disableOriginalConstructor() - ->getMock(); - $subadmin - ->expects($this->any()) - ->method('getSubAdminsGroupsName') - ->with($user) - ->will($this->returnValue([])); - $this->groupManager - ->expects($this->any()) - ->method('getSubAdmin') - ->will($this->returnValue($subadmin)); - - $expectedResponse = new DataResponse( - array( - 'name' => 'foo', - 'groups' => null, - 'storageLocation' => '/home/user', - 'backend' => 'bar', - 'lastLogin' => null, - 'displayname' => null, - 'quota' => null, - 'subadmin' => array(), - 'email' => null, - 'isRestoreDisabled' => false, - 'isAvatarAvailable' => true, - 'isEnabled' => true, - 'quota_bytes' => false, - ), - Http::STATUS_CREATED - ); - $response = $controller->create('foo', 'password', array()); - $this->assertEquals($expectedResponse, $response); - } - - public function testCreateSuccessfulWithGroupAdmin() { - $controller = $this->getController(true); - - $user = $this->createMock(User::class); - $user - ->method('getHome') - ->will($this->returnValue('/home/user')); - $user - ->method('getHome') - ->will($this->returnValue('/home/user')); - $user - ->method('getUID') - ->will($this->returnValue('foo')); - $user - ->expects($this->once()) - ->method('getBackendClassName') - ->will($this->returnValue('bar')); - $user->expects($this->any()) - ->method('isEnabled') - ->willReturn(true); - $existingGroup = $this->getMockBuilder(IGroup::class) - ->disableOriginalConstructor()->getMock(); - $existingGroup - ->expects($this->once()) - ->method('addUser') - ->with($user); - $newGroup = $this->getMockBuilder(IGroup::class) - ->disableOriginalConstructor()->getMock(); - $newGroup - ->expects($this->once()) - ->method('addUser') - ->with($user); - - $this->userManager - ->expects($this->once()) - ->method('createUser') - ->will($this->onConsecutiveCalls($user)); - $this->groupManager - ->expects($this->exactly(2)) - ->method('get') - ->will($this->onConsecutiveCalls(null, $existingGroup)); - $this->groupManager - ->expects($this->once()) - ->method('createGroup') - ->with('NewGroup') - ->will($this->onConsecutiveCalls($newGroup)); - $this->groupManager - ->expects($this->once()) - ->method('getUserGroupNames') - ->with($user) - ->will($this->onConsecutiveCalls( - array( - 'NewGroup' => array('displayName' => 'NewGroup'), - 'ExistingGroup' => array('displayName' => 'ExistingGroup') - ) - )); - - $subadmin = $this->getMockBuilder(SubAdmin::class) - ->disableOriginalConstructor() - ->getMock(); - $subadmin - ->expects($this->once()) - ->method('getSubAdminsGroupsName') - ->with($user) - ->will($this->returnValue([])); - $this->groupManager - ->expects($this->any()) - ->method('getSubAdmin') - ->will($this->returnValue($subadmin)); - - $expectedResponse = new DataResponse( - array( - 'name' => 'foo', - 'groups' => array( - 'NewGroup' => array('displayName' => 'NewGroup'), - 'ExistingGroup' => array('displayName' => 'ExistingGroup') - ), - 'storageLocation' => '/home/user', - 'backend' => 'bar', - 'lastLogin' => null, - 'displayname' => null, - 'quota' => null, - 'subadmin' => array(), - 'email' => null, - 'isRestoreDisabled' => false, - 'isAvatarAvailable' => true, - 'isEnabled' => true, - 'quota_bytes' => false, - ), - Http::STATUS_CREATED - ); - $response = $controller->create('foo', 'password', array('NewGroup', 'ExistingGroup')); - $this->assertEquals($expectedResponse, $response); - } - - public function testCreateSuccessfulWithGroupSubAdmin() { - $controller = $this->getController(false); - $user = $this->createMock(IUser::class); - $this->userSession - ->expects($this->once()) - ->method('getUser') - ->will($this->returnValue($user)); - $newUser = $this->createMock(IUser::class); - $newUser - ->method('getHome') - ->will($this->returnValue('/home/user')); - $newUser - ->method('getHome') - ->will($this->returnValue('/home/user')); - $newUser - ->method('getUID') - ->will($this->returnValue('foo')); - $newUser - ->expects($this->once()) - ->method('getBackendClassName') - ->will($this->returnValue('bar')); - $subGroup1 = $this->createMock(IGroup::class); - $newUser->expects($this->any()) - ->method('isEnabled') - ->willReturn(true); - $subGroup1 - ->expects($this->any()) - ->method('getGID') - ->will($this->returnValue('SubGroup1')); - $subGroup1 - ->expects($this->once()) - ->method('addUser') - ->with($user); - $this->userManager - ->expects($this->once()) - ->method('createUser') - ->will($this->returnValue($newUser)); - $this->groupManager - ->expects($this->once()) - ->method('getUserGroupNames') - ->with($user) - ->will($this->onConsecutiveCalls(array('SubGroup1' => - array('displayName' => 'SubGroup1') - ))); - $this->groupManager - ->expects($this->once()) - ->method('getUserGroupNames') - ->with($newUser) - ->will($this->onConsecutiveCalls(['SubGroup1'])); - - $subadmin = $this->createMock(\OC\SubAdmin::class); - $subadmin->expects($this->atLeastOnce()) - ->method('getSubAdminsGroupsName') - ->with($user) - ->willReturnMap([ - [$user, [$subGroup1]], - [$newUser, []], - ]); - $subadmin->expects($this->atLeastOnce()) - ->method('isSubAdminofGroup') - ->willReturnMap([ - [$user, $subGroup1, true], - ]); - $this->groupManager - ->expects($this->any()) - ->method('getSubAdmin') - ->will($this->returnValue($subadmin)); - $this->groupManager->expects($this->atLeastOnce()) - ->method('get') - ->willReturnMap([ - ['SubGroup1', $subGroup1], - ]); - - $expectedResponse = new DataResponse( - array( - 'name' => 'foo', - 'groups' => array('SubGroup1' => array('displayName' => 'SubGroup1')), - 'storageLocation' => '/home/user', - 'backend' => 'bar', - 'lastLogin' => 0, - 'displayname' => null, - 'quota' => null, - 'subadmin' => [], - 'email' => null, - 'isRestoreDisabled' => false, - 'isAvatarAvailable' => true, - 'isEnabled' => true, - 'quota_bytes' => false, - ), - Http::STATUS_CREATED - ); - $response = $controller->create('foo', 'password', ['SubGroup1', 'ExistingGroup']); - $this->assertEquals($expectedResponse, $response); - } - - public function testCreateUnsuccessfulAdmin() { - $controller = $this->getController(true); - - $this->userManager - ->method('createUser') - ->will($this->throwException(new \Exception())); - - $expectedResponse = new DataResponse( - array( - 'message' => 'Unable to create user.' - ), - Http::STATUS_FORBIDDEN - ); - $response = $controller->create('foo', 'password', array()); - $this->assertEquals($expectedResponse, $response); - } - - public function testCreateUnsuccessfulSubAdminNoGroup() { - $controller = $this->getController(false); - $user = $this->createMock(IUser::class); - $user->expects($this->any()) - ->method('getUID') - ->will($this->returnValue('username')); - $this->userSession->expects($this->once()) - ->method('getUser') - ->will($this->returnValue($user)); - - $this->userManager->expects($this->never()) - ->method('createUser'); - - $expectedResponse = new DataResponse( - [ - 'message' => 'No valid group selected' - ], - Http::STATUS_FORBIDDEN - ); - $response = $controller->create('foo', 'password', []); - $this->assertEquals($expectedResponse, $response); - } - - public function testCreateUnsuccessfulSubAdmin() { - $controller = $this->getController(false); - $user = $this->createMock(IUser::class); - $user->expects($this->any()) - ->method('getUID') - ->will($this->returnValue('username')); - $this->userSession->expects($this->once()) - ->method('getUser') - ->will($this->returnValue($user)); - - $this->userManager - ->method('createUser') - ->will($this->throwException(new \Exception())); - - $subgroup1 = $this->createMock(IGroup::class); - $subgroup2 = $this->createMock(IGroup::class); - $subadmin = $this->createMock(\OC\SubAdmin::class); - $subadmin->expects($this->atLeastOnce()) - ->method('isSubAdminofGroup') - ->willReturnMap([ - [$user, $subgroup1, true], - [$user, $subgroup2, true], - ]); - $this->groupManager->expects($this->any()) - ->method('getSubAdmin') - ->willReturn($subadmin); - $this->groupManager->expects($this->atLeastOnce()) - ->method('get') - ->willReturnMap([ - ['SubGroup1', $subgroup1], - ['SubGroup2', $subgroup2], - ]); - - $expectedResponse = new DataResponse( - [ - 'message' => 'Unable to create user.' - ], - Http::STATUS_FORBIDDEN - ); - $response = $controller->create('foo', 'password', array('SubGroup1', 'SubGroup2')); - $this->assertEquals($expectedResponse, $response); - } - - public function testDestroySelfAdmin() { - $controller = $this->getController(true); - - $user = $this->createMock(User::class); - $user - ->expects($this->once()) - ->method('getUID') - ->will($this->returnValue('myself')); - $this->userSession - ->method('getUser') - ->will($this->returnValue($user)); - - $expectedResponse = new DataResponse( - array( - 'status' => 'error', - 'data' => array( - 'message' => 'Unable to delete user.' - ) - ), - Http::STATUS_FORBIDDEN - ); - $response = $controller->destroy('myself'); - $this->assertEquals($expectedResponse, $response); - } - - public function testDestroySelfSubadmin() { - $controller = $this->getController(false); - - $user = $this->createMock(User::class); - $user - ->expects($this->once()) - ->method('getUID') - ->will($this->returnValue('myself')); - $this->userSession - ->method('getUser') - ->will($this->returnValue($user)); - - $expectedResponse = new DataResponse( - array( - 'status' => 'error', - 'data' => array( - 'message' => 'Unable to delete user.' - ) - ), - Http::STATUS_FORBIDDEN - ); - $response = $controller->destroy('myself'); - $this->assertEquals($expectedResponse, $response); - } - - public function testDestroyAdmin() { - $controller = $this->getController(true); - - $user = $this->createMock(User::class); - $user - ->expects($this->once()) - ->method('getUID') - ->will($this->returnValue('Admin')); - $toDeleteUser = $this->createMock(User::class); - $toDeleteUser - ->expects($this->once()) - ->method('delete') - ->will($this->returnValue(true)); - $this->userSession - ->method('getUser') - ->will($this->returnValue($user)); - $this->userManager - ->method('get') - ->with('UserToDelete') - ->will($this->returnValue($toDeleteUser)); - - $expectedResponse = new DataResponse( - array( - 'status' => 'success', - 'data' => array( - 'username' => 'UserToDelete' - ) - ), - Http::STATUS_NO_CONTENT - ); - $response = $controller->destroy('UserToDelete'); - $this->assertEquals($expectedResponse, $response); - } - - public function testDestroySubAdmin() { - $controller = $this->getController(false); - $user = $this->createMock(User::class); - $user - ->expects($this->once()) - ->method('getUID') - ->will($this->returnValue('myself')); - $this->userSession - ->method('getUser') - ->will($this->returnValue($user)); - - $user = $this->createMock(User::class); - $toDeleteUser = $this->createMock(User::class); - $toDeleteUser - ->expects($this->once()) - ->method('delete') - ->will($this->returnValue(true)); - $this->userSession - ->method('getUser') - ->will($this->returnValue($user)); - $this->userManager - ->method('get') - ->with('UserToDelete') - ->will($this->returnValue($toDeleteUser)); - - $subadmin = $this->getMockBuilder(SubAdmin::class) - ->disableOriginalConstructor() - ->getMock(); - $subadmin->expects($this->once()) - ->method('isUserAccessible') - ->with($user, $toDeleteUser) - ->will($this->returnValue(true)); - $this->groupManager - ->expects($this->any()) - ->method('getSubAdmin') - ->will($this->returnValue($subadmin)); - - $expectedResponse = new DataResponse( - [ - 'status' => 'success', - 'data' => [ - 'username' => 'UserToDelete' - ] - ], - Http::STATUS_NO_CONTENT - ); - $response = $controller->destroy('UserToDelete'); - $this->assertEquals($expectedResponse, $response); - } - - public function testDestroyUnsuccessfulAdmin() { - $controller = $this->getController(true); - - $user = $this->createMock(User::class); - $user - ->expects($this->once()) - ->method('getUID') - ->will($this->returnValue('Admin')); - $toDeleteUser = $this->createMock(User::class); - $toDeleteUser - ->expects($this->once()) - ->method('delete') - ->will($this->returnValue(false)); - $this->userSession - ->method('getUser') - ->will($this->returnValue($user)); - $this->userManager - ->method('get') - ->with('UserToDelete') - ->will($this->returnValue($toDeleteUser)); - - $expectedResponse = new DataResponse( - array( - 'status' => 'error', - 'data' => array( - 'message' => 'Unable to delete user.' - ) - ), - Http::STATUS_FORBIDDEN - ); - $response = $controller->destroy('UserToDelete'); - $this->assertEquals($expectedResponse, $response); - } - - public function testDestroyUnsuccessfulSubAdmin() { - $controller = $this->getController(false); - $user = $this->createMock(User::class); - $user - ->expects($this->once()) - ->method('getUID') - ->will($this->returnValue('myself')); - $this->userSession - ->method('getUser') - ->will($this->returnValue($user)); - - $toDeleteUser = $this->createMock(User::class); - $toDeleteUser - ->expects($this->once()) - ->method('delete') - ->will($this->returnValue(false)); - $this->userSession - ->method('getUser') - ->will($this->returnValue($user)); - $this->userManager - ->method('get') - ->with('UserToDelete') - ->will($this->returnValue($toDeleteUser)); - - $subadmin = $this->getMockBuilder(SubAdmin::class) - ->disableOriginalConstructor() - ->getMock(); - $subadmin->expects($this->once()) - ->method('isUserAccessible') - ->with($user, $toDeleteUser) - ->will($this->returnValue(true)); - $this->groupManager - ->expects($this->any()) - ->method('getSubAdmin') - ->will($this->returnValue($subadmin)); - - $expectedResponse = new DataResponse( - [ - 'status' => 'error', - 'data' => [ - 'message' => 'Unable to delete user.' - ] - ], - Http::STATUS_FORBIDDEN - ); - $response = $controller->destroy('UserToDelete'); - $this->assertEquals($expectedResponse, $response); - } - - public function testDestroyNotAccessibleToSubAdmin() { - $controller = $this->getController(false); - - $user = $this->createMock(User::class); - $user - ->expects($this->once()) - ->method('getUID') - ->will($this->returnValue('myself')); - $this->userSession - ->method('getUser') - ->will($this->returnValue($user)); - - $toDeleteUser = $this->createMock(User::class); - $this->userSession - ->method('getUser') - ->will($this->returnValue($user)); - $this->userManager - ->method('get') - ->with('UserToDelete') - ->will($this->returnValue($toDeleteUser)); - - $subadmin = $this->getMockBuilder(SubAdmin::class) - ->disableOriginalConstructor() - ->getMock(); - $subadmin->expects($this->once()) - ->method('isUserAccessible') - ->with($user, $toDeleteUser) - ->will($this->returnValue(false)); - $this->groupManager - ->expects($this->any()) - ->method('getSubAdmin') - ->will($this->returnValue($subadmin)); - - $expectedResponse = new DataResponse( - [ - 'status' => 'error', - 'data' => [ - 'message' => 'Authentication error' - ] - ], - Http::STATUS_FORBIDDEN - ); - $response = $controller->destroy('UserToDelete'); - $this->assertEquals($expectedResponse, $response); - } - - /** - * test if an invalid mail result in a failure response - */ - public function testCreateUnsuccessfulWithInvalidEmailAdmin() { - $controller = $this->getController(true); - - $expectedResponse = new DataResponse([ - 'message' => 'Invalid mail address', - ], - Http::STATUS_UNPROCESSABLE_ENTITY - ); - $response = $controller->create('foo', 'password', [], 'invalidMailAdress'); - $this->assertEquals($expectedResponse, $response); - } - - /** - * test if a valid mail result in a successful mail send - */ - public function testCreateSuccessfulWithValidEmailAdmin() { - $controller = $this->getController(true); - $this->mailer - ->expects($this->at(0)) - ->method('validateMailAddress') - ->with('validMail@Adre.ss') - ->will($this->returnValue(true)); - - $user = $this->createMock(User::class); - $user - ->method('getHome') - ->will($this->returnValue('/home/user')); - $user - ->method('getHome') - ->will($this->returnValue('/home/user')); - $user - ->method('getUID') - ->will($this->returnValue('foo')); - $user - ->method('getDisplayName') - ->will($this->returnValue('foo')); - $user - ->expects($this->once()) - ->method('getBackendClassName') - ->will($this->returnValue('bar')); - - $emailTemplate = $this->createMock(IEMailTemplate::class); - $this->newUserMailHelper - ->expects($this->at(0)) - ->method('generateTemplate') - ->with($user, false) - ->willReturn($emailTemplate); - $this->newUserMailHelper - ->expects($this->at(1)) - ->method('sendMail') - ->with($user, $emailTemplate); - - $this->userManager - ->expects($this->once()) - ->method('createUser') - ->will($this->onConsecutiveCalls($user)); - $subadmin = $this->getMockBuilder(SubAdmin::class) - ->disableOriginalConstructor() - ->getMock(); - $subadmin->expects($this->once()) - ->method('getSubAdminsGroupsName') - ->with($user) - ->will($this->returnValue([])); - $this->groupManager - ->expects($this->any()) - ->method('getSubAdmin') - ->will($this->returnValue($subadmin)); - - $response = $controller->create('foo', 'password', [], 'validMail@Adre.ss'); - $this->assertEquals(Http::STATUS_CREATED, $response->getStatus()); - } - - private function mockUser($userId = 'foo', $displayName = 'M. Foo', - $lastLogin = 500, $home = '/home/foo', - $backend = 'OC_User_Database', $enabled = true) { - $user = $this->createMock(User::class); - $user - ->expects($this->any()) - ->method('getUID') - ->will($this->returnValue($userId)); - $user - ->expects($this->once()) - ->method('getDisplayName') - ->will($this->returnValue($displayName)); - $user - ->method('getLastLogin') - ->will($this->returnValue($lastLogin)); - $user - ->method('getHome') - ->will($this->returnValue($home)); - $user - ->expects($this->once()) - ->method('getBackendClassName') - ->will($this->returnValue($backend)); - $user->expects($this->any()) - ->method('isEnabled') - ->willReturn($enabled); - - $result = [ - 'name' => $userId, - 'displayname' => $displayName, - 'groups' => null, - 'subadmin' => array(), - 'quota' => null, - 'storageLocation' => $home, - 'lastLogin' => $lastLogin * 1000, - 'backend' => $backend, - 'email' => null, - 'isRestoreDisabled' => false, - 'isAvatarAvailable' => true, - 'isEnabled' => $enabled, - 'quota_bytes' => false, - ]; - - return [$user, $result]; - } - - public function testRestorePossibleWithoutEncryption() { - $controller = $this->getController(true); - - list($user, $expectedResult) = $this->mockUser(); - - $subadmin = $this->getMockBuilder(SubAdmin::class) - ->disableOriginalConstructor() - ->getMock(); - $subadmin->expects($this->once()) - ->method('getSubAdminsGroupsName') - ->with($user) - ->will($this->returnValue([])); - $this->groupManager - ->expects($this->any()) - ->method('getSubAdmin') - ->will($this->returnValue($subadmin)); - - $result = self::invokePrivate($controller, 'formatUserForIndex', [$user]); - $this->assertEquals($expectedResult, $result); - } - - public function testRestorePossibleWithAdminAndUserRestore() { - list($user, $expectedResult) = $this->mockUser(); - - $this->appManager - ->expects($this->once()) - ->method('isEnabledForUser') - ->with( - $this->equalTo('encryption') - ) - ->will($this->returnValue(true)); - $this->config - ->expects($this->once()) - ->method('getAppValue') - ->with( - $this->equalTo('encryption'), - $this->equalTo('recoveryAdminEnabled'), - $this->anything() - ) - ->will($this->returnValue('1')); - - $this->config - ->expects($this->at(1)) - ->method('getUserValue') - ->with( - $this->anything(), - $this->equalTo('encryption'), - $this->equalTo('recoveryEnabled'), - $this->anything() - ) - ->will($this->returnValue('1')); - - $subadmin = $this->getMockBuilder(SubAdmin::class) - ->disableOriginalConstructor() - ->getMock(); - $subadmin->expects($this->once()) - ->method('getSubAdminsGroupsName') - ->with($user) - ->will($this->returnValue([])); - $this->groupManager - ->expects($this->any()) - ->method('getSubAdmin') - ->will($this->returnValue($subadmin)); - - $controller = $this->getController(true); - $result = self::invokePrivate($controller, 'formatUserForIndex', [$user]); - $this->assertEquals($expectedResult, $result); - } - - /** - * @dataProvider dataTestRestoreNotPossibleWithoutAdminRestore - * - * @param bool $masterKeyEnabled - */ - public function testRestoreNotPossibleWithoutAdminRestore($masterKeyEnabled) { - list($user, $expectedResult) = $this->mockUser(); - - // without the master key enabled we use per-user keys - $this->encryptionModule->expects($this->once())->method('needDetailedAccessList')->willReturn(!$masterKeyEnabled); - - $this->appManager - ->method('isEnabledForUser') - ->with( - $this->equalTo('encryption') - ) - ->will($this->returnValue(true)); - - // without the master key enabled we use per-user keys -> restore is disabled - $expectedResult['isRestoreDisabled'] = !$masterKeyEnabled; - - $subadmin = $this->getMockBuilder(SubAdmin::class) - ->disableOriginalConstructor() - ->getMock(); - $subadmin->expects($this->once()) - ->method('getSubAdminsGroupsName') - ->with($user) - ->will($this->returnValue([])); - $this->groupManager - ->expects($this->any()) - ->method('getSubAdmin') - ->will($this->returnValue($subadmin)); - - $controller = $this->getController(true); - $result = self::invokePrivate($controller, 'formatUserForIndex', [$user]); - $this->assertEquals($expectedResult, $result); - } - - public function dataTestRestoreNotPossibleWithoutAdminRestore() { - return [ - [true], - [false] - ]; - } - - public function testRestoreNotPossibleWithoutUserRestore() { - list($user, $expectedResult) = $this->mockUser(); - - $this->appManager - ->expects($this->once()) - ->method('isEnabledForUser') - ->with( - $this->equalTo('encryption') - ) - ->will($this->returnValue(true)); - $this->config - ->expects($this->once()) - ->method('getAppValue') - ->with( - $this->equalTo('encryption'), - $this->equalTo('recoveryAdminEnabled'), - $this->anything() - ) - ->will($this->returnValue('1')); - - $this->config - ->expects($this->at(1)) - ->method('getUserValue') - ->with( - $this->anything(), - $this->equalTo('encryption'), - $this->equalTo('recoveryEnabled'), - $this->anything() - ) - ->will($this->returnValue('0')); - - $expectedResult['isRestoreDisabled'] = true; - - $subadmin = $this->getMockBuilder(SubAdmin::class) - ->disableOriginalConstructor() - ->getMock(); - $subadmin->expects($this->once()) - ->method('getSubAdminsGroupsName') - ->with($user) - ->will($this->returnValue([])); - $this->groupManager - ->expects($this->any()) - ->method('getSubAdmin') - ->will($this->returnValue($subadmin)); - - $controller = $this->getController(true); - $result = self::invokePrivate($controller, 'formatUserForIndex', [$user]); - $this->assertEquals($expectedResult, $result); - } - - public function testNoAvatar() { - $controller = $this->getController(true); - - list($user, $expectedResult) = $this->mockUser(); - - $subadmin = $this->getMockBuilder(SubAdmin::class) - ->disableOriginalConstructor() - ->getMock(); - $subadmin->expects($this->once()) - ->method('getSubAdminsGroupsName') - ->with($user) - ->will($this->returnValue([])); - $this->groupManager - ->expects($this->any()) - ->method('getSubAdmin') - ->will($this->returnValue($subadmin)); - - $this->avatarManager - ->method('getAvatar') - ->will($this->throwException(new \OCP\Files\NotFoundException())); - $expectedResult['isAvatarAvailable'] = false; - - $result = self::invokePrivate($controller, 'formatUserForIndex', [$user]); - $this->assertEquals($expectedResult, $result); - } - - public function testStatsAdmin() { - $controller = $this->getController(true); - - $this->userManager - ->expects($this->at(0)) - ->method('countUsers') - ->will($this->returnValue([128, 44])); - - $expectedResponse = new DataResponse( - [ - 'totalUsers' => 172 - ] - ); - $response = $controller->stats(); - $this->assertEquals($expectedResponse, $response); - } - - /** - * Tests that the subadmin stats return unique users, even - * when a user appears in several groups. - */ - public function testStatsSubAdmin() { - $controller = $this->getController(false); - - $user = $this->createMock(User::class); - - $this->userSession - ->expects($this->once()) - ->method('getUser') - ->will($this->returnValue($user)); - - $group1 = $this->getMockBuilder(Group::class) - ->disableOriginalConstructor()->getMock(); - $group1 - ->expects($this->once()) - ->method('getUsers') - ->will($this->returnValue(['foo' => 'M. Foo', 'admin' => 'S. Admin'])); - - $group2 = $this->getMockBuilder(Group::class) - ->disableOriginalConstructor()->getMock(); - $group2 - ->expects($this->once()) - ->method('getUsers') - ->will($this->returnValue(['bar' => 'B. Ar'])); - - $subadmin = $this->getMockBuilder(SubAdmin::class) - ->disableOriginalConstructor() - ->getMock(); - $subadmin - ->expects($this->at(0)) - ->method('getSubAdminsGroupsName') - ->will($this->returnValue([$group1, $group2])); - $subadmin - ->expects($this->at(0)) - ->method('getSubAdminsGroups') - ->will($this->returnValue([$group1, $group2])); - - $this->groupManager - ->expects($this->any()) - ->method('getSubAdmin') - ->will($this->returnValue($subadmin)); - - $expectedResponse = new DataResponse( - [ - 'totalUsers' => 3 - ] - ); - - $response = $controller->stats(); - $this->assertEquals($expectedResponse, $response); - } - - public function dataSetDisplayName() { - $data = []; - - $user1 = $this->createMock(IUser::class); - $user1->method('getUID')->willReturn('user1'); - $user1->method('canChangeDisplayName')->willReturn(true); - $data[] = [$user1, $user1, false, false, true]; - - $user1 = $this->createMock(IUser::class); - $user1->method('getUID')->willReturn('user1'); - $user1->method('canChangeDisplayName')->willReturn(false); - $data[] = [$user1, $user1, false, false, false]; - - $user1 = $this->createMock(IUser::class); - $user1->method('getUID')->willReturn('user1'); - $user2 = $this->createMock(IUser::class); - $user2->method('getUID')->willReturn('user2'); - $user2->method('canChangeDisplayName')->willReturn(true); - $data[] = [$user1, $user2, false, false, false]; - - $user1 = $this->createMock(IUser::class); - $user1->method('getUID')->willReturn('user1'); - $user2 = $this->createMock(IUser::class); - $user2->method('getUID')->willReturn('user2'); - $user2->method('canChangeDisplayName')->willReturn(true); - $data[] = [$user1, $user2, true, false, true]; - - $user1 = $this->createMock(IUser::class); - $user1->method('getUID')->willReturn('user1'); - $user2 = $this->createMock(IUser::class); - $user2->method('getUID')->willReturn('user2'); - $user2->method('canChangeDisplayName')->willReturn(true); - $data[] = [$user1, $user2, false, true, true]; - - return $data; - } - - /** - * @dataProvider dataSetDisplayName - * - * @param IUser|\PHPUnit_Framework_MockObject_MockObject $currentUser - * @param IUser|\PHPUnit_Framework_MockObject_MockObject $editUser - * @param bool $isAdmin - * @param bool $isSubAdmin - * @param bool $valid - */ - public function testSetDisplayName($currentUser, $editUser, $isAdmin, $isSubAdmin, $valid) { - $this->userSession - ->expects($this->once()) - ->method('getUser') - ->willReturn($currentUser); - $this->userManager - ->expects($this->once()) - ->method('get') - ->with($editUser->getUID()) - ->willReturn($editUser); - $this->accountManager->expects($this->any())->method('getUser')->willReturn([]); - - $subadmin = $this->getMockBuilder(SubAdmin::class) - ->disableOriginalConstructor() - ->getMock(); - $subadmin - ->method('isUserAccessible') - ->with($currentUser, $editUser) - ->willReturn($isSubAdmin); - - $this->groupManager - ->method('getSubAdmin') - ->willReturn($subadmin); - $this->groupManager - ->method('isAdmin') - ->with($currentUser->getUID()) - ->willReturn($isAdmin); - - if ($valid === true) { - $expectedResponse = new DataResponse( - [ - 'status' => 'success', - 'data' => [ - 'message' => 'Your full name has been changed.', - 'username' => $editUser->getUID(), - 'displayName' => 'newDisplayName', - ], - ] - ); - } else { - $expectedResponse = new DataResponse( - [ - 'status' => 'error', - 'data' => [ - 'message' => 'Authentication error', - ], - ] - ); - } - - $controller = $this->getController(true); - $response = $controller->setDisplayName($editUser->getUID(), 'newDisplayName'); - $this->assertEquals($expectedResponse, $response); - } - - public function testSetDisplayNameFails() { - /** @var IUser|\PHPUnit_Framework_MockObject_MockObject $user */ - $user = $this->createMock(IUser::class); - $user->method('canChangeDisplayname')->willReturn(true); - $user->method('getUID')->willReturn('user'); - $user->expects($this->once()) - ->method('setDisplayName') - ->with('newDisplayName') - ->willReturn(false); - $user->method('getDisplayName')->willReturn('oldDisplayName'); - - $this->userSession - ->expects($this->once()) - ->method('getUser') - ->willReturn($user); - - $this->userManager - ->expects($this->once()) - ->method('get') - ->with($user->getUID()) - ->willReturn($user); - - $subadmin = $this->getMockBuilder(SubAdmin::class) - ->disableOriginalConstructor() - ->getMock(); - $subadmin - ->method('isUserAccessible') - ->with($user, $user) - ->willReturn(false); - - $this->groupManager - ->method('getSubAdmin') - ->willReturn($subadmin); - $this->groupManager - ->expects($this->once()) - ->method('isAdmin') - ->with($user->getUID()) - ->willReturn(false); - - $expectedResponse = new DataResponse( - [ - 'status' => 'error', - 'data' => [ - 'message' => 'Unable to change full name', - 'displayName' => 'oldDisplayName', - ], - ] - ); - $controller = $this->getController(true); - $response = $controller->setDisplayName($user->getUID(), 'newDisplayName'); - $this->assertEquals($expectedResponse, $response); - } - /** * @dataProvider dataTestSetUserSettings * @@ -2361,158 +428,6 @@ class UsersControllerTest extends \Test\TestCase { } /** - * @return array - */ - public function setEmailAddressData() { - return [ - /* mailAddress, isValid, expectsUpdate, canChangeDisplayName, responseCode */ - [ '', true, true, true, Http::STATUS_OK ], - [ 'foo@local', true, true, true, Http::STATUS_OK], - [ 'foo@bar@local', false, false, true, Http::STATUS_UNPROCESSABLE_ENTITY], - [ 'foo@local', true, false, false, Http::STATUS_FORBIDDEN], - ]; - } - /** - * @dataProvider setEmailAddressData - * - * @param string $mailAddress - * @param bool $isValid - * @param bool $expectsUpdate - * @param bool $canChangeDisplayName - * @param int $responseCode - */ - public function testSetEMailAddress($mailAddress, $isValid, $expectsUpdate, $canChangeDisplayName, $responseCode) { - $user = $this->createMock(User::class); - $user - ->expects($this->any()) - ->method('getUID') - ->will($this->returnValue('foo')); - $user - ->expects($this->any()) - ->method('canChangeDisplayName') - ->will($this->returnValue($canChangeDisplayName)); - $user - ->expects($expectsUpdate ? $this->once() : $this->never()) - ->method('setEMailAddress') - ->with( - $this->equalTo($mailAddress) - ); - $user->method('getEMailAddress')->willReturn('oldEmailAddress'); - $this->mailer - ->expects($this->any()) - ->method('validateMailAddress') - ->with($mailAddress) - ->willReturn($isValid); - if ($isValid) { - $user->expects($this->atLeastOnce()) - ->method('canChangeDisplayName') - ->willReturn(true); - $this->userManager - ->expects($this->atLeastOnce()) - ->method('get') - ->with('foo') - ->will($this->returnValue($user)); - } - $controller = $this->getController(true); - $response = $controller->setEMailAddress($user->getUID(), $mailAddress); - $this->assertSame($responseCode, $response->getStatus()); - } - - public function testCreateUnsuccessfulWithoutPasswordAndEmail() { - $controller = $this->getController(true); - - $expectedResponse = new DataResponse( - array( - 'message' => 'To send a password link to the user an email address is required.' - ), - Http::STATUS_UNPROCESSABLE_ENTITY - ); - $response = $controller->create('foo', '', array(), ''); - $this->assertEquals($expectedResponse, $response); - } - - - - public function testCreateSuccessfulWithoutPasswordAndWithEmail() { - $user = $this->createMock(User::class); - $user - ->method('getHome') - ->willReturn('/home/user'); - $user - ->method('getUID') - ->willReturn('foo'); - $user - ->method('getDisplayName') - ->willReturn('John Doe'); - $user - ->method('getEmailAddress') - ->willReturn('abc@example.org'); - $user - ->expects($this->once()) - ->method('getBackendClassName') - ->willReturn('bar'); - $user - ->method('isEnabled') - ->willReturn(true); - - $this->userManager - ->expects($this->once()) - ->method('createUser') - ->will($this->onConsecutiveCalls($user)); - - $subadmin = $this->getMockBuilder(SubAdmin::class) - ->disableOriginalConstructor() - ->getMock(); - $subadmin - ->expects($this->any()) - ->method('getSubAdminsGroupsName') - ->with($user) - ->will($this->returnValue([])); - $this->groupManager - ->expects($this->any()) - ->method('getSubAdmin') - ->will($this->returnValue($subadmin)); - - $controller = $this->getController(true); - $this->mailer - ->expects($this->at(0)) - ->method('validateMailAddress') - ->with('abc@example.org') - ->will($this->returnValue(true)); - $emailTemplate = $this->createMock(IEMailTemplate::class); - $this->newUserMailHelper - ->expects($this->at(0)) - ->method('generateTemplate') - ->with($user, true) - ->willReturn($emailTemplate); - $this->newUserMailHelper - ->expects($this->at(1)) - ->method('sendMail') - ->with($user, $emailTemplate); - - $expectedResponse = new DataResponse( - [ - 'name' => 'foo', - 'groups' => null, - 'storageLocation' => '/home/user', - 'backend' => 'bar', - 'lastLogin' => 0, - 'displayname' => 'John Doe', - 'quota' => null, - 'quota_bytes' => false, - 'subadmin' => array(), - 'email' => 'abc@example.org', - 'isRestoreDisabled' => false, - 'isAvatarAvailable' => true, - 'isEnabled' => true, - ], - Http::STATUS_CREATED - ); - $response = $controller->create('foo', '', array(), 'abc@example.org'); - $this->assertEquals($expectedResponse, $response); - } - - /** * @param string $account * @param string $type * @param array $dataBefore @@ -2598,425 +513,4 @@ class UsersControllerTest extends \Test\TestCase { $this->assertSame(Http::STATUS_BAD_REQUEST, $result->getStatus()); } - public function testDisableUserFailsDueSameUser() { - $user = $this->getMockBuilder(User::class) - ->disableOriginalConstructor()->getMock(); - $user->expects($this->once()) - ->method('getUID') - ->will($this->returnValue('abc')); - $this->userSession - ->expects($this->once()) - ->method('getUser') - ->will($this->returnValue($user)); - $expectedResponse = new DataResponse( - [ - 'status' => 'error', - 'data' => [ - 'message' => 'Error while disabling user.', - ], - ], - Http::STATUS_FORBIDDEN - ); - $response = $this->getController(true)->setEnabled('abc', false); - $this->assertEquals($expectedResponse, $response); - } - - public function testDisableUserFailsDueNoAdminAndNoSubadmin() { - $user = $this->getMockBuilder(User::class) - ->disableOriginalConstructor()->getMock(); - $user->expects($this->once()) - ->method('getUID') - ->will($this->returnValue('def')); - $this->userSession - ->expects($this->exactly(2)) - ->method('getUser') - ->will($this->returnValue($user)); - $user2 = $this->getMockBuilder(User::class) - ->disableOriginalConstructor()->getMock(); - $user2->expects($this->never()) - ->method('setEnabled'); - $this->userManager - ->expects($this->once()) - ->method('get') - ->with('abc') - ->willReturn($user2); - - $subadmin = $this->createMock(SubAdmin::class); - $subadmin->expects($this->once()) - ->method('isUserAccessible') - ->will($this->returnValue(false)); - $this->groupManager - ->expects($this->once()) - ->method('getSubAdmin') - ->willReturn($subadmin); - - $expectedResponse = new DataResponse( - [ - 'status' => 'error', - 'data' => [ - 'message' => 'Authentication error', - ], - ], - Http::STATUS_FORBIDDEN - ); - $response = $this->getController(false)->setEnabled('abc', false); - $this->assertEquals($expectedResponse, $response); - } - - public function testDisableUserFailsDueNoUser() { - $user = $this->getMockBuilder(User::class) - ->disableOriginalConstructor()->getMock(); - $user->expects($this->once()) - ->method('getUID') - ->will($this->returnValue('def')); - $this->userSession - ->expects($this->exactly(1)) - ->method('getUser') - ->will($this->returnValue($user)); - $this->userManager - ->expects($this->once()) - ->method('get') - ->with('abc') - ->willReturn(null); - - $this->groupManager - ->expects($this->never()) - ->method('getSubAdmin'); - - $expectedResponse = new DataResponse( - [ - 'status' => 'error', - 'data' => [ - 'message' => 'Error while disabling user.', - ], - ], - Http::STATUS_FORBIDDEN - ); - $response = $this->getController(true)->setEnabled('abc', false); - $this->assertEquals($expectedResponse, $response); - } - - public function testDisableUserFailsDueNoUserForSubAdmin() { - $user = $this->getMockBuilder(User::class) - ->disableOriginalConstructor()->getMock(); - $user->expects($this->once()) - ->method('getUID') - ->will($this->returnValue('def')); - $this->userSession - ->expects($this->exactly(1)) - ->method('getUser') - ->will($this->returnValue($user)); - $this->userManager - ->expects($this->once()) - ->method('get') - ->with('abc') - ->willReturn(null); - - $this->groupManager - ->expects($this->never()) - ->method('getSubAdmin'); - - $expectedResponse = new DataResponse( - [ - 'status' => 'error', - 'data' => [ - 'message' => 'Error while disabling user.', - ], - ], - Http::STATUS_FORBIDDEN - ); - $response = $this->getController(false)->setEnabled('abc', false); - $this->assertEquals($expectedResponse, $response); - } - - public function testDisableUserSuccessForAdmin() { - $user = $this->getMockBuilder(User::class) - ->disableOriginalConstructor()->getMock(); - $user->expects($this->once()) - ->method('getUID') - ->will($this->returnValue('def')); - $this->userSession - ->expects($this->exactly(1)) - ->method('getUser') - ->will($this->returnValue($user)); - $user2 = $this->getMockBuilder(User::class) - ->disableOriginalConstructor()->getMock(); - $user2->expects($this->once()) - ->method('setEnabled') - ->with(false); - $this->userManager - ->expects($this->once()) - ->method('get') - ->with('abc') - ->willReturn($user2); - - $this->groupManager - ->expects($this->never()) - ->method('getSubAdmin'); - - $expectedResponse = new DataResponse( - [ - 'status' => 'success', - 'data' => [ - 'username' => 'abc', - 'enabled' => 0, - ], - ] - ); - $response = $this->getController(true)->setEnabled('abc', false); - $this->assertEquals($expectedResponse, $response); - } - - public function testDisableUserSuccessForSubAdmin() { - $user = $this->getMockBuilder(User::class) - ->disableOriginalConstructor()->getMock(); - $user->expects($this->once()) - ->method('getUID') - ->will($this->returnValue('def')); - $this->userSession - ->expects($this->exactly(2)) - ->method('getUser') - ->will($this->returnValue($user)); - $user2 = $this->getMockBuilder(User::class) - ->disableOriginalConstructor()->getMock(); - $user2->expects($this->once()) - ->method('setEnabled'); - $this->userManager - ->expects($this->once()) - ->method('get') - ->with('abc') - ->willReturn($user2); - - $subadmin = $this->createMock(SubAdmin::class); - $subadmin->expects($this->once()) - ->method('isUserAccessible') - ->will($this->returnValue(true)); - $this->groupManager - ->expects($this->once()) - ->method('getSubAdmin') - ->willReturn($subadmin); - - $expectedResponse = new DataResponse( - [ - 'status' => 'success', - 'data' => [ - 'username' => 'abc', - 'enabled' => 0, - ], - ] - ); - $response = $this->getController(false)->setEnabled('abc', false); - $this->assertEquals($expectedResponse, $response); - } - - public function testEnableUserFailsDueSameUser() { - $user = $this->getMockBuilder(User::class) - ->disableOriginalConstructor()->getMock(); - $user->expects($this->once()) - ->method('getUID') - ->will($this->returnValue('abc')); - $this->userSession - ->expects($this->once()) - ->method('getUser') - ->will($this->returnValue($user)); - $expectedResponse = new DataResponse( - [ - 'status' => 'error', - 'data' => [ - 'message' => 'Error while enabling user.', - ], - ], - Http::STATUS_FORBIDDEN - ); - $response = $this->getController(true)->setEnabled('abc', true); - $this->assertEquals($expectedResponse, $response); - } - - public function testEnableUserFailsDueNoAdminAndNoSubadmin() { - $user = $this->getMockBuilder(User::class) - ->disableOriginalConstructor()->getMock(); - $user->expects($this->once()) - ->method('getUID') - ->will($this->returnValue('def')); - $this->userSession - ->expects($this->exactly(2)) - ->method('getUser') - ->will($this->returnValue($user)); - $user2 = $this->getMockBuilder(User::class) - ->disableOriginalConstructor()->getMock(); - $user2->expects($this->never()) - ->method('setEnabled'); - $this->userManager - ->expects($this->once()) - ->method('get') - ->with('abc') - ->willReturn($user2); - - $subadmin = $this->createMock(SubAdmin::class); - $subadmin->expects($this->once()) - ->method('isUserAccessible') - ->will($this->returnValue(false)); - $this->groupManager - ->expects($this->once()) - ->method('getSubAdmin') - ->willReturn($subadmin); - - $expectedResponse = new DataResponse( - [ - 'status' => 'error', - 'data' => [ - 'message' => 'Authentication error', - ], - ], - Http::STATUS_FORBIDDEN - ); - $response = $this->getController(false)->setEnabled('abc', true); - $this->assertEquals($expectedResponse, $response); - } - - public function testEnableUserFailsDueNoUser() { - $user = $this->getMockBuilder(User::class) - ->disableOriginalConstructor()->getMock(); - $user->expects($this->once()) - ->method('getUID') - ->will($this->returnValue('def')); - $this->userSession - ->expects($this->exactly(1)) - ->method('getUser') - ->will($this->returnValue($user)); - $this->userManager - ->expects($this->once()) - ->method('get') - ->with('abc') - ->willReturn(null); - - $this->groupManager - ->expects($this->never()) - ->method('getSubAdmin'); - - $expectedResponse = new DataResponse( - [ - 'status' => 'error', - 'data' => [ - 'message' => 'Error while enabling user.', - ], - ], - Http::STATUS_FORBIDDEN - ); - $response = $this->getController(true)->setEnabled('abc', true); - $this->assertEquals($expectedResponse, $response); - } - - public function testEnableUserFailsDueNoUserForSubAdmin() { - $user = $this->getMockBuilder(User::class) - ->disableOriginalConstructor()->getMock(); - $user->expects($this->once()) - ->method('getUID') - ->will($this->returnValue('def')); - $this->userSession - ->expects($this->exactly(1)) - ->method('getUser') - ->will($this->returnValue($user)); - $this->userManager - ->expects($this->once()) - ->method('get') - ->with('abc') - ->willReturn(null); - - $this->groupManager - ->expects($this->never()) - ->method('getSubAdmin'); - - $expectedResponse = new DataResponse( - [ - 'status' => 'error', - 'data' => [ - 'message' => 'Error while enabling user.', - ], - ], - Http::STATUS_FORBIDDEN - ); - $response = $this->getController(false)->setEnabled('abc', true); - $this->assertEquals($expectedResponse, $response); - } - - public function testEnableUserSuccessForAdmin() { - $user = $this->getMockBuilder(User::class) - ->disableOriginalConstructor()->getMock(); - $user->expects($this->once()) - ->method('getUID') - ->will($this->returnValue('def')); - $this->userSession - ->expects($this->exactly(1)) - ->method('getUser') - ->will($this->returnValue($user)); - $user2 = $this->getMockBuilder(User::class) - ->disableOriginalConstructor()->getMock(); - $user2->expects($this->once()) - ->method('setEnabled'); - $this->userManager - ->expects($this->once()) - ->method('get') - ->with('abc') - ->willReturn($user2); - - $this->groupManager - ->expects($this->never()) - ->method('getSubAdmin'); - - $expectedResponse = new DataResponse( - [ - 'status' => 'success', - 'data' => [ - 'username' => 'abc', - 'enabled' => 1, - ], - ] - ); - $response = $this->getController(true)->setEnabled('abc', true); - $this->assertEquals($expectedResponse, $response); - } - - public function testEnableUserSuccessForSubAdmin() { - $user = $this->getMockBuilder(User::class) - ->disableOriginalConstructor()->getMock(); - $user->expects($this->once()) - ->method('getUID') - ->will($this->returnValue('def')); - $this->userSession - ->expects($this->exactly(2)) - ->method('getUser') - ->will($this->returnValue($user)); - $user2 = $this->getMockBuilder(User::class) - ->disableOriginalConstructor()->getMock(); - $user2->expects($this->once()) - ->method('setEnabled') - ->with(true); - $this->userManager - ->expects($this->once()) - ->method('get') - ->with('abc') - ->willReturn($user2); - - $subadmin = $this->createMock(SubAdmin::class); - $subadmin->expects($this->once()) - ->method('isUserAccessible') - ->will($this->returnValue(true)); - $this->groupManager - ->expects($this->once()) - ->method('getSubAdmin') - ->willReturn($subadmin); - - $expectedResponse = new DataResponse( - [ - 'status' => 'success', - 'data' => [ - 'username' => 'abc', - 'enabled' => 1, - ], - ] - ); - $response = $this->getController(false)->setEnabled('abc', true); - $this->assertEquals($expectedResponse, $response); - } } |