ДУТ проверка в 2GP
Я создал новый пакет 2GP. Поскольку он будет выпущен в AppExchange, я реализовал общую проверку CRUD и FLS для каждого места, где я контактирую с базой данных в моем коде Apex.
например
MyAwsomeObject.getDescribe().isUpdateable();
MyAwesomeField.getDescribe().isUpdateable();
Я создаю новую версию пакета с -cключом для покрытия тестами Apex, но тесты не проходят из-за проверок разрешений FLS. CRUD-проверки проходят нормально.
Из документации сборка 2GP идет следующим образом:
- Создана новая недоступная временная организация.
- Метаданные отправляются в рабочую организацию.
- Испытания проходят.
- Запустится сценарий после установки.
Поэтому я не вижу способа назначить пользователю разрешения FLS от имени того, кто выполняет тесты.
Сборка пакета -cбез проверок FLS или без них работает отлично.
Есть ли способ обойти эту проверку ДУТ, предоставить доступ ДУТ к работающему пользователю или любое другое решение?
Ответы
Таким образом, в тестах 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);
Но - это предполагает, что вы включаете в комплект пермский набор. Если нет, вам, вероятно, придется подождать появления этой новой функции (или применить к пилотной версии), которая позволит вам включать не упакованные метаданные в процесс создания пакета при создании рабочей организации.