FLS sprawdź w 2GP

Sep 08 2020

Utworzyłem nowy pakiet 2GP. Ponieważ ma trafić do AppExchange, zaimplementowałem w moim kodzie Apex ogólny sprawdzanie CRUD i FLS dla każdego miejsca, z którym kontaktuję się z bazą danych.

na przykład

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

Buduję nową wersję pakietu z -ckluczem do pokrycia testów Apex, ale testy kończą się niepowodzeniem z powodu kontroli uprawnień FLS. Kontrole CRUD kończą się pomyślnie.

Z dokumentacji wynika, że ​​kompilacja 2GP wygląda następująco:

  1. Tworzona jest nowa niedostępna organizacja scratch.
  2. Metadane są wypychane do pierwotnej organizacji.
  3. Trwają testy.
  4. Uruchomiony zostanie skrypt poinstalacyjny.

Dlatego nie widzę sposobu, aby przypisać uprawnienia FLS użytkownikowi w imieniu tego, kto testuje.

Tworzenie pakietu bez -club bez kontroli FLS działa doskonale.

Czy istnieje sposób, aby obejść tę kontrolę FLS, dać FLS dostęp do uruchomionego użytkownika lub inne rozwiązanie?

Odpowiedzi

3 BritishBoyinDC Sep 08 2020 at 20:26

Tak więc w testach Apex możesz użyć do tego funkcji RunAs - w zasadzie utwórz użytkownika w teście, przypisz podstawowy profil (nowy Minimalny dostęp jest do tego pomocny), a następnie przypisz zestaw uprawnień i uruchom test np

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);

Ale - to zakłada, że ​​dołączasz zestaw Perm w pakiecie. Jeśli nie, prawdopodobnie będziesz musiał poczekać na tę nową funkcję (lub zastosować ją do programu pilotażowego), która pozwoli Ci uwzględnić nieopakowane metadane w procesie tworzenia pakietu, gdy buduje on organizację podstawową.