1
0
mirror of https://github.com/BookStackApp/BookStack.git synced 2025-07-28 17:02:04 +03:00

Added tests for content conversion action permissions

- Updated 'removePermissionFromUser' test helper to work for
  entity-permissions that become part of the joint permissions system.
This commit is contained in:
Dan Brown
2022-06-19 18:12:36 +01:00
parent 65d4505079
commit 85f59b5275
2 changed files with 55 additions and 3 deletions

View File

@ -49,6 +49,27 @@ class ConvertTest extends TestCase
$this->assertActivityExists(ActivityType::BOOK_CREATE_FROM_CHAPTER, $newBook);
}
public function test_convert_chapter_to_book_requires_permissions()
{
/** @var Chapter $chapter */
$chapter = Chapter::query()->first();
$user = $this->getViewer();
$permissions = ['chapter-delete-all', 'book-create-all', 'chapter-update-all'];
$this->giveUserPermissions($user, $permissions);
foreach ($permissions as $permission) {
$this->removePermissionFromUser($user, $permission);
$resp = $this->actingAs($user)->post($chapter->getUrl('/convert-to-book'));
$this->assertPermissionError($resp);
$this->giveUserPermissions($user, [$permission]);
}
$resp = $this->actingAs($user)->post($chapter->getUrl('/convert-to-book'));
$this->assertNotPermissionError($resp);
$resp->assertRedirect();
}
public function test_book_edit_view_shows_convert_option()
{
$book = Book::query()->first();
@ -102,4 +123,25 @@ class ConvertTest extends TestCase
$this->assertEquals($childChapter->name, $chapterChildPage->book->name);
}
public function test_book_convert_to_shelf_requires_permissions()
{
/** @var Book $book */
$book = Book::query()->first();
$user = $this->getViewer();
$permissions = ['book-delete-all', 'bookshelf-create-all', 'book-update-all', 'book-create-all'];
$this->giveUserPermissions($user, $permissions);
foreach ($permissions as $permission) {
$this->removePermissionFromUser($user, $permission);
$resp = $this->actingAs($user)->post($book->getUrl('/convert-to-shelf'));
$this->assertPermissionError($resp);
$this->giveUserPermissions($user, [$permission]);
}
$resp = $this->actingAs($user)->post($book->getUrl('/convert-to-shelf'));
$this->assertNotPermissionError($resp);
$resp->assertRedirect();
}
}