public function testCan() { /* |------------------------------------------------------------ | Set |------------------------------------------------------------ */ $permA = $this->mockPermission('manage_a'); $permB = $this->mockPermission('manage_b'); $permC = $this->mockPermission('manage_c'); $roleA = $this->mockRole('RoleA'); $roleB = $this->mockRole('RoleB'); $roleA->perms = [$permA]; $roleB->perms = [$permB, $permC]; $user = new HasRoleUser(); $user->roles = [$roleA, $roleB]; /* |------------------------------------------------------------ | Assertion |------------------------------------------------------------ */ $this->assertTrue($user->can('manage_a')); $this->assertTrue($user->can('manage_b')); $this->assertTrue($user->can('manage_c')); $this->assertFalse($user->can('manage_d')); $this->assertTrue($user->can(['manage_a', 'manage_b', 'manage_c'])); $this->assertTrue($user->can(['manage_a', 'manage_b', 'manage_d'])); $this->assertFalse($user->can(['manage_a', 'manage_b', 'manage_d'], true)); $this->assertFalse($user->can(['manage_d', 'manage_e'])); }
public function testCanWithPlaceholderSupport() { /* |------------------------------------------------------------ | Set |------------------------------------------------------------ */ $permA = $this->mockPermission('admin.posts'); $permB = $this->mockPermission('admin.pages'); $permC = $this->mockPermission('admin.users'); $role = $this->mockRole('Role'); $role->perms = [$permA, $permB, $permC]; $user = new HasRoleUser(); $user->roles = [$role]; /* |------------------------------------------------------------ | Expectation |------------------------------------------------------------ */ $role->shouldReceive('cachedPermissions')->times(6)->andReturn($role->perms); Config::shouldReceive('get')->with('cache.ttl', 60)->times(6)->andReturn('1440'); Cache::shouldReceive('remember')->times(6)->andReturn($user->roles); /* |------------------------------------------------------------ | Assertion |------------------------------------------------------------ */ $this->assertTrue($user->can('admin.posts')); $this->assertTrue($user->can('admin.pages')); $this->assertTrue($user->can('admin.users')); $this->assertFalse($user->can('admin.config')); $this->assertTrue($user->can(['admin.*'])); $this->assertFalse($user->can(['site.*'])); }