2GP의 FLS 체크인

Sep 08 2020

새로운 2GP 패키지를 만들었습니다. AppExchange에 릴리스 될 예정이므로 Apex 코드에서 데이터베이스와 접촉하는 모든 위치에 대해 일반 CRUD 및 FLS 검사를 구현했습니다.

예 :

MyAwsomeObject.getDescribe().isUpdateable();
MyAwesomeField.getDescribe().isUpdateable();

-cApex 테스트 범위에 대한 키를 사용하여 새 패키지 버전을 빌드 했지만 FLS 권한 확인으로 인해 테스트가 실패합니다. CRUD 검사는 잘 통과합니다.

설명서에서 2GP 빌드는 다음과 같이 진행됩니다.

  1. 액세스 할 수없는 새 스크래치 조직이 생성됩니다.
  2. 메타 데이터가 스크래치 조직으로 푸시됩니다.
  3. 테스트가 실행됩니다.
  4. 설치 후 스크립트가 실행됩니다.

따라서 테스트를 실행하는 사용자를 대신하여 사용자에게 FLS 권한을 할당하는 방법을 찾지 못했습니다.

-cFLS 검사없이 패키지를 빌드하면 완벽하게 작동합니다.

이 FLS 검사를 극복하고 실행중인 사용자 또는 다른 솔루션에 FLS 액세스 권한을 부여하는 방법이 있습니까?

답변

3 BritishBoyinDC Sep 08 2020 at 20:26

따라서 Apex 테스트에서 RunAs 기능을 사용하여 이를 수행 할 수 있습니다. 기본적으로 테스트에서 사용자를 만들고 기본 프로필 (새 최소 액세스 권한 이 도움이 됨)을 할당 한 다음 권한 집합을 할당하고 예를 들어 테스트

Profile p = [SELECT Id FROM Profile WHERE Name = 'Minimum Access - Salesforce '];

User u = new User(Alias = 'standt', Email = '[email protected]',
EmailEncodingKey = 'UTF-8', LastName = 'Testing', LanguageLocaleKey = 'en_US', LocaleSidKey = 'en_US', ProfileId = p.Id,
TimeZoneSidKey = 'America/Los_Angeles', UserName = '[email protected]');

insert u;

PermissionSet ps = [SELECT Id FROM PermissionSet WHERE Name = 'My Permission Set'];
insert new PermissionSetAssignment(AssigneeId = u.id, PermissionSetId = ps.Id);

그러나-이것은 패키지에 Perm Set을 포함하고 있다고 가정합니다. 그렇지 않은 경우 스크래치 조직을 빌드 할 때 패키지 생성 프로세스에 비 패키지 메타 데이터를 포함 할 수있는 이 새로운 기능 (또는 파일럿에 적용) 을 기다려야 할 것입니다 .