FLS sprawdź w 2GP
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:
- Tworzona jest nowa niedostępna organizacja scratch.
- Metadane są wypychane do pierwotnej organizacji.
- Trwają testy.
- 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
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ą.