public function it_has_permission_in_db_after_registration(FunctionalTester $I)
 {
     $I->amOnRoute(RegisterPage::$ROUTE);
     $userData = $this->userActor->fillRegisterPageFields($I);
     $I->submitForm(RegisterPage::$formId, [], 'Register');
     $user = $I->grabRecord('users', ['username' => $userData['username']]);
     $permission = Permission::where('name', '=', array_shift(Permission::$defaultPermissions))->first();
     $I->seeRecord(UserPermission::$tableName, ['user_id' => $user->id, 'permission_id' => $permission->id]);
 }
 public function detachPermission($permission)
 {
     $cacheKey = $this->getPermissionsCacheKey();
     $permission = Permission::where('name', '=', $permission)->firstOrFail();
     $record = $this->permissionsRelation()->where('permission_id', '=', $permission->id)->where('user_id', '=', $this->id)->first();
     if ($record) {
         $record->delete();
         Cache::forget($cacheKey);
     }
 }
 protected function seedDataGetter($seedName)
 {
     $seedName = strtolower($seedName);
     $role = Role::where('name', '=', $seedName)->firstOrFail();
     $permissions = [];
     $data = [];
     foreach ($this->seedFilesIterator(DIRECTORY_SEPARATOR . $seedName) as $line) {
         $extraData = ['role_id' => $role->id];
         $permissions[] = $this->seedDataComposer($line, $extraData);
     }
     foreach ($permissions as $permission) {
         $permissionId = Permission::where('name', '=', $permission['name'])->firstOrFail()->id;
         $data[] = ['role_id' => $permission['role_id'], 'permission_id' => $permissionId];
     }
     return $data;
 }
 public function it_successfully_detaches_permission(FunctionalTester $I)
 {
     $user = $this->userActor->create();
     $permission = 'accessDashboard';
     $permissionId = Permission::where('name', '=', $permission)->firstOrFail()->id;
     $user->setRole('admin');
     $I->assertTrue($user->attachPermission($permission));
     $I->seeRecord($this->UPT, ['user_id' => $user->id, 'permission_id' => $permissionId]);
     $user->detachPermission($permission);
     $I->dontSeeRecord($this->UPT, ['user_id' => $user->id, 'permission_id' => $permissionId]);
 }