ДУТ проверка в 2GP

Sep 08 2020

Я создал новый пакет 2GP. Поскольку он будет выпущен в AppExchange, я реализовал общую проверку CRUD и FLS для каждого места, где я контактирую с базой данных в моем коде Apex.

например

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

Я создаю новую версию пакета с -cключом для покрытия тестами Apex, но тесты не проходят из-за проверок разрешений FLS. CRUD-проверки проходят нормально.

Из документации сборка 2GP идет следующим образом:

  1. Создана новая недоступная временная организация.
  2. Метаданные отправляются в рабочую организацию.
  3. Испытания проходят.
  4. Запустится сценарий после установки.

Поэтому я не вижу способа назначить пользователю разрешения FLS от имени того, кто выполняет тесты.

Сборка пакета -cбез проверок 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);

Но - это предполагает, что вы включаете в комплект пермский набор. Если нет, вам, вероятно, придется подождать появления этой новой функции (или применить к пилотной версии), которая позволит вам включать не упакованные метаданные в процесс создания пакета при создании рабочей организации.