Changeset View
Changeset View
Standalone View
Standalone View
src/tests/Browser/Reseller/SharedFolderTest.php
- This file was copied from src/tests/Browser/Reseller/ResourceTest.php.
<?php | <?php | ||||
namespace Tests\Browser\Reseller; | namespace Tests\Browser\Reseller; | ||||
use App\Resource; | use App\SharedFolder; | ||||
use Illuminate\Support\Facades\Queue; | use Illuminate\Support\Facades\Queue; | ||||
use Tests\Browser; | use Tests\Browser; | ||||
use Tests\Browser\Components\Toast; | use Tests\Browser\Components\Toast; | ||||
use Tests\Browser\Pages\Admin\Resource as ResourcePage; | use Tests\Browser\Pages\Admin\SharedFolder as SharedFolderPage; | ||||
use Tests\Browser\Pages\Admin\User as UserPage; | use Tests\Browser\Pages\Admin\User as UserPage; | ||||
use Tests\Browser\Pages\Dashboard; | use Tests\Browser\Pages\Dashboard; | ||||
use Tests\Browser\Pages\Home; | use Tests\Browser\Pages\Home; | ||||
use Tests\TestCaseDusk; | use Tests\TestCaseDusk; | ||||
class ResourceTest extends TestCaseDusk | class SharedFolderTest extends TestCaseDusk | ||||
{ | { | ||||
/** | /** | ||||
* {@inheritDoc} | * {@inheritDoc} | ||||
*/ | */ | ||||
public function setUp(): void | public function setUp(): void | ||||
{ | { | ||||
parent::setUp(); | parent::setUp(); | ||||
self::useResellerUrl(); | self::useResellerUrl(); | ||||
} | } | ||||
/** | /** | ||||
* {@inheritDoc} | * {@inheritDoc} | ||||
*/ | */ | ||||
public function tearDown(): void | public function tearDown(): void | ||||
{ | { | ||||
parent::tearDown(); | parent::tearDown(); | ||||
} | } | ||||
/** | /** | ||||
* Test resource info page (unauthenticated) | * Test shared folder info page (unauthenticated) | ||||
*/ | */ | ||||
public function testResourceUnauth(): void | public function testSharedFolderUnauth(): void | ||||
{ | { | ||||
// Test that the page requires authentication | // Test that the page requires authentication | ||||
$this->browse(function (Browser $browser) { | $this->browse(function (Browser $browser) { | ||||
$user = $this->getTestUser('john@kolab.org'); | $user = $this->getTestUser('john@kolab.org'); | ||||
$resource = $this->getTestResource('resource-test1@kolab.org'); | $folder = $this->getTestSharedFolder('folder-event@kolab.org'); | ||||
$browser->visit('/resource/' . $resource->id)->on(new Home()); | $browser->visit('/shared-folder/' . $folder->id)->on(new Home()); | ||||
}); | }); | ||||
} | } | ||||
/** | /** | ||||
* Test distribution list info page | * Test shared folder info page | ||||
*/ | */ | ||||
public function testInfo(): void | public function testInfo(): void | ||||
{ | { | ||||
Queue::fake(); | Queue::fake(); | ||||
$this->browse(function (Browser $browser) { | $this->browse(function (Browser $browser) { | ||||
$user = $this->getTestUser('john@kolab.org'); | $user = $this->getTestUser('john@kolab.org'); | ||||
$resource = $this->getTestResource('resource-test1@kolab.org'); | $folder = $this->getTestSharedFolder('folder-event@kolab.org'); | ||||
$resource->setSetting('invitation_policy', 'accept'); | $folder->setConfig(['acl' => ['anyone, read-only', 'jack@kolab.org, read-write']]); | ||||
$folder->status = SharedFolder::STATUS_NEW | SharedFolder::STATUS_ACTIVE | |||||
| SharedFolder::STATUS_LDAP_READY | SharedFolder::STATUS_IMAP_READY; | |||||
$folder->save(); | |||||
$resource_page = new ResourcePage($resource->id); | $folder_page = new SharedFolderPage($folder->id); | ||||
$user_page = new UserPage($user->id); | $user_page = new UserPage($user->id); | ||||
// Goto the distlist page | // Goto the folder page | ||||
$browser->visit(new Home()) | $browser->visit(new Home()) | ||||
->submitLogon('reseller@' . \config('app.domain'), \App\Utils::generatePassphrase(), true) | ->submitLogon('reseller@' . \config('app.domain'), \App\Utils::generatePassphrase(), true) | ||||
->on(new Dashboard()) | ->on(new Dashboard()) | ||||
->visit($user_page) | ->visit($user_page) | ||||
->on($user_page) | ->on($user_page) | ||||
->click('@nav #tab-resources') | ->click('@nav #tab-shared-folders') | ||||
->pause(1000) | ->pause(1000) | ||||
->click('@user-resources table tbody tr:first-child td:first-child a') | ->click('@user-shared-folders table tbody tr:first-child td:first-child a') | ||||
->on($resource_page) | ->on($folder_page) | ||||
->assertSeeIn('@resource-info .card-title', $resource->email) | ->assertSeeIn('@folder-info .card-title', $folder->email) | ||||
->with('@resource-info form', function (Browser $browser) use ($resource) { | ->with('@folder-info form', function (Browser $browser) use ($folder) { | ||||
$browser->assertElementsCount('.row', 3) | $browser->assertElementsCount('.row', 4) | ||||
->assertSeeIn('.row:nth-child(1) label', 'ID (Created)') | ->assertSeeIn('.row:nth-child(1) label', 'ID (Created)') | ||||
->assertSeeIn('.row:nth-child(1) #resourceid', "{$resource->id} ({$resource->created_at})") | ->assertSeeIn('.row:nth-child(1) #folderid', "{$folder->id} ({$folder->created_at})") | ||||
->assertSeeIn('.row:nth-child(2) label', 'Status') | ->assertSeeIn('.row:nth-child(2) label', 'Status') | ||||
->assertSeeIn('.row:nth-child(2) #status.text-success', 'Active') | ->assertSeeIn('.row:nth-child(2) #status.text-success', 'Active') | ||||
->assertSeeIn('.row:nth-child(3) label', 'Name') | ->assertSeeIn('.row:nth-child(3) label', 'Name') | ||||
->assertSeeIn('.row:nth-child(3) #name', $resource->name); | ->assertSeeIn('.row:nth-child(3) #name', $folder->name) | ||||
->assertSeeIn('.row:nth-child(4) label', 'Type') | |||||
->assertSeeIn('.row:nth-child(4) #type', 'Calendar'); | |||||
}) | }) | ||||
->assertElementsCount('ul.nav-tabs', 1) | ->assertElementsCount('ul.nav-tabs', 1) | ||||
->assertSeeIn('ul.nav-tabs .nav-link', 'Settings') | ->assertSeeIn('ul.nav-tabs .nav-link', 'Settings') | ||||
->with('@resource-settings form', function (Browser $browser) { | ->with('@folder-settings form', function (Browser $browser) { | ||||
$browser->assertElementsCount('.row', 1) | $browser->assertElementsCount('.row', 1) | ||||
->assertSeeIn('.row:nth-child(1) label', 'Invitation policy') | ->assertSeeIn('.row:nth-child(1) label', 'Access rights') | ||||
->assertSeeIn('.row:nth-child(1) #invitation_policy', 'accept'); | ->assertSeeIn('.row:nth-child(1) #acl', 'anyone: read-only') | ||||
->assertSeeIn('.row:nth-child(1) #acl', 'jack@kolab.org: read-write'); | |||||
}); | }); | ||||
// Test invalid resource identifier | // Test invalid shared folder identifier | ||||
$browser->visit('/resource/abc')->assertErrorPage(404); | $browser->visit('/shared-folder/abc')->assertErrorPage(404); | ||||
}); | }); | ||||
} | } | ||||
} | } |