|
|
|
|
@ -37,6 +37,7 @@ use OCP\IUser; |
|
|
|
|
use OCP\IUserManager; |
|
|
|
|
use OCP\IUserSession; |
|
|
|
|
use OCP\Share\IShare; |
|
|
|
|
use OCP\Mail\IMailer; |
|
|
|
|
use Test\TestCase; |
|
|
|
|
|
|
|
|
|
class MailPluginTest extends TestCase { |
|
|
|
|
@ -64,6 +65,9 @@ class MailPluginTest extends TestCase { |
|
|
|
|
/** @var IUserSession|\PHPUnit\Framework\MockObject\MockObject */ |
|
|
|
|
protected $userSession; |
|
|
|
|
|
|
|
|
|
/** @var IMailer|\PHPUnit\Framework\MockObject\MockObject */ |
|
|
|
|
protected $mailer; |
|
|
|
|
|
|
|
|
|
protected function setUp(): void { |
|
|
|
|
parent::setUp(); |
|
|
|
|
|
|
|
|
|
@ -72,6 +76,7 @@ class MailPluginTest extends TestCase { |
|
|
|
|
$this->groupManager = $this->createMock(IGroupManager::class); |
|
|
|
|
$this->knownUserService = $this->createMock(KnownUserService::class); |
|
|
|
|
$this->userSession = $this->createMock(IUserSession::class); |
|
|
|
|
$this->mailer = $this->createMock(IMailer::class); |
|
|
|
|
$this->cloudIdManager = new CloudIdManager($this->contactsManager, $this->createMock(IURLGenerator::class), $this->createMock(IUserManager::class)); |
|
|
|
|
|
|
|
|
|
$this->searchResult = new SearchResult(); |
|
|
|
|
@ -84,7 +89,8 @@ class MailPluginTest extends TestCase { |
|
|
|
|
$this->config, |
|
|
|
|
$this->groupManager, |
|
|
|
|
$this->knownUserService, |
|
|
|
|
$this->userSession |
|
|
|
|
$this->userSession, |
|
|
|
|
$this->mailer |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -97,7 +103,7 @@ class MailPluginTest extends TestCase { |
|
|
|
|
* @param array $expected |
|
|
|
|
* @param bool $reachedEnd |
|
|
|
|
*/ |
|
|
|
|
public function testSearch($searchTerm, $contacts, $shareeEnumeration, $expected, $exactIdMatch, $reachedEnd) { |
|
|
|
|
public function testSearch($searchTerm, $contacts, $shareeEnumeration, $expected, $exactIdMatch, $reachedEnd, $validEmail) { |
|
|
|
|
$this->config->expects($this->any()) |
|
|
|
|
->method('getAppValue') |
|
|
|
|
->willReturnCallback( |
|
|
|
|
@ -117,6 +123,9 @@ class MailPluginTest extends TestCase { |
|
|
|
|
$this->userSession->method('getUser') |
|
|
|
|
->willReturn($currentUser); |
|
|
|
|
|
|
|
|
|
$this->mailer->method('validateMailAddress') |
|
|
|
|
->willReturn($validEmail); |
|
|
|
|
|
|
|
|
|
$this->contactsManager->expects($this->any()) |
|
|
|
|
->method('search') |
|
|
|
|
->willReturnCallback(function ($search, $searchAttributes) use ($searchTerm, $contacts) { |
|
|
|
|
@ -137,9 +146,9 @@ class MailPluginTest extends TestCase { |
|
|
|
|
public function dataGetEmail() { |
|
|
|
|
return [ |
|
|
|
|
// data set 0 |
|
|
|
|
['test', [], true, ['emails' => [], 'exact' => ['emails' => []]], false, false], |
|
|
|
|
['test', [], true, ['emails' => [], 'exact' => ['emails' => []]], false, false, false], |
|
|
|
|
// data set 1 |
|
|
|
|
['test', [], false, ['emails' => [], 'exact' => ['emails' => []]], false, false], |
|
|
|
|
['test', [], false, ['emails' => [], 'exact' => ['emails' => []]], false, false, false], |
|
|
|
|
// data set 2 |
|
|
|
|
[ |
|
|
|
|
'test@remote.com', |
|
|
|
|
@ -148,6 +157,7 @@ class MailPluginTest extends TestCase { |
|
|
|
|
['emails' => [], 'exact' => ['emails' => [['uuid' => 'test@remote.com', 'label' => 'test@remote.com', 'value' => ['shareType' => IShare::TYPE_EMAIL, 'shareWith' => 'test@remote.com']]]]], |
|
|
|
|
false, |
|
|
|
|
false, |
|
|
|
|
true, |
|
|
|
|
], |
|
|
|
|
// data set 3 |
|
|
|
|
[ // no valid email address |
|
|
|
|
@ -157,6 +167,7 @@ class MailPluginTest extends TestCase { |
|
|
|
|
['emails' => [], 'exact' => ['emails' => []]], |
|
|
|
|
false, |
|
|
|
|
false, |
|
|
|
|
false, |
|
|
|
|
], |
|
|
|
|
// data set 4 |
|
|
|
|
[ |
|
|
|
|
@ -166,6 +177,7 @@ class MailPluginTest extends TestCase { |
|
|
|
|
['emails' => [], 'exact' => ['emails' => [['uuid' => 'test@remote.com', 'label' => 'test@remote.com', 'value' => ['shareType' => IShare::TYPE_EMAIL, 'shareWith' => 'test@remote.com']]]]], |
|
|
|
|
false, |
|
|
|
|
false, |
|
|
|
|
true, |
|
|
|
|
], |
|
|
|
|
// data set 5 |
|
|
|
|
[ |
|
|
|
|
@ -193,6 +205,7 @@ class MailPluginTest extends TestCase { |
|
|
|
|
['emails' => [['uuid' => 'uid1', 'name' => 'User @ Localhost', 'type' => '', 'label' => 'User @ Localhost (username@localhost)', 'value' => ['shareType' => IShare::TYPE_EMAIL, 'shareWith' => 'username@localhost']]], 'exact' => ['emails' => []]], |
|
|
|
|
false, |
|
|
|
|
false, |
|
|
|
|
false, |
|
|
|
|
], |
|
|
|
|
// data set 6 |
|
|
|
|
[ |
|
|
|
|
@ -221,6 +234,7 @@ class MailPluginTest extends TestCase { |
|
|
|
|
['emails' => [], 'exact' => ['emails' => []]], |
|
|
|
|
false, |
|
|
|
|
false, |
|
|
|
|
false, |
|
|
|
|
], |
|
|
|
|
// data set 7 |
|
|
|
|
[ |
|
|
|
|
@ -248,6 +262,7 @@ class MailPluginTest extends TestCase { |
|
|
|
|
['emails' => [['uuid' => 'uid1', 'name' => 'User @ Localhost', 'type' => '', 'label' => 'User @ Localhost (username@localhost)', 'value' => ['shareType' => IShare::TYPE_EMAIL, 'shareWith' => 'username@localhost']]], 'exact' => ['emails' => [['label' => 'test@remote.com', 'uuid' => 'test@remote.com', 'value' => ['shareType' => IShare::TYPE_EMAIL, 'shareWith' => 'test@remote.com']]]]], |
|
|
|
|
false, |
|
|
|
|
false, |
|
|
|
|
true, |
|
|
|
|
], |
|
|
|
|
// data set 8 |
|
|
|
|
[ |
|
|
|
|
@ -276,6 +291,7 @@ class MailPluginTest extends TestCase { |
|
|
|
|
['emails' => [], 'exact' => ['emails' => [['label' => 'test@remote.com', 'uuid' => 'test@remote.com', 'value' => ['shareType' => IShare::TYPE_EMAIL, 'shareWith' => 'test@remote.com']]]]], |
|
|
|
|
false, |
|
|
|
|
false, |
|
|
|
|
true, |
|
|
|
|
], |
|
|
|
|
// data set 9 |
|
|
|
|
[ |
|
|
|
|
@ -303,6 +319,7 @@ class MailPluginTest extends TestCase { |
|
|
|
|
['emails' => [], 'exact' => ['emails' => [['name' => 'User @ Localhost', 'uuid' => 'uid1', 'type' => '', 'label' => 'User @ Localhost (username@localhost)', 'value' => ['shareType' => IShare::TYPE_EMAIL, 'shareWith' => 'username@localhost']]]]], |
|
|
|
|
true, |
|
|
|
|
false, |
|
|
|
|
false, |
|
|
|
|
], |
|
|
|
|
// data set 10 |
|
|
|
|
[ |
|
|
|
|
@ -330,6 +347,7 @@ class MailPluginTest extends TestCase { |
|
|
|
|
['emails' => [], 'exact' => ['emails' => [['name' => 'User @ Localhost', 'uuid' => 'uid1', 'type' => '', 'label' => 'User @ Localhost (username@localhost)', 'value' => ['shareType' => IShare::TYPE_EMAIL, 'shareWith' => 'username@localhost']]]]], |
|
|
|
|
true, |
|
|
|
|
false, |
|
|
|
|
false, |
|
|
|
|
], |
|
|
|
|
// data set 11 |
|
|
|
|
// contact with space |
|
|
|
|
@ -358,6 +376,7 @@ class MailPluginTest extends TestCase { |
|
|
|
|
['emails' => [], 'exact' => ['emails' => [['name' => 'User Name @ Localhost', 'uuid' => 'uid1', 'type' => '', 'label' => 'User Name @ Localhost (user name@localhost)', 'value' => ['shareType' => IShare::TYPE_EMAIL, 'shareWith' => 'user name@localhost']]]]], |
|
|
|
|
true, |
|
|
|
|
false, |
|
|
|
|
false, |
|
|
|
|
], |
|
|
|
|
// data set 12 |
|
|
|
|
// remote with space, no contact |
|
|
|
|
@ -387,6 +406,7 @@ class MailPluginTest extends TestCase { |
|
|
|
|
['emails' => [], 'exact' => ['emails' => []]], |
|
|
|
|
false, |
|
|
|
|
false, |
|
|
|
|
false, |
|
|
|
|
], |
|
|
|
|
// data set 13 |
|
|
|
|
// Local user found by email |
|
|
|
|
@ -405,6 +425,7 @@ class MailPluginTest extends TestCase { |
|
|
|
|
['users' => [], 'exact' => ['users' => [['uuid' => 'uid1', 'name' => 'User', 'label' => 'User (test@example.com)','value' => ['shareType' => IShare::TYPE_USER, 'shareWith' => 'test'], 'shareWithDisplayNameUnique' => 'test@example.com']]]], |
|
|
|
|
true, |
|
|
|
|
false, |
|
|
|
|
true, |
|
|
|
|
], |
|
|
|
|
// data set 14 |
|
|
|
|
// Current local user found by email => no result |
|
|
|
|
@ -423,6 +444,7 @@ class MailPluginTest extends TestCase { |
|
|
|
|
['exact' => []], |
|
|
|
|
false, |
|
|
|
|
false, |
|
|
|
|
true, |
|
|
|
|
], |
|
|
|
|
// data set 15 |
|
|
|
|
// Pagination and "more results" for user matches byyyyyyy emails |
|
|
|
|
@ -465,6 +487,7 @@ class MailPluginTest extends TestCase { |
|
|
|
|
], 'emails' => [], 'exact' => ['users' => [], 'emails' => []]], |
|
|
|
|
false, |
|
|
|
|
true, |
|
|
|
|
false, |
|
|
|
|
], |
|
|
|
|
// data set 16 |
|
|
|
|
// Pagination and "more results" for normal emails |
|
|
|
|
@ -503,6 +526,7 @@ class MailPluginTest extends TestCase { |
|
|
|
|
], 'exact' => ['emails' => []]], |
|
|
|
|
false, |
|
|
|
|
true, |
|
|
|
|
false, |
|
|
|
|
], |
|
|
|
|
// data set 17 |
|
|
|
|
// multiple email addresses with type |
|
|
|
|
@ -536,6 +560,18 @@ class MailPluginTest extends TestCase { |
|
|
|
|
]]], |
|
|
|
|
false, |
|
|
|
|
false, |
|
|
|
|
false, |
|
|
|
|
], |
|
|
|
|
// data set 18 |
|
|
|
|
// idn email |
|
|
|
|
[ |
|
|
|
|
'test@lölölölölölölöl.com', |
|
|
|
|
[], |
|
|
|
|
true, |
|
|
|
|
['emails' => [], 'exact' => ['emails' => [['uuid' => 'test@lölölölölölölöl.com', 'label' => 'test@lölölölölölölöl.com', 'value' => ['shareType' => IShare::TYPE_EMAIL, 'shareWith' => 'test@lölölölölölölöl.com']]]]], |
|
|
|
|
false, |
|
|
|
|
false, |
|
|
|
|
true, |
|
|
|
|
], |
|
|
|
|
]; |
|
|
|
|
} |
|
|
|
|
@ -550,7 +586,7 @@ class MailPluginTest extends TestCase { |
|
|
|
|
* @param bool $reachedEnd |
|
|
|
|
* @param array groups |
|
|
|
|
*/ |
|
|
|
|
public function testSearchGroupsOnly($searchTerm, $contacts, $expected, $exactIdMatch, $reachedEnd, $userToGroupMapping) { |
|
|
|
|
public function testSearchGroupsOnly($searchTerm, $contacts, $expected, $exactIdMatch, $reachedEnd, $userToGroupMapping, $validEmail) { |
|
|
|
|
$this->config->expects($this->any()) |
|
|
|
|
->method('getAppValue') |
|
|
|
|
->willReturnCallback( |
|
|
|
|
@ -573,6 +609,9 @@ class MailPluginTest extends TestCase { |
|
|
|
|
->method('getUID') |
|
|
|
|
->willReturn('currentUser'); |
|
|
|
|
|
|
|
|
|
$this->mailer->method('validateMailAddress') |
|
|
|
|
->willReturn($validEmail); |
|
|
|
|
|
|
|
|
|
$this->contactsManager->expects($this->any()) |
|
|
|
|
->method('search') |
|
|
|
|
->willReturnCallback(function ($search, $searchAttributes) use ($searchTerm, $contacts) { |
|
|
|
|
@ -626,7 +665,8 @@ class MailPluginTest extends TestCase { |
|
|
|
|
[ |
|
|
|
|
"currentUser" => ["group1"], |
|
|
|
|
"User" => ["group1"] |
|
|
|
|
] |
|
|
|
|
], |
|
|
|
|
false, |
|
|
|
|
], |
|
|
|
|
// The user `User` cannot share with the current user |
|
|
|
|
[ |
|
|
|
|
@ -646,7 +686,8 @@ class MailPluginTest extends TestCase { |
|
|
|
|
[ |
|
|
|
|
"currentUser" => ["group1"], |
|
|
|
|
"User" => ["group2"] |
|
|
|
|
] |
|
|
|
|
], |
|
|
|
|
false, |
|
|
|
|
], |
|
|
|
|
// The user `User` cannot share with the current user, but there is an exact match on the e-mail address -> share by e-mail |
|
|
|
|
[ |
|
|
|
|
@ -666,7 +707,8 @@ class MailPluginTest extends TestCase { |
|
|
|
|
[ |
|
|
|
|
"currentUser" => ["group1"], |
|
|
|
|
"User" => ["group2"] |
|
|
|
|
] |
|
|
|
|
], |
|
|
|
|
true, |
|
|
|
|
] |
|
|
|
|
]; |
|
|
|
|
} |
|
|
|
|
|