Merge pull request #8710 from nextcloud/followup/8596/tests-for-user-pagination

Tests for email collaborators pagination
This commit is contained in:
blizzz 2018-03-09 11:21:21 +01:00 committed by GitHub
commit 054a45c079
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 116 additions and 19 deletions

View File

@ -172,10 +172,14 @@ class MailPlugin implements ISearchPlugin {
} }
} }
$reachedEnd = true;
if (!$this->shareeEnumeration) { if (!$this->shareeEnumeration) {
$result['wide'] = []; $result['wide'] = [];
$userResults['wide'] = []; $userResults['wide'] = [];
} else { } else {
$reachedEnd = (count($result['wide']) < $offset + $limit) &&
(count($userResults['wide']) < $offset + $limit);
$result['wide'] = array_slice($result['wide'], $offset, $limit); $result['wide'] = array_slice($result['wide'], $offset, $limit);
$userResults['wide'] = array_slice($userResults['wide'], $offset, $limit); $userResults['wide'] = array_slice($userResults['wide'], $offset, $limit);
} }
@ -196,7 +200,7 @@ class MailPlugin implements ISearchPlugin {
} }
$searchResult->addResultSet($emailType, $result['wide'], $result['exact']); $searchResult->addResultSet($emailType, $result['wide'], $result['exact']);
return true; return !$reachedEnd;
} }
public function isCurrentUser(ICloudId $cloud): bool { public function isCurrentUser(ICloudId $cloud): bool {

View File

@ -32,6 +32,7 @@ use OCP\Contacts\IManager;
use OCP\Federation\ICloudIdManager; use OCP\Federation\ICloudIdManager;
use OCP\IConfig; use OCP\IConfig;
use OCP\IGroupManager; use OCP\IGroupManager;
use OCP\IUser;
use OCP\IUserSession; use OCP\IUserSession;
use OCP\Share; use OCP\Share;
use Test\TestCase; use Test\TestCase;
@ -98,6 +99,12 @@ class MailPluginTest extends TestCase {
$this->instantiatePlugin(); $this->instantiatePlugin();
$currentUser = $this->createMock(IUser::class);
$currentUser->method('getUID')
->willReturn('current');
$this->userSession->method('getUser')
->willReturn($currentUser);
$this->contactsManager->expects($this->any()) $this->contactsManager->expects($this->any())
->method('search') ->method('search')
->with($searchTerm, ['EMAIL', 'FN']) ->with($searchTerm, ['EMAIL', 'FN'])
@ -113,15 +120,15 @@ class MailPluginTest extends TestCase {
public function dataGetEmail() { public function dataGetEmail() {
return [ return [
['test', [], true, ['emails' => [], 'exact' => ['emails' => []]], false, true], ['test', [], true, ['emails' => [], 'exact' => ['emails' => []]], false, false],
['test', [], false, ['emails' => [], 'exact' => ['emails' => []]], false, true], ['test', [], false, ['emails' => [], 'exact' => ['emails' => []]], false, false],
[ [
'test@remote.com', 'test@remote.com',
[], [],
true, true,
['emails' => [], 'exact' => ['emails' => [['label' => 'test@remote.com', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'test@remote.com']]]]], ['emails' => [], 'exact' => ['emails' => [['label' => 'test@remote.com', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'test@remote.com']]]]],
false, false,
true, false,
], ],
[ // no valid email address [ // no valid email address
'test@remote', 'test@remote',
@ -129,7 +136,7 @@ class MailPluginTest extends TestCase {
true, true,
['emails' => [], 'exact' => ['emails' => []]], ['emails' => [], 'exact' => ['emails' => []]],
false, false,
true, false,
], ],
[ [
'test@remote.com', 'test@remote.com',
@ -137,7 +144,7 @@ class MailPluginTest extends TestCase {
false, false,
['emails' => [], 'exact' => ['emails' => [['label' => 'test@remote.com', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'test@remote.com']]]]], ['emails' => [], 'exact' => ['emails' => [['label' => 'test@remote.com', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'test@remote.com']]]]],
false, false,
true, false,
], ],
[ [
'test', 'test',
@ -160,7 +167,7 @@ class MailPluginTest extends TestCase {
true, true,
['emails' => [['label' => 'User @ Localhost (username@localhost)', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'username@localhost']]], 'exact' => ['emails' => []]], ['emails' => [['label' => 'User @ Localhost (username@localhost)', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'username@localhost']]], 'exact' => ['emails' => []]],
false, false,
true, false,
], ],
[ [
'test', 'test',
@ -183,7 +190,7 @@ class MailPluginTest extends TestCase {
false, false,
['emails' => [], 'exact' => ['emails' => []]], ['emails' => [], 'exact' => ['emails' => []]],
false, false,
true, false,
], ],
[ [
'test@remote.com', 'test@remote.com',
@ -206,7 +213,7 @@ class MailPluginTest extends TestCase {
true, true,
['emails' => [['label' => 'User @ Localhost (username@localhost)', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'username@localhost']]], 'exact' => ['emails' => [['label' => 'test@remote.com', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'test@remote.com']]]]], ['emails' => [['label' => 'User @ Localhost (username@localhost)', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'username@localhost']]], 'exact' => ['emails' => [['label' => 'test@remote.com', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'test@remote.com']]]]],
false, false,
true, false,
], ],
[ [
'test@remote.com', 'test@remote.com',
@ -229,7 +236,7 @@ class MailPluginTest extends TestCase {
false, false,
['emails' => [], 'exact' => ['emails' => [['label' => 'test@remote.com', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'test@remote.com']]]]], ['emails' => [], 'exact' => ['emails' => [['label' => 'test@remote.com', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'test@remote.com']]]]],
false, false,
true, false,
], ],
[ [
'username@localhost', 'username@localhost',
@ -252,7 +259,7 @@ class MailPluginTest extends TestCase {
true, true,
['emails' => [], 'exact' => ['emails' => [['label' => 'User @ Localhost (username@localhost)', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'username@localhost']]]]], ['emails' => [], 'exact' => ['emails' => [['label' => 'User @ Localhost (username@localhost)', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'username@localhost']]]]],
true, true,
true, false,
], ],
[ [
'username@localhost', 'username@localhost',
@ -275,7 +282,7 @@ class MailPluginTest extends TestCase {
false, false,
['emails' => [], 'exact' => ['emails' => [['label' => 'User @ Localhost (username@localhost)', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'username@localhost']]]]], ['emails' => [], 'exact' => ['emails' => [['label' => 'User @ Localhost (username@localhost)', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'username@localhost']]]]],
true, true,
true, false,
], ],
// contact with space // contact with space
[ [
@ -299,7 +306,7 @@ class MailPluginTest extends TestCase {
false, false,
['emails' => [], 'exact' => ['emails' => [['label' => 'User Name @ Localhost (user name@localhost)', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'user name@localhost']]]]], ['emails' => [], 'exact' => ['emails' => [['label' => 'User Name @ Localhost (user name@localhost)', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'user name@localhost']]]]],
true, true,
true, false,
], ],
// remote with space, no contact // remote with space, no contact
[ [
@ -323,7 +330,7 @@ class MailPluginTest extends TestCase {
false, false,
['emails' => [], 'exact' => ['emails' => []]], ['emails' => [], 'exact' => ['emails' => []]],
false, false,
true, false,
], ],
// Local user found by email // Local user found by email
[ [
@ -337,10 +344,96 @@ class MailPluginTest extends TestCase {
] ]
], ],
false, false,
['users' => [], 'exact' => ['users' => [['label' => 'User (test@example.com)','value' => ['shareType' => 0, 'shareWith' => 'test'],]]]], ['users' => [], 'exact' => ['users' => [['label' => 'User (test@example.com)','value' => ['shareType' => Share::SHARE_TYPE_USER, 'shareWith' => 'test'],]]]],
true, true,
false, false,
] ],
// Current local user found by email => no result
[
'test@example.com',
[
[
'FN' => 'User',
'EMAIL' => ['test@example.com'],
'CLOUD' => ['current@localhost'],
'isLocalSystemBook' => true,
]
],
true,
['exact' => []],
false,
false,
],
// Pagination and "more results" for user matches byyyyyyy emails
[
'test@example',
[
[
'FN' => 'User1',
'EMAIL' => ['test@example.com'],
'CLOUD' => ['test1@localhost'],
'isLocalSystemBook' => true,
],
[
'FN' => 'User2',
'EMAIL' => ['test@example.de'],
'CLOUD' => ['test2@localhost'],
'isLocalSystemBook' => true,
],
[
'FN' => 'User3',
'EMAIL' => ['test@example.org'],
'CLOUD' => ['test3@localhost'],
'isLocalSystemBook' => true,
],
[
'FN' => 'User4',
'EMAIL' => ['test@example.net'],
'CLOUD' => ['test4@localhost'],
'isLocalSystemBook' => true,
],
],
true,
['users' => [
['label' => 'User1 (test@example.com)', 'value' => ['shareType' => Share::SHARE_TYPE_USER, 'shareWith' => 'test1']],
['label' => 'User2 (test@example.de)', 'value' => ['shareType' => Share::SHARE_TYPE_USER, 'shareWith' => 'test2']],
], 'emails' => [], 'exact' => ['users' => [], 'emails' => []]],
false,
true,
],
// Pagination and "more results" for normal emails
[
'test@example',
[
[
'FN' => 'User1',
'EMAIL' => ['test@example.com'],
'CLOUD' => ['test1@localhost'],
],
[
'FN' => 'User2',
'EMAIL' => ['test@example.de'],
'CLOUD' => ['test2@localhost'],
],
[
'FN' => 'User3',
'EMAIL' => ['test@example.org'],
'CLOUD' => ['test3@localhost'],
],
[
'FN' => 'User4',
'EMAIL' => ['test@example.net'],
'CLOUD' => ['test4@localhost'],
],
],
true,
['emails' => [
['label' => 'User1 (test@example.com)', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'test@example.com']],
['label' => 'User2 (test@example.de)', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'test@example.de']],
], 'exact' => ['emails' => []]],
false,
true,
],
]; ];
} }
@ -422,7 +515,7 @@ class MailPluginTest extends TestCase {
], ],
['users' => [['label' => 'User (test@example.com)','value' => ['shareType' => 0, 'shareWith' => 'test'],]], 'emails' => [], 'exact' => ['emails' => [], 'users' => []]], ['users' => [['label' => 'User (test@example.com)','value' => ['shareType' => 0, 'shareWith' => 'test'],]], 'emails' => [], 'exact' => ['emails' => [], 'users' => []]],
false, false,
true, false,
[ [
"currentUser" => ["group1"], "currentUser" => ["group1"],
"User" => ["group1"] "User" => ["group1"]
@ -442,7 +535,7 @@ class MailPluginTest extends TestCase {
], ],
['emails'=> [], 'exact' => ['emails' => []]], ['emails'=> [], 'exact' => ['emails' => []]],
false, false,
true, false,
[ [
"currentUser" => ["group1"], "currentUser" => ["group1"],
"User" => ["group2"] "User" => ["group2"]
@ -462,7 +555,7 @@ class MailPluginTest extends TestCase {
], ],
['emails' => [], 'exact' => ['emails' => [['label' => 'test@example.com', 'value' => ['shareType' => 4,'shareWith' => 'test@example.com']]]]], ['emails' => [], 'exact' => ['emails' => [['label' => 'test@example.com', 'value' => ['shareType' => 4,'shareWith' => 'test@example.com']]]]],
false, false,
true, false,
[ [
"currentUser" => ["group1"], "currentUser" => ["group1"],
"User" => ["group2"] "User" => ["group2"]