Page MenuHomePhorge

SkuTest.php
No OneTemporary

Size
5 KB
Referenced Files
None
Subscribers
None

SkuTest.php

<?php
namespace Tests\Feature;
use App\Domain;
use App\Entitlement;
use App\Handlers;
use App\Quota;
use App\Sku;
use App\User;
use Tests\TestCase;
class SkuTest extends TestCase
{
public function setUp(): void
{
parent::setUp();
User::where('email', 'sku-test-user@custom-domain.com')->delete();
Domain::where('namespace', 'custom-domain.com')->delete();
}
/**
* Tests for Sku::registerEntitlements()
*/
public function testRegisterEntitlement(): void
{
// TODO: This test depends on seeded SKUs, but probably should not
$domain = $this->getTestDomain(
'custom-domain.com',
[
'status' => Domain::STATUS_NEW,
'type' => Domain::TYPE_EXTERNAL,
]
);
$user = $this->getTestUser('sku-test-user@custom-domain.com');
$wallet = $user->wallets()->first();
// \App\Handlers\Mailbox SKU
// Note, we're testing mailbox SKU before domain SKU as it may potentially fail in that order
$sku = Sku::where('title', 'mailbox')->first();
$sku->registerEntitlement($user);
$entitlements = $sku->entitlements()->where('owner_id', $user->id)->get();
$wallet->refresh();
if ($sku->active) {
$balance = -$sku->cost;
$this->assertCount(1, $entitlements);
$this->assertEquals($user->id, $entitlements[0]->entitleable_id);
$this->assertSame(Handlers\Mailbox::entitleableClass(), $entitlements[0]->entitleable_type);
} else {
$this->assertCount(0, $entitlements);
}
$this->assertEquals($balance, $wallet->balance);
// \App\Handlers\Domain SKU
$sku = Sku::where('title', 'domain')->first();
$sku->registerEntitlement($user, [$domain]);
$entitlements = $sku->entitlements()->where('owner_id', $user->id)->get();
$wallet->refresh();
if ($sku->active) {
$balance -= $sku->cost;
$this->assertCount(1, $entitlements);
$this->assertEquals($domain->id, $entitlements[0]->entitleable_id);
$this->assertSame(Handlers\Domain::entitleableClass(), $entitlements[0]->entitleable_type);
} else {
$this->assertCount(0, $entitlements);
}
$this->assertEquals($balance, $wallet->balance);
// \App\Handlers\DomainRegistration SKU
$sku = Sku::where('title', 'domain-registration')->first();
$sku->registerEntitlement($user, [$domain]);
$entitlements = $sku->entitlements()->where('owner_id', $user->id)->get();
$wallet->refresh();
if ($sku->active) {
$balance -= $sku->cost;
$this->assertCount(1, $entitlements);
$this->assertEquals($domain->id, $entitlements[0]->entitleable_id);
$this->assertSame(Handlers\DomainRegistration::entitleableClass(), $entitlements[0]->entitleable_type);
} else {
$this->assertCount(0, $entitlements);
}
$this->assertEquals($balance, $wallet->balance);
// \App\Handlers\DomainHosting SKU
$sku = Sku::where('title', 'domain-hosting')->first();
$sku->registerEntitlement($user, [$domain]);
$entitlements = $sku->entitlements()->where('owner_id', $user->id)->get();
$wallet->refresh();
if ($sku->active) {
$balance -= $sku->cost;
$this->assertCount(1, $entitlements);
$this->assertEquals($domain->id, $entitlements[0]->entitleable_id);
$this->assertSame(Handlers\DomainHosting::entitleableClass(), $entitlements[0]->entitleable_type);
} else {
$this->assertCount(0, $entitlements);
}
$this->assertEquals($balance, $wallet->balance);
// \App\Handlers\Groupware SKU
$sku = Sku::where('title', 'groupware')->first();
$sku->registerEntitlement($user, [$domain]);
$entitlements = $sku->entitlements()->where('owner_id', $user->id)->get();
$wallet->refresh();
if ($sku->active) {
$balance -= $sku->cost;
$this->assertCount(1, $entitlements);
$this->assertEquals($user->id, $entitlements[0]->entitleable_id);
$this->assertSame(Handlers\Mailbox::entitleableClass(), $entitlements[0]->entitleable_type);
} else {
$this->assertCount(0, $entitlements);
}
$this->assertEquals($balance, $wallet->balance);
// \App\Handlers\Storage SKU
$sku = Sku::where('title', 'storage')->first();
$sku->registerEntitlement($user, [$domain]);
$entitlements = $sku->entitlements()->where('owner_id', $user->id)->get();
$wallet->refresh();
if ($sku->active) {
$balance -= $sku->cost;
// For Storage entitlement we expect additional Quota record
$quota = Quota::where('user_id', $user->id)->first();
$this->assertTrue(!empty($quota));
// TODO: This should be a constant and/or config option, and probably
// quota should not be in bytes
$this->assertSame(2147483648, $quota->value);
$this->assertCount(1, $entitlements);
$this->assertEquals($quota->id, $entitlements[0]->entitleable_id);
$this->assertSame(Handlers\Storage::entitleableClass(), $entitlements[0]->entitleable_type);
} else {
$this->assertCount(0, $entitlements);
}
$this->assertEquals($balance, $wallet->balance);
}
}

File Metadata

Mime Type
text/x-php
Expires
Fri, Jun 12, 3:09 AM (1 d, 8 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
914575
Default Alt Text
SkuTest.php (5 KB)

Event Timeline