Changeset View
Changeset View
Standalone View
Standalone View
src/tests/Feature/SharedFolderTest.php
Show First 20 Lines • Show All 171 Lines • ▼ Show 20 Lines | public function testCreate(): void | ||||
$folder->name = 'Reśo'; | $folder->name = 'Reśo'; | ||||
$folder->domainName = 'kolabnow.com'; | $folder->domainName = 'kolabnow.com'; | ||||
$folder->save(); | $folder->save(); | ||||
$this->assertMatchesRegularExpression('/^[0-9]{1,20}$/', $folder->id); | $this->assertMatchesRegularExpression('/^[0-9]{1,20}$/', $folder->id); | ||||
$this->assertMatchesRegularExpression('/^mail-[0-9]{1,20}@kolabnow\.com$/', $folder->email); | $this->assertMatchesRegularExpression('/^mail-[0-9]{1,20}@kolabnow\.com$/', $folder->email); | ||||
$this->assertSame('Reśo', $folder->name); | $this->assertSame('Reśo', $folder->name); | ||||
$this->assertTrue($folder->isNew()); | $this->assertTrue($folder->isNew()); | ||||
$this->assertTrue($folder->isActive()); | $this->assertFalse($folder->isActive()); | ||||
$this->assertFalse($folder->isDeleted()); | $this->assertFalse($folder->isDeleted()); | ||||
$this->assertFalse($folder->isLdapReady()); | $this->assertFalse($folder->isLdapReady()); | ||||
$this->assertFalse($folder->isImapReady()); | $this->assertFalse($folder->isImapReady()); | ||||
$settings = $folder->settings()->get(); | $settings = $folder->settings()->get(); | ||||
$this->assertCount(1, $settings); | $this->assertCount(1, $settings); | ||||
$this->assertSame('folder', $settings[0]->key); | $this->assertSame('folder', $settings[0]->key); | ||||
$this->assertSame('shared/Reśo@kolabnow.com', $settings[0]->value); | $this->assertSame('shared/Reśo@kolabnow.com', $settings[0]->value); | ||||
Queue::assertPushed( | Queue::assertPushed( | ||||
\App\Jobs\SharedFolder\CreateJob::class, | \App\Jobs\SharedFolder\CreateJob::class, | ||||
function ($job) use ($folder) { | function ($job) use ($folder) { | ||||
$folderEmail = TestCase::getObjectProperty($job, 'folderEmail'); | $folderEmail = TestCase::getObjectProperty($job, 'folderEmail'); | ||||
$folderId = TestCase::getObjectProperty($job, 'folderId'); | $folderId = TestCase::getObjectProperty($job, 'folderId'); | ||||
return $folderEmail === $folder->email | return $folderEmail === $folder->email | ||||
&& $folderId === $folder->id; | && $folderId === $folder->id; | ||||
} | } | ||||
); | ); | ||||
Queue::assertPushedWithChain( | |||||
\App\Jobs\SharedFolder\CreateJob::class, | |||||
[ | |||||
\App\Jobs\SharedFolder\VerifyJob::class, | |||||
] | |||||
); | |||||
} | } | ||||
/** | /** | ||||
* Test a shared folder deletion and force-deletion | * Test a shared folder deletion and force-deletion | ||||
*/ | */ | ||||
public function testDelete(): void | public function testDelete(): void | ||||
{ | { | ||||
Queue::fake(); | Queue::fake(); | ||||
▲ Show 20 Lines • Show All 69 Lines • ▼ Show 20 Lines | public function testSettings(): void | ||||
$folder->setSetting('unknown', 'test'); | $folder->setSetting('unknown', 'test'); | ||||
Queue::assertPushed(\App\Jobs\SharedFolder\UpdateJob::class, 0); | Queue::assertPushed(\App\Jobs\SharedFolder\UpdateJob::class, 0); | ||||
// Add a setting that is synced to LDAP | // Add a setting that is synced to LDAP | ||||
$folder->setSetting('acl', 'test'); | $folder->setSetting('acl', 'test'); | ||||
Queue::assertPushed(\App\Jobs\SharedFolder\UpdateJob::class, 1); | Queue::assertPushed(\App\Jobs\SharedFolder\UpdateJob::class, 1); | ||||
Queue::assertPushed( | |||||
\App\Jobs\SharedFolder\UpdateJob::class, | |||||
function ($job) use ($folder) { | |||||
return $folder->id === TestCase::getObjectProperty($job, 'folderId') | |||||
&& ['acl' => null] === TestCase::getObjectProperty($job, 'properties'); | |||||
} | |||||
); | |||||
// Note: We test both current folder as well as fresh folder object | // Note: We test both current folder as well as fresh folder object | ||||
// to make sure cache works as expected | // to make sure cache works as expected | ||||
$this->assertSame('test', $folder->getSetting('unknown')); | $this->assertSame('test', $folder->getSetting('unknown')); | ||||
$this->assertSame('test', $folder->fresh()->getSetting('acl')); | $this->assertSame('test', $folder->fresh()->getSetting('acl')); | ||||
Queue::fake(); | Queue::fake(); | ||||
// Update a setting | // Update a setting | ||||
$folder->setSetting('unknown', 'test1'); | $folder->setSetting('unknown', 'test1'); | ||||
Queue::assertPushed(\App\Jobs\SharedFolder\UpdateJob::class, 0); | Queue::assertPushed(\App\Jobs\SharedFolder\UpdateJob::class, 0); | ||||
// Update a setting that is synced to LDAP | // Update a setting that is synced to LDAP | ||||
$folder->setSetting('acl', 'test1'); | $folder->setSetting('acl', 'test1'); | ||||
Queue::assertPushed(\App\Jobs\SharedFolder\UpdateJob::class, 1); | Queue::assertPushed(\App\Jobs\SharedFolder\UpdateJob::class, 1); | ||||
Queue::assertPushed( | |||||
\App\Jobs\SharedFolder\UpdateJob::class, | |||||
function ($job) use ($folder) { | |||||
return $folder->id === TestCase::getObjectProperty($job, 'folderId') | |||||
&& ['acl' => 'test'] === TestCase::getObjectProperty($job, 'properties'); | |||||
} | |||||
); | |||||
$this->assertSame('test1', $folder->getSetting('unknown')); | $this->assertSame('test1', $folder->getSetting('unknown')); | ||||
$this->assertSame('test1', $folder->fresh()->getSetting('acl')); | $this->assertSame('test1', $folder->fresh()->getSetting('acl')); | ||||
Queue::fake(); | Queue::fake(); | ||||
// Delete a setting (null) | // Delete a setting (null) | ||||
$folder->setSetting('unknown', null); | $folder->setSetting('unknown', null); | ||||
Queue::assertPushed(\App\Jobs\SharedFolder\UpdateJob::class, 0); | Queue::assertPushed(\App\Jobs\SharedFolder\UpdateJob::class, 0); | ||||
// Delete a setting that is synced to LDAP | // Delete a setting that is synced to LDAP | ||||
$folder->setSetting('acl', null); | $folder->setSetting('acl', null); | ||||
Queue::assertPushed(\App\Jobs\SharedFolder\UpdateJob::class, 1); | Queue::assertPushed(\App\Jobs\SharedFolder\UpdateJob::class, 1); | ||||
Queue::assertPushed( | |||||
\App\Jobs\SharedFolder\UpdateJob::class, | |||||
function ($job) use ($folder) { | |||||
return $folder->id === TestCase::getObjectProperty($job, 'folderId') | |||||
&& ['acl' => 'test1'] === TestCase::getObjectProperty($job, 'properties'); | |||||
} | |||||
); | |||||
$this->assertSame(null, $folder->getSetting('unknown')); | $this->assertSame(null, $folder->getSetting('unknown')); | ||||
$this->assertSame(null, $folder->fresh()->getSetting('acl')); | $this->assertSame(null, $folder->fresh()->getSetting('acl')); | ||||
} | } | ||||
/** | /** | ||||
* Test updating a shared folder | * Test updating a shared folder | ||||
*/ | */ | ||||
Show All 27 Lines |