53 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
		
		
			
		
	
	
			53 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
|  | <?php | ||
|  | 
 | ||
|  | namespace Tests\Entity; | ||
|  | 
 | ||
|  | use BookStack\Auth\UserRepo; | ||
|  | use BookStack\Entities\Models\Entity; | ||
|  | use BookStack\Entities\Repos\PageRepo; | ||
|  | use Tests\TestCase; | ||
|  | 
 | ||
|  | class EntityAccessTest extends TestCase | ||
|  | { | ||
|  |     public function test_entities_viewable_after_creator_deletion() | ||
|  |     { | ||
|  |         // Create required assets and revisions
 | ||
|  |         $creator = $this->getEditor(); | ||
|  |         $updater = $this->getViewer(); | ||
|  |         $entities = $this->createEntityChainBelongingToUser($creator, $updater); | ||
|  |         app()->make(UserRepo::class)->destroy($creator); | ||
|  |         app()->make(PageRepo::class)->update($entities['page'], ['html' => '<p>hello!</p>>']); | ||
|  | 
 | ||
|  |         $this->checkEntitiesViewable($entities); | ||
|  |     } | ||
|  | 
 | ||
|  |     public function test_entities_viewable_after_updater_deletion() | ||
|  |     { | ||
|  |         // Create required assets and revisions
 | ||
|  |         $creator = $this->getViewer(); | ||
|  |         $updater = $this->getEditor(); | ||
|  |         $entities = $this->createEntityChainBelongingToUser($creator, $updater); | ||
|  |         app()->make(UserRepo::class)->destroy($updater); | ||
|  |         app()->make(PageRepo::class)->update($entities['page'], ['html' => '<p>Hello there!</p>']); | ||
|  | 
 | ||
|  |         $this->checkEntitiesViewable($entities); | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * @param array<string, Entity> $entities | ||
|  |      */ | ||
|  |     private function checkEntitiesViewable(array $entities) | ||
|  |     { | ||
|  |         // Check pages and books are visible.
 | ||
|  |         $this->asAdmin(); | ||
|  |         foreach ($entities as $entity) { | ||
|  |             $this->get($entity->getUrl()) | ||
|  |                 ->assertStatus(200) | ||
|  |                 ->assertSee($entity->name); | ||
|  |         } | ||
|  | 
 | ||
|  |         // Check revision listing shows no errors.
 | ||
|  |         $this->get($entities['page']->getUrl('/revisions'))->assertStatus(200); | ||
|  |     } | ||
|  | } |