Changeset View
Changeset View
Standalone View
Standalone View
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 CreateTest extends TestCase | ||||
{ | { | ||||
/** | /** | ||||
* {@inheritDoc} | * {@inheritDoc} | ||||
*/ | */ | ||||
public function setUp(): void | public function setUp(): void | ||||
Show All 9 Lines | public function tearDown(): void | ||||
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(); | ||||
$user = $this->getTestUser('new-job-user@' . \config('app.domain'), ['status' => User::STATUS_NEW]); | |||||
$this->assertFalse($user->isLdapReady()); | $this->assertFalse($user->isLdapReady()); | ||||
$this->assertFalse($user->isImapReady()); | |||||
$this->assertFalse($user->isActive()); | |||||
$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 | $this->assertTrue($user->isLdapReady()); | ||||
$job = new \App\Jobs\User\CreateJob($user->id); | $this->assertTrue($user->isImapReady()); | ||||
$job->handle(); | $this->assertTrue($user->isActive()); | ||||
$this->assertFalse($job->hasFailed()); | |||||
$this->assertTrue($job->hasFailed()); | |||||
$this->assertSame("User {$user->id} is already marked as ldap-ready.", $job->failureMessage); | |||||
// Test job failure (user 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\CreateJob($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 marked as deleted.", $job->failureMessage); | ||||
// Test job failure (user removed) | |||||
$user->status ^= User::STATUS_DELETED; | $user->status ^= User::STATUS_DELETED; | ||||
$user->save(); | $user->save(); | ||||
$user->delete(); | $user->delete(); | ||||
$job = new \App\Jobs\User\CreateJob($user->id); | $job = new \App\Jobs\User\CreateJob($user->id); | ||||
$job->handle(); | $job->handle(); | ||||
$this->assertTrue($job->hasFailed()); | $this->assertTrue($job->hasFailed()); | ||||
$this->assertSame("User {$user->id} is actually deleted.", $job->failureMessage); | $this->assertSame("User {$user->id} is actually deleted.", $job->failureMessage); | ||||
// TODO: Test failures on domain sanity checks | // Test job failure (user unknown) | ||||
$this->expectException(\Exception::class); | |||||
$job = new \App\Jobs\User\CreateJob(123); | $job = new \App\Jobs\User\CreateJob(123); | ||||
$job->handle(); | $job->handle(); | ||||
$this->assertTrue($job->isReleased()); | $this->assertTrue($job->isReleased()); | ||||
$this->assertFalse($job->hasFailed()); | $this->assertFalse($job->hasFailed()); | ||||
// TODO: Test failures on domain sanity checks | |||||
// TODO: Test partial execution, i.e. only IMAP or only LDAP | |||||
} | } | ||||
} | } |