2GP'de FLS kontrolü
Yeni bir 2GP paketi oluşturdum. AppExchange'de yayınlanacağından, Apex kodumda Veritabanı ile iletişim kurduğum her yer için genel bir CRUD ve FLS kontrolü uyguladım.
Örneğin
MyAwsomeObject.getDescribe().isUpdateable();
MyAwesomeField.getDescribe().isUpdateable();
-cApex test kapsamı için anahtar içeren yeni bir paket sürümü oluşturuyorum , ancak testler FLS izin kontrolleri nedeniyle başarısız oluyor. CRUD kontrolleri gayet iyi geçti.
Belgelerden, 2GP derlemesi şu şekilde gerçekleşir:
- Erişilemeyen yeni bir sıfırlama organı oluşturulur.
- Meta veriler sıfırdan kuruluşa aktarılır.
- Testler yapılır.
- Yükleme sonrası komut dosyası çalışır.
Bu yüzden, testlerin çalıştığı kişi adına kullanıcıya FLS izinleri atamanın bir yolunu görmüyorum.
-cFLS kontrolleri olmadan veya olmadan bir paket oluşturmak mükemmel bir şekilde çalışır.
Bu FLS kontrolünün üstesinden gelmenin, çalışan kullanıcıya FLS erişimi vermenin veya başka bir çözüme ulaşmanın bir yolu var mı?
Yanıtlar
Yani Apex Testlerinde, bunu yapmak için RunAs özelliğini kullanabilirsiniz - temel olarak, testte bir kullanıcı oluşturabilir, temel bir profil atayabilir (yeni Minimum Erişim bunun için yararlıdır) ve ardından izin setini atayabilir ve örneğin test et
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);
Ancak - bu, pakete Perm Setini dahil ettiğinizi varsayar. Değilse, büyük olasılıkla bu yeni özelliği beklemeniz (veya pilot uygulamaya başvurmanız) gerekecek, bu da sıfırdan kuruluş oluştururken paket oluşturma sürecine paketlenmemiş meta verileri eklemenize izin verecektir.