Changeset View
Changeset View
Standalone View
Standalone View
src/tests/TestCaseTrait.php
<?php | <?php | ||||
namespace Tests; | namespace Tests; | ||||
use App\Domain; | use App\Domain; | ||||
use App\Group; | use App\Group; | ||||
use App\Resource; | |||||
use App\Sku; | |||||
use App\Transaction; | use App\Transaction; | ||||
use App\User; | use App\User; | ||||
use Carbon\Carbon; | use Carbon\Carbon; | ||||
use Illuminate\Contracts\Console\Kernel; | use Illuminate\Contracts\Console\Kernel; | ||||
use Illuminate\Support\Facades\Queue; | use Illuminate\Support\Facades\Queue; | ||||
use PHPUnit\Framework\Assert; | use PHPUnit\Framework\Assert; | ||||
trait TestCaseTrait | trait TestCaseTrait | ||||
▲ Show 20 Lines • Show All 70 Lines • ▼ Show 20 Lines | trait TestCaseTrait | ||||
* | * | ||||
* Should be generated with `\App\Utils::generatePassphrase()`. | * Should be generated with `\App\Utils::generatePassphrase()`. | ||||
* | * | ||||
* @var ?string | * @var ?string | ||||
*/ | */ | ||||
protected $userPassword; | protected $userPassword; | ||||
/** | /** | ||||
* Register the beta entitlement for a user | |||||
*/ | |||||
protected function addBetaEntitlement($user, $title): void | |||||
{ | |||||
// Add beta + $title entitlements | |||||
$beta_sku = Sku::withEnvTenantContext()->where('title', 'beta')->first(); | |||||
$sku = Sku::withEnvTenantContext()->where('title', $title)->first(); | |||||
$user->assignSku($beta_sku); | |||||
$user->assignSku($sku); | |||||
} | |||||
/** | |||||
* Assert that the entitlements for the user match the expected list of entitlements. | * Assert that the entitlements for the user match the expected list of entitlements. | ||||
* | * | ||||
* @param \App\User|\App\Domain $object The object for which the entitlements need to be pulled. | * @param \App\User|\App\Domain $object The object for which the entitlements need to be pulled. | ||||
* @param array $expected An array of expected \App\SKU titles. | * @param array $expected An array of expected \App\Sku titles. | ||||
*/ | */ | ||||
protected function assertEntitlements($object, $expected) | protected function assertEntitlements($object, $expected) | ||||
{ | { | ||||
// Assert the user entitlements | // Assert the user entitlements | ||||
$skus = $object->entitlements()->get() | $skus = $object->entitlements()->get() | ||||
->map(function ($ent) { | ->map(function ($ent) { | ||||
return $ent->sku->title; | return $ent->sku->title; | ||||
}) | }) | ||||
Show All 29 Lines | trait TestCaseTrait | ||||
/** | /** | ||||
* Removes all beta entitlements from the database | * Removes all beta entitlements from the database | ||||
*/ | */ | ||||
protected function clearBetaEntitlements(): void | protected function clearBetaEntitlements(): void | ||||
{ | { | ||||
$beta_handlers = [ | $beta_handlers = [ | ||||
'App\Handlers\Beta', | 'App\Handlers\Beta', | ||||
'App\Handlers\Beta\Resources', | |||||
'App\Handlers\Distlist', | 'App\Handlers\Distlist', | ||||
]; | ]; | ||||
$betas = \App\Sku::whereIn('handler_class', $beta_handlers)->pluck('id')->all(); | $betas = Sku::whereIn('handler_class', $beta_handlers)->pluck('id')->all(); | ||||
\App\Entitlement::whereIn('sku_id', $betas)->delete(); | \App\Entitlement::whereIn('sku_id', $betas)->delete(); | ||||
} | } | ||||
/** | /** | ||||
* Creates the application. | * Creates the application. | ||||
* | * | ||||
* @return \Illuminate\Foundation\Application | * @return \Illuminate\Foundation\Application | ||||
▲ Show 20 Lines • Show All 123 Lines • ▼ Show 20 Lines | protected function deleteTestGroup($email) | ||||
$job = new \App\Jobs\Group\DeleteJob($group->id); | $job = new \App\Jobs\Group\DeleteJob($group->id); | ||||
$job->handle(); | $job->handle(); | ||||
$group->forceDelete(); | $group->forceDelete(); | ||||
} | } | ||||
/** | /** | ||||
* Delete a test resource whatever it takes. | |||||
* | |||||
* @coversNothing | |||||
*/ | |||||
protected function deleteTestResource($email) | |||||
{ | |||||
Queue::fake(); | |||||
$resource = Resource::withTrashed()->where('email', $email)->first(); | |||||
if (!$resource) { | |||||
return; | |||||
} | |||||
$job = new \App\Jobs\Resource\DeleteJob($resource->id); | |||||
$job->handle(); | |||||
$resource->forceDelete(); | |||||
} | |||||
/** | |||||
* Delete a test user whatever it takes. | * Delete a test user whatever it takes. | ||||
* | * | ||||
* @coversNothing | * @coversNothing | ||||
*/ | */ | ||||
protected function deleteTestUser($email) | protected function deleteTestUser($email) | ||||
{ | { | ||||
Queue::fake(); | Queue::fake(); | ||||
▲ Show 20 Lines • Show All 41 Lines • ▼ Show 20 Lines | trait TestCaseTrait | ||||
protected function getTestGroup($email, $attrib = []) | protected function getTestGroup($email, $attrib = []) | ||||
{ | { | ||||
// Disable jobs (i.e. skip LDAP oprations) | // Disable jobs (i.e. skip LDAP oprations) | ||||
Queue::fake(); | Queue::fake(); | ||||
return Group::firstOrCreate(['email' => $email], $attrib); | return Group::firstOrCreate(['email' => $email], $attrib); | ||||
} | } | ||||
/** | /** | ||||
* Get Resource object by name+domain, create it if needed. | |||||
* Skip LDAP jobs. | |||||
*/ | |||||
protected function getTestResource($email, $attrib = []) | |||||
{ | |||||
// Disable jobs (i.e. skip LDAP oprations) | |||||
Queue::fake(); | |||||
$resource = Resource::where('email', $email)->first(); | |||||
if (!$resource) { | |||||
list($local, $domain) = explode('@', $email, 2); | |||||
$resource = new Resource(); | |||||
$resource->email = $email; | |||||
$resource->domain = $domain; | |||||
if (!isset($attrib['name'])) { | |||||
$resource->name = $local; | |||||
} | |||||
} | |||||
foreach ($attrib as $key => $val) { | |||||
$resource->{$key} = $val; | |||||
} | |||||
$resource->save(); | |||||
return $resource; | |||||
} | |||||
/** | |||||
* Get User object by email, create it if needed. | * Get User object by email, create it if needed. | ||||
* Skip LDAP jobs. | * Skip LDAP jobs. | ||||
* | * | ||||
* @coversNothing | * @coversNothing | ||||
*/ | */ | ||||
protected function getTestUser($email, $attrib = []) | protected function getTestUser($email, $attrib = []) | ||||
{ | { | ||||
// Disable jobs (i.e. skip LDAP oprations) | // Disable jobs (i.e. skip LDAP oprations) | ||||
▲ Show 20 Lines • Show All 69 Lines • ▼ Show 20 Lines | protected function setUpTest() | ||||
foreach ($this->domainUsers as $user) { | foreach ($this->domainUsers as $user) { | ||||
$this->domainOwner->assignPackage($packageKolab, $user); | $this->domainOwner->assignPackage($packageKolab, $user); | ||||
} | } | ||||
$this->domainUsers[] = $this->domainOwner; | $this->domainUsers[] = $this->domainOwner; | ||||
// assign second factor to joe | // assign second factor to joe | ||||
$this->joe->assignSku(\App\Sku::where('title', '2fa')->first()); | $this->joe->assignSku(Sku::where('title', '2fa')->first()); | ||||
\App\Auth\SecondFactor::seed($this->joe->email); | \App\Auth\SecondFactor::seed($this->joe->email); | ||||
usort( | usort( | ||||
$this->domainUsers, | $this->domainUsers, | ||||
function ($a, $b) { | function ($a, $b) { | ||||
return $a->email > $b->email; | return $a->email > $b->email; | ||||
} | } | ||||
); | ); | ||||
▲ Show 20 Lines • Show All 44 Lines • Show Last 20 Lines |