Changeset View
Changeset View
Standalone View
Standalone View
src/tests/Feature/Jobs/User/DeleteTest.php
- This file was copied from src/tests/Feature/Jobs/User/CreateTest.php.
<?php | <?php | ||||
namespace Tests\Feature\Jobs\User; | namespace Tests\Feature\Jobs\User; | ||||
use App\User; | use App\User; | ||||
use Illuminate\Support\Facades\Queue; | |||||
use Tests\TestCase; | use Tests\TestCase; | ||||
class CreateTest extends TestCase | class DeleteTest extends TestCase | ||||
{ | { | ||||
/** | /** | ||||
* {@inheritDoc} | * {@inheritDoc} | ||||
*/ | */ | ||||
public function setUp(): void | public function setUp(): void | ||||
{ | { | ||||
parent::setUp(); | parent::setUp(); | ||||
$this->deleteTestUser('new-job-user@' . \config('app.domain')); | $this->deleteTestUser('new-job-user@' . \config('app.domain')); | ||||
} | } | ||||
/** | |||||
* {@inheritDoc} | |||||
*/ | |||||
public function tearDown(): void | public function tearDown(): void | ||||
{ | { | ||||
$this->deleteTestUser('new-job-user@' . \config('app.domain')); | $this->deleteTestUser('new-job-user@' . \config('app.domain')); | ||||
parent::tearDown(); | parent::tearDown(); | ||||
} | } | ||||
/** | /** | ||||
* Test job handle | * Test job handle | ||||
* | * | ||||
* @group ldap | * @group ldap | ||||
* @group imap | |||||
*/ | */ | ||||
public function testHandle(): void | public function testHandle(): void | ||||
{ | { | ||||
$user = $this->getTestUser('new-job-user@' . \config('app.domain')); | Queue::fake(); | ||||
$this->assertFalse($user->isLdapReady()); | $user = $this->getTestUser('new-job-user@' . \config('app.domain')); | ||||
// Create the user in LDAP+IMAP | |||||
$job = new \App\Jobs\User\CreateJob($user->id); | $job = new \App\Jobs\User\CreateJob($user->id); | ||||
$job->handle(); | $job->handle(); | ||||
$this->assertTrue($user->fresh()->isLdapReady()); | $user->refresh(); | ||||
$this->assertFalse($job->hasFailed()); | |||||
// Test job failures | |||||
$job = new \App\Jobs\User\CreateJob($user->id); | |||||
$job->handle(); | |||||
$this->assertTrue($job->hasFailed()); | $this->assertTrue($user->isLdapReady()); | ||||
$this->assertSame("User {$user->id} is already marked as ldap-ready.", $job->failureMessage); | $this->assertTrue($user->isImapReady()); | ||||
$this->assertFalse($user->isDeleted()); | |||||
// Test job failure (user already deleted) | |||||
$user->status |= User::STATUS_DELETED; | $user->status |= User::STATUS_DELETED; | ||||
$user->save(); | $user->save(); | ||||
$job = new \App\Jobs\User\CreateJob($user->id); | $job = new \App\Jobs\User\DeleteJob($user->id); | ||||
$job->handle(); | $job->handle(); | ||||
$this->assertTrue($job->hasFailed()); | $this->assertTrue($job->hasFailed()); | ||||
$this->assertSame("User {$user->id} is marked as deleted.", $job->failureMessage); | $this->assertSame("User {$user->id} is already marked as deleted.", $job->failureMessage); | ||||
// Test success delete from LDAP and IMAP | |||||
$user->status ^= User::STATUS_DELETED; | $user->status ^= User::STATUS_DELETED; | ||||
$user->save(); | $user->save(); | ||||
$user->delete(); | |||||
$job = new \App\Jobs\User\CreateJob($user->id); | |||||
$job->handle(); | |||||
$this->assertTrue($job->hasFailed()); | $this->assertFalse($user->isDeleted()); | ||||
$this->assertSame("User {$user->id} is actually deleted.", $job->failureMessage); | |||||
// TODO: Test failures on domain sanity checks | |||||
$job = new \App\Jobs\User\CreateJob(123); | $job = new \App\Jobs\User\DeleteJob($user->id); | ||||
$job->handle(); | $job->handle(); | ||||
$this->assertTrue($job->isReleased()); | $user->refresh(); | ||||
$this->assertFalse($job->hasFailed()); | $this->assertFalse($job->hasFailed()); | ||||
$this->assertFalse($user->isLdapReady()); | |||||
$this->assertFalse($user->isImapReady()); | |||||
$this->assertTrue($user->isDeleted()); | |||||
// TODO: Test partial execution, i.e. only IMAP or only LDAP | |||||
} | } | ||||
} | } |