diff options
Diffstat (limited to 'apps/provisioning_api/tests/Controller/UsersControllerTest.php')
-rw-r--r-- | apps/provisioning_api/tests/Controller/UsersControllerTest.php | 104 |
1 files changed, 77 insertions, 27 deletions
diff --git a/apps/provisioning_api/tests/Controller/UsersControllerTest.php b/apps/provisioning_api/tests/Controller/UsersControllerTest.php index d508670d4f6..b6f28cc4a04 100644 --- a/apps/provisioning_api/tests/Controller/UsersControllerTest.php +++ b/apps/provisioning_api/tests/Controller/UsersControllerTest.php @@ -48,6 +48,7 @@ use OCA\FederatedFileSharing\FederatedShareProvider; use OCA\Provisioning_API\Controller\UsersController; use OCA\Provisioning_API\FederatedShareProviderFactory; use OCA\Settings\Mailer\NewUserMailHelper; +use OCP\Accounts\IAccountManager; use OCP\App\IAppManager; use OCP\AppFramework\Http\DataResponse; use OCP\EventDispatcher\IEventDispatcher; @@ -56,6 +57,7 @@ use OCP\IGroup; use OCP\IL10N; use OCP\ILogger; use OCP\IRequest; +use OCP\IURLGenerator; use OCP\IUser; use OCP\IUserManager; use OCP\IUserSession; @@ -85,6 +87,8 @@ class UsersControllerTest extends TestCase { protected $api; /** @var AccountManager|MockObject */ protected $accountManager; + /** @var IURLGenerator|MockObject */ + protected $urlGenerator; /** @var IRequest|MockObject */ protected $request; /** @var IFactory|MockObject */ @@ -111,6 +115,7 @@ class UsersControllerTest extends TestCase { $this->logger = $this->createMock(ILogger::class); $this->request = $this->createMock(IRequest::class); $this->accountManager = $this->createMock(AccountManager::class); + $this->urlGenerator = $this->createMock(IURLGenerator::class); $this->l10nFactory = $this->createMock(IFactory::class); $this->newUserMailHelper = $this->createMock(NewUserMailHelper::class); $this->federatedShareProviderFactory = $this->createMock(FederatedShareProviderFactory::class); @@ -128,6 +133,7 @@ class UsersControllerTest extends TestCase { $this->groupManager, $this->userSession, $this->accountManager, + $this->urlGenerator, $this->logger, $this->l10nFactory, $this->newUserMailHelper, @@ -381,7 +387,7 @@ class UsersControllerTest extends TestCase { } public function testAddUserSuccessfulWithDisplayName() { - $api = $this->getMockBuilder('OCA\Provisioning_API\Controller\UsersController') + $api = $this->getMockBuilder(UsersController::class) ->setConstructorArgs([ 'provisioning_api', $this->request, @@ -391,6 +397,7 @@ class UsersControllerTest extends TestCase { $this->groupManager, $this->userSession, $this->accountManager, + $this->urlGenerator, $this->logger, $this->l10nFactory, $this->newUserMailHelper, @@ -993,10 +1000,10 @@ class UsersControllerTest extends TestCase { ->with($targetUser) ->willReturn( [ - AccountManager::PROPERTY_ADDRESS => ['value' => 'address'], - AccountManager::PROPERTY_PHONE => ['value' => 'phone'], - AccountManager::PROPERTY_TWITTER => ['value' => 'twitter'], - AccountManager::PROPERTY_WEBSITE => ['value' => 'website'], + IAccountManager::PROPERTY_ADDRESS => ['value' => 'address'], + IAccountManager::PROPERTY_PHONE => ['value' => 'phone'], + IAccountManager::PROPERTY_TWITTER => ['value' => 'twitter'], + IAccountManager::PROPERTY_WEBSITE => ['value' => 'website'], ] ); $this->config @@ -1162,10 +1169,10 @@ class UsersControllerTest extends TestCase { ->with($targetUser) ->willReturn( [ - AccountManager::PROPERTY_ADDRESS => ['value' => 'address'], - AccountManager::PROPERTY_PHONE => ['value' => 'phone'], - AccountManager::PROPERTY_TWITTER => ['value' => 'twitter'], - AccountManager::PROPERTY_WEBSITE => ['value' => 'website'], + IAccountManager::PROPERTY_ADDRESS => ['value' => 'address'], + IAccountManager::PROPERTY_PHONE => ['value' => 'phone'], + IAccountManager::PROPERTY_TWITTER => ['value' => 'twitter'], + IAccountManager::PROPERTY_WEBSITE => ['value' => 'website'], ] ); @@ -1333,10 +1340,10 @@ class UsersControllerTest extends TestCase { ->with($targetUser) ->willReturn( [ - AccountManager::PROPERTY_ADDRESS => ['value' => 'address'], - AccountManager::PROPERTY_PHONE => ['value' => 'phone'], - AccountManager::PROPERTY_TWITTER => ['value' => 'twitter'], - AccountManager::PROPERTY_WEBSITE => ['value' => 'website'], + IAccountManager::PROPERTY_ADDRESS => ['value' => 'address'], + IAccountManager::PROPERTY_PHONE => ['value' => 'phone'], + IAccountManager::PROPERTY_TWITTER => ['value' => 'twitter'], + IAccountManager::PROPERTY_WEBSITE => ['value' => 'website'], ] ); @@ -1370,6 +1377,47 @@ class UsersControllerTest extends TestCase { $this->assertEquals($expected, $this->invokePrivate($this->api, 'getUserData', ['UID'])); } + public function dataSearchByPhoneNumbers(): array { + return [ + 'Invalid country' => ['Not a country code', ['12345' => ['NaN']], 400, null, null, []], + 'No number to search' => ['DE', ['12345' => ['NaN']], 200, null, null, []], + 'Valid number but no match' => ['DE', ['12345' => ['0711 / 25 24 28-90']], 200, ['+4971125242890'], [], []], + 'Invalid number' => ['FR', ['12345' => ['0711 / 25 24 28-90']], 200, null, null, []], + 'Invalid and valid number' => ['DE', ['12345' => ['NaN', '0711 / 25 24 28-90']], 200, ['+4971125242890'], [], []], + 'Valid and invalid number' => ['DE', ['12345' => ['0711 / 25 24 28-90', 'NaN']], 200, ['+4971125242890'], [], []], + 'Valid number and a match' => ['DE', ['12345' => ['0711 / 25 24 28-90']], 200, ['+4971125242890'], ['+4971125242890' => 'admin'], ['12345' => 'admin@localhost']], + 'Same number twice, later hits' => ['DE', ['12345' => ['0711 / 25 24 28-90'], '23456' => ['0711 / 25 24 28-90']], 200, ['+4971125242890'], ['+4971125242890' => 'admin'], ['23456' => 'admin@localhost']], + ]; + } + + /** + * @dataProvider dataSearchByPhoneNumbers + * @param string $location + * @param array $search + * @param int $status + * @param array $expected + */ + public function testSearchByPhoneNumbers(string $location, array $search, int $status, ?array $searchUsers, ?array $userMatches, array $expected) { + if ($searchUsers === null) { + $this->accountManager->expects($this->never()) + ->method('searchUsers'); + } else { + $this->accountManager->expects($this->once()) + ->method('searchUsers') + ->with(IAccountManager::PROPERTY_PHONE, $searchUsers) + ->willReturn($userMatches); + } + + $this->urlGenerator->method('getAbsoluteURL') + ->with('/') + ->willReturn('https://localhost/'); + + $response = $this->api->searchByPhoneNumbers($location, $search); + + self::assertEquals($status, $response->getStatus()); + self::assertEquals($expected, $response->getData()); + } + public function testEditUserRegularUserSelfEditChangeDisplayName() { $loggedInUser = $this->getMockBuilder(IUser::class) ->disableOriginalConstructor() @@ -3162,7 +3210,7 @@ class UsersControllerTest extends TestCase { ->willReturn($user); /** @var UsersController | MockObject $api */ - $api = $this->getMockBuilder('OCA\Provisioning_API\Controller\UsersController') + $api = $this->getMockBuilder(UsersController::class) ->setConstructorArgs([ 'provisioning_api', $this->request, @@ -3172,6 +3220,7 @@ class UsersControllerTest extends TestCase { $this->groupManager, $this->userSession, $this->accountManager, + $this->urlGenerator, $this->logger, $this->l10nFactory, $this->newUserMailHelper, @@ -3227,7 +3276,7 @@ class UsersControllerTest extends TestCase { public function testGetUser() { /** @var UsersController | MockObject $api */ - $api = $this->getMockBuilder('OCA\Provisioning_API\Controller\UsersController') + $api = $this->getMockBuilder(UsersController::class) ->setConstructorArgs([ 'provisioning_api', $this->request, @@ -3237,6 +3286,7 @@ class UsersControllerTest extends TestCase { $this->groupManager, $this->userSession, $this->accountManager, + $this->urlGenerator, $this->logger, $this->l10nFactory, $this->newUserMailHelper, @@ -3566,22 +3616,22 @@ class UsersControllerTest extends TestCase { return [ [false, false, []], [false, true, [ - AccountManager::PROPERTY_PHONE, - AccountManager::PROPERTY_ADDRESS, - AccountManager::PROPERTY_WEBSITE, - AccountManager::PROPERTY_TWITTER, + IAccountManager::PROPERTY_PHONE, + IAccountManager::PROPERTY_ADDRESS, + IAccountManager::PROPERTY_WEBSITE, + IAccountManager::PROPERTY_TWITTER, ]], [ true, false, [ - AccountManager::PROPERTY_DISPLAYNAME, - AccountManager::PROPERTY_EMAIL, + IAccountManager::PROPERTY_DISPLAYNAME, + IAccountManager::PROPERTY_EMAIL, ]], [ true, true ,[ - AccountManager::PROPERTY_DISPLAYNAME, - AccountManager::PROPERTY_EMAIL, - AccountManager::PROPERTY_PHONE, - AccountManager::PROPERTY_ADDRESS, - AccountManager::PROPERTY_WEBSITE, - AccountManager::PROPERTY_TWITTER, + IAccountManager::PROPERTY_DISPLAYNAME, + IAccountManager::PROPERTY_EMAIL, + IAccountManager::PROPERTY_PHONE, + IAccountManager::PROPERTY_ADDRESS, + IAccountManager::PROPERTY_WEBSITE, + IAccountManager::PROPERTY_TWITTER, ]] ]; } |