Changeset View
Changeset View
Standalone View
Standalone View
src/tests/Feature/UserTest.php
Show All 19 Lines | public function setUp(): void | ||||
$this->deleteTestUser('UserAccountC@UserAccount.com'); | $this->deleteTestUser('UserAccountC@UserAccount.com'); | ||||
$this->deleteTestGroup('test-group@UserAccount.com'); | $this->deleteTestGroup('test-group@UserAccount.com'); | ||||
$this->deleteTestDomain('UserAccount.com'); | $this->deleteTestDomain('UserAccount.com'); | ||||
$this->deleteTestDomain('UserAccountAdd.com'); | $this->deleteTestDomain('UserAccountAdd.com'); | ||||
} | } | ||||
public function tearDown(): void | public function tearDown(): void | ||||
{ | { | ||||
\config(['pgp.enable' => false]); | |||||
$this->deleteTestUser('user-test@' . \config('app.domain')); | $this->deleteTestUser('user-test@' . \config('app.domain')); | ||||
$this->deleteTestUser('UserAccountA@UserAccount.com'); | $this->deleteTestUser('UserAccountA@UserAccount.com'); | ||||
$this->deleteTestUser('UserAccountB@UserAccount.com'); | $this->deleteTestUser('UserAccountB@UserAccount.com'); | ||||
$this->deleteTestUser('UserAccountC@UserAccount.com'); | $this->deleteTestUser('UserAccountC@UserAccount.com'); | ||||
$this->deleteTestGroup('test-group@UserAccount.com'); | $this->deleteTestGroup('test-group@UserAccount.com'); | ||||
$this->deleteTestDomain('UserAccount.com'); | $this->deleteTestDomain('UserAccount.com'); | ||||
$this->deleteTestDomain('UserAccountAdd.com'); | $this->deleteTestDomain('UserAccountAdd.com'); | ||||
▲ Show 20 Lines • Show All 76 Lines • ▼ Show 20 Lines | public function testCreate(): void | ||||
$this->assertSame(User::STATUS_NEW | User::STATUS_ACTIVE, $result->status); | $this->assertSame(User::STATUS_NEW | User::STATUS_ACTIVE, $result->status); | ||||
} | } | ||||
/** | /** | ||||
* Verify user creation process | * Verify user creation process | ||||
*/ | */ | ||||
public function testCreateJobs(): void | public function testCreateJobs(): void | ||||
{ | { | ||||
// Fake the queue, assert that no jobs were pushed... | |||||
Queue::fake(); | Queue::fake(); | ||||
Queue::assertNothingPushed(); | |||||
$user = User::create([ | $user = User::create([ | ||||
'email' => 'user-test@' . \config('app.domain') | 'email' => 'user-test@' . \config('app.domain') | ||||
]); | ]); | ||||
Queue::assertPushed(\App\Jobs\User\CreateJob::class, 1); | Queue::assertPushed(\App\Jobs\User\CreateJob::class, 1); | ||||
Queue::assertPushed(\App\Jobs\PGP\KeyCreateJob::class, 0); | |||||
Queue::assertPushed( | Queue::assertPushed( | ||||
\App\Jobs\User\CreateJob::class, | \App\Jobs\User\CreateJob::class, | ||||
function ($job) use ($user) { | function ($job) use ($user) { | ||||
$userEmail = TestCase::getObjectProperty($job, 'userEmail'); | $userEmail = TestCase::getObjectProperty($job, 'userEmail'); | ||||
$userId = TestCase::getObjectProperty($job, 'userId'); | $userId = TestCase::getObjectProperty($job, 'userId'); | ||||
return $userEmail === $user->email | return $userEmail === $user->email | ||||
Show All 20 Lines | /* | ||||
return $userEmail === $user->email | return $userEmail === $user->email | ||||
&& $userId === $user->id; | && $userId === $user->id; | ||||
}); | }); | ||||
*/ | */ | ||||
} | } | ||||
/** | /** | ||||
* Verify user creation process invokes the PGP keys creation job (if configured) | |||||
*/ | |||||
public function testCreatePGPJob(): void | |||||
{ | |||||
Queue::fake(); | |||||
\config(['pgp.enable' => true]); | |||||
$user = User::create([ | |||||
'email' => 'user-test@' . \config('app.domain') | |||||
]); | |||||
Queue::assertPushed(\App\Jobs\PGP\KeyCreateJob::class, 1); | |||||
Queue::assertPushed( | |||||
\App\Jobs\PGP\KeyCreateJob::class, | |||||
function ($job) use ($user) { | |||||
$userEmail = TestCase::getObjectProperty($job, 'userEmail'); | |||||
$userId = TestCase::getObjectProperty($job, 'userId'); | |||||
return $userEmail === $user->email | |||||
&& $userId === $user->id; | |||||
} | |||||
); | |||||
\config(['pgp.enable' => false]); | |||||
} | |||||
/** | |||||
* Tests for User::domains() | * Tests for User::domains() | ||||
*/ | */ | ||||
public function testDomains(): void | public function testDomains(): void | ||||
{ | { | ||||
$user = $this->getTestUser('john@kolab.org'); | $user = $this->getTestUser('john@kolab.org'); | ||||
$domains = []; | $domains = []; | ||||
foreach ($user->domains() as $domain) { | foreach ($user->domains() as $domain) { | ||||
▲ Show 20 Lines • Show All 202 Lines • ▼ Show 20 Lines | public function testFindByEmail(): void | ||||
$this->assertInstanceOf(User::class, $result); | $this->assertInstanceOf(User::class, $result); | ||||
$this->assertSame($user->id, $result->id); | $this->assertSame($user->id, $result->id); | ||||
// Use an alias | // Use an alias | ||||
$result = User::findByEmail('john.doe@kolab.org'); | $result = User::findByEmail('john.doe@kolab.org'); | ||||
$this->assertInstanceOf(User::class, $result); | $this->assertInstanceOf(User::class, $result); | ||||
$this->assertSame($user->id, $result->id); | $this->assertSame($user->id, $result->id); | ||||
Queue::fake(); | |||||
// A case where two users have the same alias | // A case where two users have the same alias | ||||
$ned = $this->getTestUser('ned@kolab.org'); | $ned = $this->getTestUser('ned@kolab.org'); | ||||
$ned->setAliases(['joe.monster@kolab.org']); | $ned->setAliases(['joe.monster@kolab.org']); | ||||
$result = User::findByEmail('joe.monster@kolab.org'); | $result = User::findByEmail('joe.monster@kolab.org'); | ||||
$this->assertNull($result); | $this->assertNull($result); | ||||
$ned->setAliases([]); | $ned->setAliases([]); | ||||
// TODO: searching by external email (setting) | // TODO: searching by external email (setting) | ||||
▲ Show 20 Lines • Show All 147 Lines • ▼ Show 20 Lines | public function testSetAliases(): void | ||||
$user = $this->getTestUser('UserAccountA@UserAccount.com'); | $user = $this->getTestUser('UserAccountA@UserAccount.com'); | ||||
$domain = $this->getTestDomain('UserAccount.com', [ | $domain = $this->getTestDomain('UserAccount.com', [ | ||||
'status' => Domain::STATUS_NEW, | 'status' => Domain::STATUS_NEW, | ||||
'type' => Domain::TYPE_HOSTED, | 'type' => Domain::TYPE_HOSTED, | ||||
]); | ]); | ||||
$this->assertCount(0, $user->aliases->all()); | $this->assertCount(0, $user->aliases->all()); | ||||
\config(['pgp.enable' => true]); | |||||
// Add an alias | // Add an alias | ||||
$user->setAliases(['UserAlias1@UserAccount.com']); | $user->setAliases(['UserAlias1@UserAccount.com']); | ||||
Queue::assertPushed(\App\Jobs\User\UpdateJob::class, 1); | Queue::assertPushed(\App\Jobs\User\UpdateJob::class, 1); | ||||
Queue::assertPushed(\App\Jobs\PGP\KeyCreateJob::class, 1); | |||||
\config(['pgp.enable' => false]); | |||||
$aliases = $user->aliases()->get(); | $aliases = $user->aliases()->get(); | ||||
$this->assertCount(1, $aliases); | $this->assertCount(1, $aliases); | ||||
$this->assertSame('useralias1@useraccount.com', $aliases[0]['alias']); | $this->assertSame('useralias1@useraccount.com', $aliases[0]['alias']); | ||||
// Add another alias | // Add another alias | ||||
$user->setAliases(['UserAlias1@UserAccount.com', 'UserAlias2@UserAccount.com']); | $user->setAliases(['UserAlias1@UserAccount.com', 'UserAlias2@UserAccount.com']); | ||||
Queue::assertPushed(\App\Jobs\User\UpdateJob::class, 2); | Queue::assertPushed(\App\Jobs\User\UpdateJob::class, 2); | ||||
Queue::assertPushed(\App\Jobs\PGP\KeyCreateJob::class, 1); | |||||
$aliases = $user->aliases()->orderBy('alias')->get(); | $aliases = $user->aliases()->orderBy('alias')->get(); | ||||
$this->assertCount(2, $aliases); | $this->assertCount(2, $aliases); | ||||
$this->assertSame('useralias1@useraccount.com', $aliases[0]->alias); | $this->assertSame('useralias1@useraccount.com', $aliases[0]->alias); | ||||
$this->assertSame('useralias2@useraccount.com', $aliases[1]->alias); | $this->assertSame('useralias2@useraccount.com', $aliases[1]->alias); | ||||
\config(['pgp.enable' => true]); | |||||
// Remove an alias | // Remove an alias | ||||
$user->setAliases(['UserAlias1@UserAccount.com']); | $user->setAliases(['UserAlias1@UserAccount.com']); | ||||
\config(['pgp.enable' => false]); | |||||
Queue::assertPushed(\App\Jobs\User\UpdateJob::class, 3); | Queue::assertPushed(\App\Jobs\User\UpdateJob::class, 3); | ||||
Queue::assertPushed(\App\Jobs\PGP\KeyUnregisterJob::class, 1); | |||||
$aliases = $user->aliases()->get(); | $aliases = $user->aliases()->get(); | ||||
$this->assertCount(1, $aliases); | $this->assertCount(1, $aliases); | ||||
$this->assertSame('useralias1@useraccount.com', $aliases[0]['alias']); | $this->assertSame('useralias1@useraccount.com', $aliases[0]['alias']); | ||||
// Remove all aliases | // Remove all aliases | ||||
$user->setAliases([]); | $user->setAliases([]); | ||||
▲ Show 20 Lines • Show All 127 Lines • Show Last 20 Lines |