|
4 | 4 |
|
5 | 5 | use BookStack\Activity\ActivityType; |
6 | 6 | use BookStack\Entities\Models\Page; |
| 7 | +use BookStack\Entities\Models\PageRevision; |
| 8 | +use BookStack\Permissions\Permission; |
7 | 9 | use Tests\TestCase; |
8 | 10 |
|
9 | 11 | class PageRevisionTest extends TestCase |
@@ -257,6 +259,33 @@ public function test_revision_changes_view_filters_html_content() |
257 | 259 | $revisionView->assertDontSee('dontwantthishere'); |
258 | 260 | } |
259 | 261 |
|
| 262 | + public function test_access_to_revision_operation_requires_revision_view_all_permission() |
| 263 | + { |
| 264 | + $editor = $this->users->editor(); |
| 265 | + $this->actingAs($editor); |
| 266 | + |
| 267 | + $page = $this->entities->page(); |
| 268 | + $this->createRevisions($page, 3); |
| 269 | + /** @var PageRevision $revision */ |
| 270 | + $revision = $page->revisions()->orderBy('id', 'desc')->first(); |
| 271 | + |
| 272 | + $this->get($page->getUrl())->assertSee($page->getUrl('/revisions'), false); |
| 273 | + $this->get($page->getUrl('/revisions'))->assertOk(); |
| 274 | + $this->get($revision->getUrl())->assertOk(); |
| 275 | + $this->get($revision->getUrl('/changes'))->assertOk(); |
| 276 | + $this->put($revision->getUrl('/restore'))->assertRedirect($page->getUrl()); |
| 277 | + $this->delete($revision->getUrl('/delete'))->assertRedirect($page->getUrl('/revisions')); |
| 278 | + |
| 279 | + $this->permissions->removeUserRolePermissions($editor, [Permission::RevisionViewAll]); |
| 280 | + |
| 281 | + $this->get($page->getUrl())->assertDontSee($page->getUrl('/revisions'), false); |
| 282 | + $this->assertPermissionError($this->get($page->getUrl('/revisions'))); |
| 283 | + $this->assertPermissionError($this->get($revision->getUrl())); |
| 284 | + $this->assertPermissionError($this->get($revision->getUrl('/changes'))); |
| 285 | + $this->assertPermissionError($this->put($revision->getUrl('/restore'))); |
| 286 | + $this->assertPermissionError($this->delete($revision->getUrl('/delete'))); |
| 287 | + } |
| 288 | + |
260 | 289 | public function test_revision_restore_action_only_visible_with_permission() |
261 | 290 | { |
262 | 291 | $page = $this->entities->page(); |
|
0 commit comments