39 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
		
		
			
		
	
	
			39 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
|  | <?php | ||
|  | 
 | ||
|  | namespace Tests\Permissions\Scenarios; | ||
|  | 
 | ||
|  | use BookStack\Auth\User; | ||
|  | use BookStack\Entities\Models\Entity; | ||
|  | use Tests\TestCase; | ||
|  | 
 | ||
|  | // Cases defined in dev/docs/permission-scenario-testing.md
 | ||
|  | 
 | ||
|  | class PermissionScenarioTestCase extends TestCase | ||
|  | { | ||
|  |     protected function assertVisibleToUser(Entity $entity, User $user) | ||
|  |     { | ||
|  |         $this->actingAs($user); | ||
|  |         $funcView = userCan($entity->getMorphClass() . '-view', $entity); | ||
|  |         $queryView = $entity->newQuery()->scopes(['visible'])->find($entity->id) !== null; | ||
|  | 
 | ||
|  |         $id = $entity->getMorphClass() . ':' . $entity->id; | ||
|  |         $msg = "Item [{$id}] should be visible but was not found via "; | ||
|  |         $msg .= implode(' and ', array_filter([!$funcView ? 'userCan' : '', !$queryView ? 'query' : ''])); | ||
|  | 
 | ||
|  |         static::assertTrue($funcView && $queryView, $msg); | ||
|  |     } | ||
|  | 
 | ||
|  |     protected function assertNotVisibleToUser(Entity $entity, User $user) | ||
|  |     { | ||
|  |         $this->actingAs($user); | ||
|  |         $funcView = userCan($entity->getMorphClass() . '-view', $entity); | ||
|  |         $queryView = $entity->newQuery()->scopes(['visible'])->find($entity->id) !== null; | ||
|  | 
 | ||
|  |         $id = $entity->getMorphClass() . ':' . $entity->id; | ||
|  |         $msg = "Item [{$id}] should not be visible but was found via "; | ||
|  |         $msg .= implode(' and ', array_filter([$funcView ? 'userCan' : '', $queryView ? 'query' : ''])); | ||
|  | 
 | ||
|  |         static::assertTrue(!$funcView && !$queryView, $msg); | ||
|  |     } | ||
|  | } |