Changeset View
Changeset View
Standalone View
Standalone View
src/tests/Feature/Backends/IMAPTest.php
Show First 20 Lines • Show All 101 Lines • ▼ Show 20 Lines | public function testUsers(): void | ||||
] | ] | ||||
] | ] | ||||
]; | ]; | ||||
// Create the mailbox | // Create the mailbox | ||||
$result = IMAP::createUser($user); | $result = IMAP::createUser($user); | ||||
$this->assertTrue($result); | $this->assertTrue($result); | ||||
$this->assertTrue(IMAP::verifyAccount($user->email)); | $this->assertTrue(IMAP::verifyAccount($user->email)); | ||||
$this->assertTrue(IMAP::verifyDefaultFolders($user->email)); | |||||
$imap = $this->getImap(); | $imap = $this->getImap(); | ||||
$quota = $imap->getQuota('user/' . $user->email); | $quota = $imap->getQuota('user/' . $user->email); | ||||
$this->assertSame($expectedQuota, $quota['all']); | $this->assertSame($expectedQuota, $quota['all']); | ||||
// Update the mailbox (increase quota) | // Update the mailbox (increase quota) | ||||
$user->assignSku($storage, 1, $user->wallets->first()); | $user->assignSku($storage, 1, $user->wallets->first()); | ||||
$expectedQuota['user/' . $user->email]['storage']['total'] = 1048576 * 2; | $expectedQuota['user/' . $user->email]['storage']['total'] = 1048576 * 2; | ||||
$result = IMAP::updateUser($user); | $result = IMAP::updateUser($user); | ||||
$this->assertTrue($result); | $this->assertTrue($result); | ||||
$quota = $imap->getQuota('user/' . $user->email); | $quota = $imap->getQuota('user/' . $user->email); | ||||
$this->assertSame($expectedQuota, $quota['all']); | $this->assertSame($expectedQuota, $quota['all']); | ||||
// Delete the mailbox | // Delete the mailbox | ||||
$result = IMAP::deleteUser($user); | $result = IMAP::deleteUser($user); | ||||
$this->assertTrue($result); | $this->assertTrue($result); | ||||
$result = IMAP::verifyAccount($user->email); | $result = IMAP::verifyAccount($user->email); | ||||
$this->assertFalse($result); | $this->assertFalse($result); | ||||
$this->assertFalse(IMAP::verifyDefaultFolders($user->email)); | |||||
} | } | ||||
/** | /** | ||||
* Test creating/updating/deleting a resource | * Test creating/updating/deleting a resource | ||||
* | * | ||||
* @group imap | * @group imap | ||||
*/ | */ | ||||
public function testResources(): void | public function testResources(): void | ||||
{ | { | ||||
$this->resource = $resource = $this->getTestResource( | $this->resource = $resource = $this->getTestResource( | ||||
'test-resource-' . time() . '@kolab.org', | 'test-resource-' . time() . '@kolab.org', | ||||
['name' => 'Resource ©' . time()] | ['name' => 'Resource ©' . time()] | ||||
); | ); | ||||
$resource->setSetting('invitation_policy', 'manual:john@kolab.org'); | $resource->setSetting('invitation_policy', 'manual:john@kolab.org'); | ||||
// Create the resource | // Create the resource | ||||
$this->assertTrue(IMAP::createResource($resource)); | $this->assertTrue(IMAP::createResource($resource)); | ||||
$this->assertTrue(IMAP::verifySharedFolder($imapFolder = $resource->getSetting('folder'))); | $this->assertTrue(IMAP::verifySharedFolder($imapFolder = $resource->getSetting('folder'))); | ||||
$imap = $this->getImap(); | $imap = $this->getImap(); | ||||
$expectedAcl = ['john@kolab.org' => str_split('lrswipkxtecdn')]; | $expectedAcl = ['john@kolab.org' => str_split('lrswipkxtecdn')]; | ||||
$this->assertSame($expectedAcl, $imap->getACL(IMAP::toUTF7($imapFolder))); | $acl = $imap->getACL(IMAP::toUTF7($imapFolder)); | ||||
$this->assertTrue(is_array($acl) && isset($acl['john@kolab.org'])); | |||||
$this->assertSame($expectedAcl['john@kolab.org'], $acl['john@kolab.org']); | |||||
// Update the resource (rename) | // Update the resource (rename) | ||||
$resource->name = 'Resource1 ©' . time(); | $resource->name = 'Resource1 ©' . time(); | ||||
$resource->save(); | $resource->save(); | ||||
$newImapFolder = $resource->getSetting('folder'); | $newImapFolder = $resource->getSetting('folder'); | ||||
$this->assertTrue(IMAP::updateResource($resource, ['folder' => $imapFolder])); | $this->assertTrue(IMAP::updateResource($resource, ['folder' => $imapFolder])); | ||||
$this->assertTrue($imapFolder != $newImapFolder); | $this->assertTrue($imapFolder != $newImapFolder); | ||||
$this->assertTrue(IMAP::verifySharedFolder($newImapFolder)); | $this->assertTrue(IMAP::verifySharedFolder($newImapFolder)); | ||||
$this->assertSame($expectedAcl, $imap->getACL(IMAP::toUTF7($newImapFolder))); | $acl = $imap->getACL(IMAP::toUTF7($newImapFolder)); | ||||
$this->assertTrue(is_array($acl) && isset($acl['john@kolab.org'])); | |||||
$this->assertSame($expectedAcl['john@kolab.org'], $acl['john@kolab.org']); | |||||
// Update the resource (acl change) | // Update the resource (acl change) | ||||
$resource->setSetting('invitation_policy', 'accept'); | $resource->setSetting('invitation_policy', 'accept'); | ||||
$this->assertTrue(IMAP::updateResource($resource)); | $this->assertTrue(IMAP::updateResource($resource)); | ||||
$this->assertSame([], $imap->getACL(IMAP::toUTF7($newImapFolder))); | $this->assertSame([], $imap->getACL(IMAP::toUTF7($newImapFolder))); | ||||
// Delete the resource | // Delete the resource | ||||
$this->assertTrue(IMAP::deleteResource($resource)); | $this->assertTrue(IMAP::deleteResource($resource)); | ||||
Show All 19 Lines | public function testSharedFolders(): void | ||||
$this->assertTrue(IMAP::verifySharedFolder($imapFolder = $folder->getSetting('folder'))); | $this->assertTrue(IMAP::verifySharedFolder($imapFolder = $folder->getSetting('folder'))); | ||||
$imap = $this->getImap(); | $imap = $this->getImap(); | ||||
$expectedAcl = [ | $expectedAcl = [ | ||||
'john@kolab.org' => str_split('lrswipkxtecdn'), | 'john@kolab.org' => str_split('lrswipkxtecdn'), | ||||
'jack@kolab.org' => str_split('lrs') | 'jack@kolab.org' => str_split('lrs') | ||||
]; | ]; | ||||
$this->assertSame($expectedAcl, $imap->getACL(IMAP::toUTF7($imapFolder))); | $acl = $imap->getACL(IMAP::toUTF7($imapFolder)); | ||||
$this->assertTrue(is_array($acl) && isset($acl['john@kolab.org'])); | |||||
$this->assertSame($expectedAcl['john@kolab.org'], $acl['john@kolab.org']); | |||||
$this->assertTrue(is_array($acl) && isset($acl['jack@kolab.org'])); | |||||
$this->assertSame($expectedAcl['jack@kolab.org'], $acl['jack@kolab.org']); | |||||
// Update shared folder (acl) | // Update shared folder (acl) | ||||
$folder->setSetting('acl', json_encode(['jack@kolab.org, read-only'])); | $folder->setSetting('acl', json_encode(['jack@kolab.org, read-only'])); | ||||
$this->assertTrue(IMAP::updateSharedFolder($folder)); | $this->assertTrue(IMAP::updateSharedFolder($folder)); | ||||
$expectedAcl = ['jack@kolab.org' => str_split('lrs')]; | $expectedAcl = ['jack@kolab.org' => str_split('lrs')]; | ||||
$this->assertSame($expectedAcl, $imap->getACL(IMAP::toUTF7($imapFolder))); | $acl = $imap->getACL(IMAP::toUTF7($imapFolder)); | ||||
$this->assertTrue(is_array($acl) && isset($acl['jack@kolab.org'])); | |||||
$this->assertSame($expectedAcl['jack@kolab.org'], $acl['jack@kolab.org']); | |||||
$this->assertTrue(!isset($acl['john@kolab.org'])); | |||||
// Update the shared folder (rename) | // Update the shared folder (rename) | ||||
$folder->name = 'SharedFolder1 ©' . time(); | $folder->name = 'SharedFolder1 ©' . time(); | ||||
$folder->save(); | $folder->save(); | ||||
$newImapFolder = $folder->getSetting('folder'); | $newImapFolder = $folder->getSetting('folder'); | ||||
$this->assertTrue(IMAP::updateSharedFolder($folder, ['folder' => $imapFolder])); | $this->assertTrue(IMAP::updateSharedFolder($folder, ['folder' => $imapFolder])); | ||||
$this->assertTrue($imapFolder != $newImapFolder); | $this->assertTrue($imapFolder != $newImapFolder); | ||||
$this->assertTrue(IMAP::verifySharedFolder($newImapFolder)); | $this->assertTrue(IMAP::verifySharedFolder($newImapFolder)); | ||||
$this->assertSame($expectedAcl, $imap->getACL(IMAP::toUTF7($newImapFolder))); | |||||
$acl = $imap->getACL(IMAP::toUTF7($newImapFolder)); | |||||
$this->assertTrue(is_array($acl) && isset($acl['jack@kolab.org'])); | |||||
$this->assertSame($expectedAcl['jack@kolab.org'], $acl['jack@kolab.org']); | |||||
// Delete the shared folder | // Delete the shared folder | ||||
$this->assertTrue(IMAP::deleteSharedFolder($folder)); | $this->assertTrue(IMAP::deleteSharedFolder($folder)); | ||||
$this->assertFalse(IMAP::verifySharedFolder($newImapFolder)); | $this->assertFalse(IMAP::verifySharedFolder($newImapFolder)); | ||||
} | } | ||||
/** | /** | ||||
* Test verifying IMAP account existence (existing account) | * Test verifying IMAP account existence (existing account) | ||||
▲ Show 20 Lines • Show All 50 Lines • Show Last 20 Lines |