Controllo FLS in 2GP

Sep 08 2020

Ho creato un nuovo pacchetto 2GP. Dato che sta per essere rilasciato su AppExchange, ho implementato un controllo CRUD e FLS generico per ogni luogo che contatto con il database nel mio codice Apex.

per esempio

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

Creo una nuova versione del pacchetto con la -cchiave per la copertura dei test Apex, ma i test falliscono a causa dei controlli dei permessi FLS. I controlli CRUD passano bene.

Dalla documentazione, la build 2GP va in questo modo:

  1. Viene creata una nuova organizzazione scratch inaccessibile.
  2. I metadati vengono inviati all'organizzazione scratch.
  3. I test vengono eseguiti.
  4. Lo script di post-installazione viene eseguito.

Quindi non vedo un modo per assegnare le autorizzazioni FLS all'utente per conto di chi esegue i test.

La creazione di un pacchetto senza -co senza controlli FLS funziona perfettamente.

C'è un modo per superare questo controllo FLS, consentire l'accesso FLS all'utente in esecuzione o qualsiasi altra soluzione?

Risposte

3 BritishBoyinDC Sep 08 2020 at 20:26

Quindi in Apex Tests, puoi utilizzare la funzione RunAs per farlo: in pratica, creare un utente nel test, assegnare un profilo di base (il nuovo accesso minimo è utile per questo), quindi assegnare il set di autorizzazioni ed eseguire il prova ad es

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

Ma - questo presume che tu includa il set di permessi nel pacchetto. In caso contrario, probabilmente dovrai attendere questa nuova funzionalità (o applicarla al progetto pilota) che ti consentirà di includere metadati non pacchettizzati nel processo di creazione del pacchetto quando compila l'organizzazione zero.