Changeset View
Changeset View
Standalone View
Standalone View
src/tests/Feature/ResourceTest.php
Show First 20 Lines • Show All 107 Lines • ▼ Show 20 Lines | public function testCreate(): void | ||||
$resource->name = 'Reśo'; | $resource->name = 'Reśo'; | ||||
$resource->domainName = 'kolabnow.com'; | $resource->domainName = 'kolabnow.com'; | ||||
$resource->save(); | $resource->save(); | ||||
$this->assertMatchesRegularExpression('/^[0-9]{1,20}$/', $resource->id); | $this->assertMatchesRegularExpression('/^[0-9]{1,20}$/', $resource->id); | ||||
$this->assertMatchesRegularExpression('/^resource-[0-9]{1,20}@kolabnow\.com$/', $resource->email); | $this->assertMatchesRegularExpression('/^resource-[0-9]{1,20}@kolabnow\.com$/', $resource->email); | ||||
$this->assertSame('Reśo', $resource->name); | $this->assertSame('Reśo', $resource->name); | ||||
$this->assertTrue($resource->isNew()); | $this->assertTrue($resource->isNew()); | ||||
$this->assertTrue($resource->isActive()); | $this->assertFalse($resource->isActive()); | ||||
$this->assertFalse($resource->isDeleted()); | $this->assertFalse($resource->isDeleted()); | ||||
$this->assertFalse($resource->isLdapReady()); | $this->assertFalse($resource->isLdapReady()); | ||||
$this->assertFalse($resource->isImapReady()); | $this->assertFalse($resource->isImapReady()); | ||||
$settings = $resource->settings()->get(); | $settings = $resource->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/Resources/Reśo@kolabnow.com', $settings[0]->value); | $this->assertSame('shared/Resources/Reśo@kolabnow.com', $settings[0]->value); | ||||
Queue::assertPushed( | Queue::assertPushed( | ||||
\App\Jobs\Resource\CreateJob::class, | \App\Jobs\Resource\CreateJob::class, | ||||
function ($job) use ($resource) { | function ($job) use ($resource) { | ||||
$resourceEmail = TestCase::getObjectProperty($job, 'resourceEmail'); | $resourceEmail = TestCase::getObjectProperty($job, 'resourceEmail'); | ||||
$resourceId = TestCase::getObjectProperty($job, 'resourceId'); | $resourceId = TestCase::getObjectProperty($job, 'resourceId'); | ||||
return $resourceEmail === $resource->email | return $resourceEmail === $resource->email | ||||
&& $resourceId === $resource->id; | && $resourceId === $resource->id; | ||||
} | } | ||||
); | ); | ||||
Queue::assertPushedWithChain( | |||||
\App\Jobs\Resource\CreateJob::class, | |||||
[ | |||||
\App\Jobs\Resource\VerifyJob::class, | |||||
] | |||||
); | |||||
} | } | ||||
/** | /** | ||||
* Test resource deletion and force-deletion | * Test resource 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 | ||||
$resource->setSetting('unknown', 'test'); | $resource->setSetting('unknown', 'test'); | ||||
Queue::assertPushed(\App\Jobs\Resource\UpdateJob::class, 0); | Queue::assertPushed(\App\Jobs\Resource\UpdateJob::class, 0); | ||||
// Add a setting that is synced to LDAP | // Add a setting that is synced to LDAP | ||||
$resource->setSetting('invitation_policy', 'accept'); | $resource->setSetting('invitation_policy', 'accept'); | ||||
Queue::assertPushed(\App\Jobs\Resource\UpdateJob::class, 1); | Queue::assertPushed(\App\Jobs\Resource\UpdateJob::class, 1); | ||||
Queue::assertPushed( | |||||
\App\Jobs\Resource\UpdateJob::class, | |||||
function ($job) use ($resource) { | |||||
return $resource->id === TestCase::getObjectProperty($job, 'resourceId') | |||||
&& ['invitation_policy' => null] === TestCase::getObjectProperty($job, 'properties'); | |||||
} | |||||
); | |||||
// Note: We test both current resource as well as fresh resource object | // Note: We test both current resource as well as fresh resource object | ||||
// to make sure cache works as expected | // to make sure cache works as expected | ||||
$this->assertSame('test', $resource->getSetting('unknown')); | $this->assertSame('test', $resource->getSetting('unknown')); | ||||
$this->assertSame('accept', $resource->fresh()->getSetting('invitation_policy')); | $this->assertSame('accept', $resource->fresh()->getSetting('invitation_policy')); | ||||
Queue::fake(); | Queue::fake(); | ||||
// Update a setting | // Update a setting | ||||
$resource->setSetting('unknown', 'test1'); | $resource->setSetting('unknown', 'test1'); | ||||
Queue::assertPushed(\App\Jobs\Resource\UpdateJob::class, 0); | Queue::assertPushed(\App\Jobs\Resource\UpdateJob::class, 0); | ||||
// Update a setting that is synced to LDAP | // Update a setting that is synced to LDAP | ||||
$resource->setSetting('invitation_policy', 'reject'); | $resource->setSetting('invitation_policy', 'reject'); | ||||
Queue::assertPushed(\App\Jobs\Resource\UpdateJob::class, 1); | Queue::assertPushed(\App\Jobs\Resource\UpdateJob::class, 1); | ||||
Queue::assertPushed( | |||||
\App\Jobs\Resource\UpdateJob::class, | |||||
function ($job) use ($resource) { | |||||
return $resource->id === TestCase::getObjectProperty($job, 'resourceId') | |||||
&& ['invitation_policy' => 'accept'] === TestCase::getObjectProperty($job, 'properties'); | |||||
} | |||||
); | |||||
$this->assertSame('test1', $resource->getSetting('unknown')); | $this->assertSame('test1', $resource->getSetting('unknown')); | ||||
$this->assertSame('reject', $resource->fresh()->getSetting('invitation_policy')); | $this->assertSame('reject', $resource->fresh()->getSetting('invitation_policy')); | ||||
Queue::fake(); | Queue::fake(); | ||||
// Delete a setting (null) | // Delete a setting (null) | ||||
$resource->setSetting('unknown', null); | $resource->setSetting('unknown', null); | ||||
Queue::assertPushed(\App\Jobs\Resource\UpdateJob::class, 0); | Queue::assertPushed(\App\Jobs\Resource\UpdateJob::class, 0); | ||||
// Delete a setting that is synced to LDAP | // Delete a setting that is synced to LDAP | ||||
$resource->setSetting('invitation_policy', null); | $resource->setSetting('invitation_policy', null); | ||||
Queue::assertPushed(\App\Jobs\Resource\UpdateJob::class, 1); | Queue::assertPushed(\App\Jobs\Resource\UpdateJob::class, 1); | ||||
Queue::assertPushed( | |||||
\App\Jobs\Resource\UpdateJob::class, | |||||
function ($job) use ($resource) { | |||||
return $resource->id === TestCase::getObjectProperty($job, 'resourceId') | |||||
&& ['invitation_policy' => 'reject'] === TestCase::getObjectProperty($job, 'properties'); | |||||
} | |||||
); | |||||
$this->assertSame(null, $resource->getSetting('unknown')); | $this->assertSame(null, $resource->getSetting('unknown')); | ||||
$this->assertSame(null, $resource->fresh()->getSetting('invitation_policy')); | $this->assertSame(null, $resource->fresh()->getSetting('invitation_policy')); | ||||
} | } | ||||
/** | /** | ||||
* Test resource status assignment and is*() methods | * Test resource status assignment and is*() methods | ||||
*/ | */ | ||||
▲ Show 20 Lines • Show All 85 Lines • Show Last 20 Lines |