Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F117754870
D2167.1775201166.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Authored By
Unknown
Size
30 KB
Referenced Files
None
Subscribers
None
D2167.1775201166.diff
View Options
diff --git a/src/app/Handlers/Beta/Meet.php b/src/app/Handlers/Beta/Meet.php
deleted file mode 100644
--- a/src/app/Handlers/Beta/Meet.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-namespace App\Handlers\Beta;
-
-class Meet extends Base
-{
- /**
- * The entitleable class for this handler.
- *
- * @return string
- */
- public static function entitleableClass(): string
- {
- // Note: We connot just inherit from the parent because
- // we use static:: there.
- return \App\User::class;
- }
-}
diff --git a/src/app/Handlers/Meet.php b/src/app/Handlers/Meet.php
new file mode 100644
--- /dev/null
+++ b/src/app/Handlers/Meet.php
@@ -0,0 +1,43 @@
+<?php
+
+namespace App\Handlers;
+
+class Meet extends Base
+{
+ /**
+ * The entitleable class for this handler.
+ *
+ * @return string
+ */
+ public static function entitleableClass(): string
+ {
+ return \App\User::class;
+ }
+
+ /**
+ * SKU handler metadata.
+ *
+ * @param \App\Sku $sku The SKU object
+ *
+ * @return array
+ */
+ public static function metadata(\App\Sku $sku): array
+ {
+ $data = parent::metadata($sku);
+
+ $data['required'] = ['groupware'];
+
+ return $data;
+ }
+
+ /**
+ * The priority that specifies the order of SKUs in UI.
+ * Higher number means higher on the list.
+ *
+ * @return int
+ */
+ public static function priority(): int
+ {
+ return 50;
+ }
+}
diff --git a/src/app/Http/Controllers/API/V4/UsersController.php b/src/app/Http/Controllers/API/V4/UsersController.php
--- a/src/app/Http/Controllers/API/V4/UsersController.php
+++ b/src/app/Http/Controllers/API/V4/UsersController.php
@@ -243,17 +243,18 @@
->where('entitleable_type', Domain::class)
->count() > 0;
- // Get user's beta entitlements
- $betaSKUs = $user->entitlements()->select('skus.title')
+ // Get user's entitlements titles
+ $skus = $user->entitlements()->select('skus.title')
->join('skus', 'skus.id', '=', 'entitlements.sku_id')
- ->where('handler_class', 'like', 'App\\\\Handlers\\\\Beta\\\\%')
->get()
->pluck('title')
+ ->sort()
->unique()
+ ->values()
->all();
return [
- 'betaSKUs' => $betaSKUs,
+ 'skus' => $skus,
// TODO: This will change when we enable all users to create domains
'enableDomains' => $isController && $hasCustomDomain,
'enableUsers' => $isController,
diff --git a/src/database/migrations/2021_01_26_150000_change_sku_descriptions.php b/src/database/migrations/2021_01_26_150000_change_sku_descriptions.php
new file mode 100644
--- /dev/null
+++ b/src/database/migrations/2021_01_26_150000_change_sku_descriptions.php
@@ -0,0 +1,36 @@
+<?php
+
+use Illuminate\Support\Facades\Schema;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Database\Migrations\Migration;
+
+// phpcs:ignore
+class ChangeSkuDescriptions extends Migration
+{
+ /**
+ * Run the migrations.
+ *
+ * @return void
+ */
+ public function up()
+ {
+ $beta_sku = \App\Sku::where('title', 'beta')->first();
+ $beta_sku->name = 'Private Beta (invitation only)';
+ $beta_sku->description = 'Access to the private beta program subscriptions';
+ $beta_sku->save();
+
+ $meet_sku = \App\Sku::where('title', 'meet')->first();
+ $meet_sku->name = 'Voice & Video Conferencing (public beta)';
+ $meet_sku->handler_class = 'App\Handlers\Meet';
+ $meet_sku->save();
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ }
+}
diff --git a/src/database/seeds/local/SkuSeeder.php b/src/database/seeds/local/SkuSeeder.php
--- a/src/database/seeds/local/SkuSeeder.php
+++ b/src/database/seeds/local/SkuSeeder.php
@@ -157,8 +157,8 @@
Sku::create(
[
'title' => 'beta',
- 'name' => 'Beta program',
- 'description' => 'Access to beta program subscriptions',
+ 'name' => 'Private Beta (invitation only)',
+ 'description' => 'Access to the private beta program subscriptions',
'cost' => 0,
'units_free' => 0,
'period' => 'monthly',
@@ -173,12 +173,12 @@
Sku::create(
[
'title' => 'meet',
- 'name' => 'Video chat',
+ 'name' => 'Voice & Video Conferencing (public beta)',
'description' => 'Video conferencing tool',
'cost' => 0,
'units_free' => 0,
'period' => 'monthly',
- 'handler_class' => 'App\Handlers\Beta\Meet',
+ 'handler_class' => 'App\Handlers\Meet',
'active' => true,
]
);
diff --git a/src/database/seeds/local/UserSeeder.php b/src/database/seeds/local/UserSeeder.php
--- a/src/database/seeds/local/UserSeeder.php
+++ b/src/database/seeds/local/UserSeeder.php
@@ -129,8 +129,8 @@
$john->assignPackage($package_lite, $joe);
- $john->assignSku(Sku::firstOrCreate(['title' => 'beta']));
- $john->assignSku(Sku::firstOrCreate(['title' => 'meet']));
+ //$john->assignSku(Sku::firstOrCreate(['title' => 'beta']));
+ //$john->assignSku(Sku::firstOrCreate(['title' => 'meet']));
$joe->setAliases(['joe.monster@kolab.org']);
diff --git a/src/database/seeds/production/SkuSeeder.php b/src/database/seeds/production/SkuSeeder.php
--- a/src/database/seeds/production/SkuSeeder.php
+++ b/src/database/seeds/production/SkuSeeder.php
@@ -157,8 +157,8 @@
Sku::create(
[
'title' => 'beta',
- 'name' => 'Beta program',
- 'description' => 'Access to beta program subscriptions',
+ 'name' => 'Private Beta (invitation only)',
+ 'description' => 'Access to the private beta program subscriptions',
'cost' => 0,
'units_free' => 0,
'period' => 'monthly',
@@ -173,12 +173,12 @@
Sku::create(
[
'title' => 'meet',
- 'name' => 'Video chat',
+ 'name' => 'Voice & Video Conferencing (public beta)',
'description' => 'Video conferencing tool',
'cost' => 0,
'units_free' => 0,
'period' => 'monthly',
- 'handler_class' => 'App\Handlers\Beta\Meet',
+ 'handler_class' => 'App\Handlers\Meet',
'active' => true,
]
);
diff --git a/src/resources/js/app.js b/src/resources/js/app.js
--- a/src/resources/js/app.js
+++ b/src/resources/js/app.js
@@ -90,9 +90,9 @@
hasRoute(name) {
return this.$router.resolve({ name: name }).resolved.matched.length > 0
},
- hasBeta(name) {
+ hasSKU(name) {
const authInfo = store.state.authInfo
- return authInfo.statusInfo.betaSKUs && authInfo.statusInfo.betaSKUs.indexOf(name) != -1
+ return authInfo.statusInfo.skus && authInfo.statusInfo.skus.indexOf(name) != -1
},
isController(wallet_id) {
if (wallet_id && store.state.authInfo) {
diff --git a/src/resources/vue/Dashboard.vue b/src/resources/vue/Dashboard.vue
--- a/src/resources/vue/Dashboard.vue
+++ b/src/resources/vue/Dashboard.vue
@@ -16,7 +16,7 @@
<svg-icon icon="wallet"></svg-icon><span class="name">Wallet</span>
<span v-if="balance < 0" class="badge badge-danger">{{ $root.price(balance) }}</span>
</router-link>
- <router-link v-if="$root.hasBeta('meet')" class="card link-chat" :to="{ name: 'rooms' }">
+ <router-link v-if="$root.hasSKU('meet')" class="card link-chat" :to="{ name: 'rooms' }">
<svg-icon icon="comments"></svg-icon><span class="name">Video chat</span>
<span class="badge badge-primary">beta</span>
</router-link>
diff --git a/src/resources/vue/Rooms.vue b/src/resources/vue/Rooms.vue
--- a/src/resources/vue/Rooms.vue
+++ b/src/resources/vue/Rooms.vue
@@ -65,7 +65,7 @@
}
},
mounted() {
- if (!this.$root.hasBeta('meet')) {
+ if (!this.$root.hasSKU('meet')) {
this.$root.errorPage(403)
return
}
diff --git a/src/tests/Browser/Admin/UserTest.php b/src/tests/Browser/Admin/UserTest.php
--- a/src/tests/Browser/Admin/UserTest.php
+++ b/src/tests/Browser/Admin/UserTest.php
@@ -36,6 +36,8 @@
$wallet = $john->wallets()->first();
$wallet->discount()->dissociate();
$wallet->save();
+
+ $this->clearMeetEntitlements();
}
/**
@@ -55,6 +57,8 @@
$wallet->discount()->dissociate();
$wallet->save();
+ $this->clearMeetEntitlements();
+
parent::tearDown();
}
diff --git a/src/tests/Browser/Meet/RoomControlsTest.php b/src/tests/Browser/Meet/RoomControlsTest.php
--- a/src/tests/Browser/Meet/RoomControlsTest.php
+++ b/src/tests/Browser/Meet/RoomControlsTest.php
@@ -15,12 +15,12 @@
public function setUp(): void
{
parent::setUp();
- $this->clearBetaEntitlements();
+ $this->clearMeetEntitlements();
}
public function tearDown(): void
{
- $this->clearBetaEntitlements();
+ $this->clearMeetEntitlements();
parent::tearDown();
}
@@ -41,7 +41,7 @@
$room->save();
}
- $this->assignBetaEntitlement('john@kolab.org', 'meet');
+ $this->assignMeetEntitlement('john@kolab.org');
$this->browse(function (Browser $browser) {
// Join the room as an owner (authenticate)
@@ -96,7 +96,7 @@
$room->save();
}
- $this->assignBetaEntitlement('john@kolab.org', 'meet');
+ $this->assignMeetEntitlement('john@kolab.org');
$this->browse(function (Browser $owner, Browser $guest) {
// Join the room as an owner (authenticate)
@@ -241,7 +241,7 @@
$room->save();
}
- $this->assignBetaEntitlement('john@kolab.org', 'meet');
+ $this->assignMeetEntitlement('john@kolab.org');
$this->browse(function (Browser $owner, Browser $guest) {
// Join the room as an owner
@@ -344,7 +344,7 @@
$room->save();
}
- $this->assignBetaEntitlement('john@kolab.org', 'meet');
+ $this->assignMeetEntitlement('john@kolab.org');
$this->browse(function (Browser $owner, Browser $guest) {
// Join the room as an owner
diff --git a/src/tests/Browser/Meet/RoomSecurityTest.php b/src/tests/Browser/Meet/RoomSecurityTest.php
--- a/src/tests/Browser/Meet/RoomSecurityTest.php
+++ b/src/tests/Browser/Meet/RoomSecurityTest.php
@@ -18,8 +18,8 @@
{
parent::setUp();
- $this->clearBetaEntitlements();
- $this->assignBetaEntitlement('john@kolab.org', 'meet');
+ $this->clearMeetEntitlements();
+ $this->assignMeetEntitlement('john@kolab.org');
$room = Room::where('name', 'john')->first();
$room->setSettings(['password' => null, 'locked' => null]);
@@ -27,7 +27,7 @@
public function tearDown(): void
{
- $this->clearBetaEntitlements();
+ $this->clearMeetEntitlements();
$room = Room::where('name', 'john')->first();
$room->setSettings(['password' => null, 'locked' => null]);
diff --git a/src/tests/Browser/Meet/RoomSetupTest.php b/src/tests/Browser/Meet/RoomSetupTest.php
--- a/src/tests/Browser/Meet/RoomSetupTest.php
+++ b/src/tests/Browser/Meet/RoomSetupTest.php
@@ -17,12 +17,12 @@
public function setUp(): void
{
parent::setUp();
- $this->clearBetaEntitlements();
+ $this->clearMeetEntitlements();
}
public function tearDown(): void
{
- $this->clearBetaEntitlements();
+ $this->clearMeetEntitlements();
parent::tearDown();
}
@@ -74,7 +74,7 @@
$room->save();
}
- $this->assignBetaEntitlement('john@kolab.org', 'meet');
+ $this->assignMeetEntitlement('john@kolab.org', 'meet');
$this->browse(function (Browser $browser) {
$browser->visit(new RoomPage('john'))
@@ -130,7 +130,7 @@
*/
public function testTwoUsersInARoom(): void
{
- $this->assignBetaEntitlement('john@kolab.org', 'meet');
+ $this->assignMeetEntitlement('john@kolab.org', 'meet');
$this->browse(function (Browser $browser, Browser $guest) {
// In one browser window act as a guest
@@ -292,7 +292,7 @@
*/
public function testSubscribers(): void
{
- $this->assignBetaEntitlement('john@kolab.org', 'meet');
+ $this->assignMeetEntitlement('john@kolab.org', 'meet');
$this->browse(function (Browser $browser, Browser $guest) {
// Join the room as the owner
diff --git a/src/tests/Browser/Meet/RoomsTest.php b/src/tests/Browser/Meet/RoomsTest.php
--- a/src/tests/Browser/Meet/RoomsTest.php
+++ b/src/tests/Browser/Meet/RoomsTest.php
@@ -19,7 +19,7 @@
public function setUp(): void
{
parent::setUp();
- $this->clearBetaEntitlements();
+ $this->clearMeetEntitlements();
}
/**
@@ -27,7 +27,7 @@
*/
public function tearDown(): void
{
- $this->clearBetaEntitlements();
+ $this->clearMeetEntitlements();
parent::tearDown();
}
diff --git a/src/tests/Browser/UsersTest.php b/src/tests/Browser/UsersTest.php
--- a/src/tests/Browser/UsersTest.php
+++ b/src/tests/Browser/UsersTest.php
@@ -47,8 +47,8 @@
$wallet->discount()->dissociate();
$wallet->save();
- $betas = Sku::where('handler_class', 'like', '%\\Beta%')->pluck('id')->all();
- Entitlement::whereIn('sku_id', $betas)->delete();
+ $this->clearBetaEntitlements();
+ $this->clearMeetEntitlements();
}
/**
@@ -69,8 +69,8 @@
$wallet->discount()->dissociate();
$wallet->save();
- $betas = Sku::where('handler_class', 'like', '%\\Beta%')->pluck('id')->all();
- Entitlement::whereIn('sku_id', $betas)->delete();
+ $this->clearBetaEntitlements();
+ $this->clearMeetEntitlements();
parent::tearDown();
}
@@ -221,7 +221,7 @@
$browser->assertSeeIn('div.row:nth-child(9) label', 'Subscriptions')
->assertVisible('@skus.row:nth-child(9)')
->with('@skus', function ($browser) {
- $browser->assertElementsCount('tbody tr', 5)
+ $browser->assertElementsCount('tbody tr', 6)
// Mailbox SKU
->assertSeeIn('tbody tr:nth-child(1) td.name', 'User Mailbox')
->assertSeeIn('tbody tr:nth-child(1) td.price', '4,44 CHF/month')
@@ -271,6 +271,15 @@
'tbody tr:nth-child(5) td.buttons button',
'Two factor authentication for webmail and administration panel'
)
+ // Meet SKU
+ ->assertSeeIn('tbody tr:nth-child(6) td.name', 'Voice & Video Conferencing (public beta)')
+ ->assertSeeIn('tbody tr:nth-child(6) td.price', '0,00 CHF/month')
+ ->assertNotChecked('tbody tr:nth-child(6) td.selection input')
+ ->assertEnabled('tbody tr:nth-child(6) td.selection input')
+ ->assertTip(
+ 'tbody tr:nth-child(6) td.buttons button',
+ 'Video conferencing tool'
+ )
->click('tbody tr:nth-child(4) td.selection input');
})
->assertMissing('@skus table + .hint')
@@ -298,6 +307,11 @@
->assertDialogOpened('Activesync requires Groupware Features.')
->acceptDialog()
->assertNotChecked('#sku-input-activesync')
+ // Check 'meet', expect an alert
+ ->click('#sku-input-meet')
+ ->assertDialogOpened('Voice & Video Conferencing (public beta) requires Groupware Features.')
+ ->acceptDialog()
+ ->assertNotChecked('#sku-input-meet')
// Check '2FA', expect 'activesync' unchecked and readonly
->click('#sku-input-2fa')
->assertChecked('#sku-input-2fa')
@@ -554,7 +568,7 @@
$browser->whenAvailable('@skus', function (Browser $browser) {
$quota_input = new QuotaInput('tbody tr:nth-child(2) .range-input');
$browser->waitFor('tbody tr')
- ->assertElementsCount('tbody tr', 5)
+ ->assertElementsCount('tbody tr', 6)
// Mailbox SKU
->assertSeeIn('tbody tr:nth-child(1) td.price', '3,99 CHF/month¹')
// Storage SKU
@@ -606,24 +620,25 @@
->on(new UserInfo())
->with('@skus', function ($browser) {
$browser->assertElementsCount('tbody tr', 7)
- // Beta SKU
- ->assertSeeIn('tbody tr:nth-child(6) td.name', 'Beta program')
- ->assertSeeIn('tbody tr:nth-child(6) td.price', '0,00 CHF/month')
- ->assertChecked('tbody tr:nth-child(6) td.selection input')
+ // Beta/Meet SKU
+ ->assertSeeIn('tbody tr:nth-child(6) td.name', 'Voice & Video Conferencing (public beta)')
+ ->assertSeeIn('tr:nth-child(6) td.price', '0,00 CHF/month')
+ ->assertNotChecked('tbody tr:nth-child(6) td.selection input')
->assertEnabled('tbody tr:nth-child(6) td.selection input')
->assertTip(
'tbody tr:nth-child(6) td.buttons button',
- 'Access to beta program subscriptions'
+ 'Video conferencing tool'
)
- // Beta/Meet SKU
- ->assertSeeIn('tbody tr:nth-child(7) td.name', 'Video chat')
- ->assertSeeIn('tr:nth-child(7) td.price', '0,00 CHF/month')
- ->assertNotChecked('tbody tr:nth-child(7) td.selection input')
+ // Beta SKU
+ ->assertSeeIn('tbody tr:nth-child(7) td.name', 'Private Beta (invitation only)')
+ ->assertSeeIn('tbody tr:nth-child(7) td.price', '0,00 CHF/month')
+ ->assertChecked('tbody tr:nth-child(7) td.selection input')
->assertEnabled('tbody tr:nth-child(7) td.selection input')
->assertTip(
'tbody tr:nth-child(7) td.buttons button',
- 'Video conferencing tool'
+ 'Access to the private beta program subscriptions'
)
+/*
// Check Meet, Uncheck Beta, expect Meet unchecked
->click('#sku-input-meet')
->click('#sku-input-beta')
@@ -633,8 +648,8 @@
->click('#sku-input-meet')
->assertDialogOpened('Video chat requires Beta program.')
->acceptDialog()
- // Enable Meet and Beta and submit
- ->click('#sku-input-beta')
+*/
+ // Enable Meet and submit
->click('#sku-input-meet');
})
->click('button[type=submit]')
@@ -646,6 +661,7 @@
$browser->visit('/user/' . $john->id)
->on(new UserInfo())
->click('#sku-input-beta')
+ ->click('#sku-input-meet')
->click('button[type=submit]')
->assertToast(Toast::TYPE_SUCCESS, 'User data updated successfully.');
diff --git a/src/tests/Feature/Controller/OpenViduTest.php b/src/tests/Feature/Controller/OpenViduTest.php
--- a/src/tests/Feature/Controller/OpenViduTest.php
+++ b/src/tests/Feature/Controller/OpenViduTest.php
@@ -15,14 +15,14 @@
{
parent::setUp();
- $this->clearBetaEntitlements();
+ $this->clearMeetEntitlements();
$room = Room::where('name', 'john')->first();
$room->setSettings(['password' => null, 'locked' => null]);
}
public function tearDown(): void
{
- $this->clearBetaEntitlements();
+ $this->clearMeetEntitlements();
$room = Room::where('name', 'john')->first();
$room->setSettings(['password' => null, 'locked' => null]);
@@ -78,7 +78,7 @@
$room->session_id = null;
$room->save();
- $this->assignBetaEntitlement($john, 'meet');
+ $this->assignMeetEntitlement($john);
// Unauth access, no session yet
$response = $this->post("api/v4/openvidu/rooms/{$room->name}");
@@ -211,7 +211,7 @@
$room->save();
$room->setSettings(['password' => null, 'locked' => 'true']);
- $this->assignBetaEntitlement($john, 'meet');
+ $this->assignMeetEntitlement($john);
// Create the session (also makes sure the owner can access a locked room)
$response = $this->actingAs($john)->post("api/v4/openvidu/rooms/{$room->name}", ['init' => 1]);
@@ -341,7 +341,7 @@
*/
public function testJoinRoomGuest(): void
{
- $this->assignBetaEntitlement('john@kolab.org', 'meet');
+ $this->assignMeetEntitlement('john@kolab.org');
// There's no asy way to logout the user in the same test after
// using actingAs(). That's why this is moved to a separate test
@@ -427,7 +427,7 @@
$room->session_id = null;
$room->save();
- $this->assignBetaEntitlement($john, 'meet');
+ $this->assignMeetEntitlement($john);
// First we create the session
$response = $this->actingAs($john)->post("api/v4/openvidu/rooms/{$room->name}", ['init' => 1]);
diff --git a/src/tests/Feature/Controller/SkusTest.php b/src/tests/Feature/Controller/SkusTest.php
--- a/src/tests/Feature/Controller/SkusTest.php
+++ b/src/tests/Feature/Controller/SkusTest.php
@@ -16,8 +16,8 @@
{
parent::setUp();
- $betas = Sku::where('handler_class', 'like', '%\\Beta%')->pluck('id')->all();
- Entitlement::whereIn('sku_id', $betas)->delete();
+ $this->clearBetaEntitlements();
+ $this->clearMeetEntitlements();
}
/**
@@ -25,8 +25,8 @@
*/
public function tearDown(): void
{
- $betas = Sku::where('handler_class', 'like', '%\\Beta%')->pluck('id')->all();
- Entitlement::whereIn('sku_id', $betas)->delete();
+ $this->clearBetaEntitlements();
+ $this->clearMeetEntitlements();
parent::tearDown();
}
@@ -80,7 +80,7 @@
$json = $response->json();
- $this->assertCount(7, $json);
+ $this->assertCount(8, $json);
$this->assertSkuElement('mailbox', $json[0], [
'prio' => 100,
@@ -129,7 +129,16 @@
'forbidden' => ['activesync'],
]);
- $this->assertSkuElement('domain-hosting', $json[5], [
+ $this->assertSkuElement('meet', $json[5], [
+ 'prio' => 50,
+ 'type' => 'user',
+ 'handler' => 'meet',
+ 'enabled' => false,
+ 'readonly' => false,
+ 'required' => ['groupware'],
+ ]);
+
+ $this->assertSkuElement('domain-hosting', $json[6], [
'prio' => 0,
'type' => 'domain',
'handler' => 'domainhosting',
@@ -137,7 +146,7 @@
'readonly' => false,
]);
- $this->assertSkuElement('group', $json[6], [
+ $this->assertSkuElement('group', $json[7], [
'prio' => 0,
'type' => 'group',
'handler' => 'group',
@@ -164,21 +173,21 @@
$this->assertCount(7, $json);
- $this->assertSkuElement('beta', $json[5], [
- 'prio' => 10,
+ $this->assertSkuElement('meet', $json[5], [
+ 'prio' => 50,
'type' => 'user',
- 'handler' => 'beta',
+ 'handler' => 'meet',
'enabled' => false,
'readonly' => false,
+ 'required' => ['groupware'],
]);
- $this->assertSkuElement('meet', $json[6], [
- 'prio' => 0,
+ $this->assertSkuElement('beta', $json[6], [
+ 'prio' => 10,
'type' => 'user',
- 'handler' => 'meet',
+ 'handler' => 'beta',
'enabled' => false,
'readonly' => false,
- 'required' => ['beta'],
]);
}
diff --git a/src/tests/Feature/Controller/UsersTest.php b/src/tests/Feature/Controller/UsersTest.php
--- a/src/tests/Feature/Controller/UsersTest.php
+++ b/src/tests/Feature/Controller/UsersTest.php
@@ -385,7 +385,7 @@
$result = UsersController::statusInfo($user);
$this->assertFalse($result['isReady']);
- $this->assertSame([], $result['betaSKUs']);
+ $this->assertSame([], $result['skus']);
$this->assertCount(3, $result['process']);
$this->assertSame('user-new', $result['process'][0]['label']);
$this->assertSame(true, $result['process'][0]['state']);
@@ -424,7 +424,7 @@
$result = UsersController::statusInfo($user);
$this->assertFalse($result['isReady']);
- $this->assertSame([], $result['betaSKUs']);
+ $this->assertSame([], $result['skus']);
$this->assertCount(7, $result['process']);
$this->assertSame('user-new', $result['process'][0]['label']);
$this->assertSame(true, $result['process'][0]['state']);
@@ -441,24 +441,24 @@
$this->assertSame('domain-confirmed', $result['process'][6]['label']);
$this->assertSame(false, $result['process'][6]['state']);
- // Test betaSKUs property
+ // Test 'skus' property
$user->assignSku(Sku::where('title', 'beta')->first());
$result = UsersController::statusInfo($user);
- $this->assertSame([], $result['betaSKUs']);
+ $this->assertSame(['beta'], $result['skus']);
$user->assignSku(Sku::where('title', 'meet')->first());
$result = UsersController::statusInfo($user);
- $this->assertSame(['meet'], $result['betaSKUs']);
+ $this->assertSame(['beta', 'meet'], $result['skus']);
$user->assignSku(Sku::where('title', 'meet')->first());
$result = UsersController::statusInfo($user);
- $this->assertSame(['meet'], $result['betaSKUs']);
+ $this->assertSame(['beta', 'meet'], $result['skus']);
}
/**
@@ -989,7 +989,6 @@
$this->assertTrue($result['statusInfo']['enableDomains']);
$this->assertTrue($result['statusInfo']['enableWallets']);
$this->assertTrue($result['statusInfo']['enableUsers']);
- $this->assertSame([], $result['statusInfo']['betaSKUs']);
// Ned is John's wallet controller
$ned = $this->getTestUser('ned@kolab.org');
@@ -1011,7 +1010,6 @@
$this->assertTrue($result['statusInfo']['enableDomains']);
$this->assertTrue($result['statusInfo']['enableWallets']);
$this->assertTrue($result['statusInfo']['enableUsers']);
- $this->assertSame([], $result['statusInfo']['betaSKUs']);
// Test discount in a response
$discount = Discount::where('code', 'TEST')->first();
@@ -1040,7 +1038,6 @@
$this->assertFalse($result['statusInfo']['enableDomains']);
$this->assertFalse($result['statusInfo']['enableWallets']);
$this->assertFalse($result['statusInfo']['enableUsers']);
- $this->assertSame([], $result['statusInfo']['betaSKUs']);
}
/**
diff --git a/src/tests/TestCaseTrait.php b/src/tests/TestCaseTrait.php
--- a/src/tests/TestCaseTrait.php
+++ b/src/tests/TestCaseTrait.php
@@ -14,20 +14,17 @@
trait TestCaseTrait
{
/**
- * Assign beta entitlement to a user.
- * It will add both requested entitlement as well as the 'beta' entitlement
+ * Assign 'meet' entitlement to a user.
*
* @param string|\App\User $user The user
- * @param string $sku The beta SKU title
*/
- protected function assignBetaEntitlement($user, $sku): void
+ protected function assignMeetEntitlement($user): void
{
if (is_string($user)) {
$user = $this->getTestUser($user);
}
- $user->assignSku(\App\Sku::where('title', 'beta')->first());
- $user->assignSku(\App\Sku::where('title', $sku)->first());
+ $user->assignSku(\App\Sku::where('title', 'meet')->first());
}
protected function assertUserEntitlements($user, $expected)
@@ -49,11 +46,23 @@
*/
protected function clearBetaEntitlements(): void
{
- $betas = \App\Sku::where('handler_class', 'like', '%\\Beta%')->pluck('id')->all();
+ $betas = \App\Sku::where('handler_class', 'like', 'App\\Handlers\\Beta\\%')
+ ->orWhere('handler_class', 'App\Handlers\Beta')
+ ->pluck('id')->all();
+
\App\Entitlement::whereIn('sku_id', $betas)->delete();
}
/**
+ * Removes all 'meet' entitlements from the database
+ */
+ protected function clearMeetEntitlements(): void
+ {
+ $meet_sku = \App\Sku::where('title', 'meet')->first();
+ \App\Entitlement::where('sku_id', $meet_sku->id)->delete();
+ }
+
+ /**
* Creates the application.
*
* @return \Illuminate\Foundation\Application
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, Apr 3, 7:26 AM (18 h, 2 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
18820023
Default Alt Text
D2167.1775201166.diff (30 KB)
Attached To
Mode
D2167: Meet/Beta - private vs public beta
Attached
Detach File
Event Timeline