2GP में FLS चेक
मैंने एक नया 2GP पैकेज बनाया है। चूंकि यह AppExchange को जारी किया जा रहा है, मैंने अपने एपेक्स कोड में डेटाबेस के साथ संपर्क करने वाले प्रत्येक स्थान के लिए एक सामान्य CRUD और FLS चेक लागू किया है।
जैसे
MyAwsomeObject.getDescribe().isUpdateable();
MyAwesomeField.getDescribe().isUpdateable();
मैं -cएपेक्स परीक्षण कवरेज के लिए कुंजी के साथ एक नया पैकेज संस्करण बनाता हूं , लेकिन एफएलएस की अनुमति की जांच के कारण परीक्षण विफल हो जाते हैं। CRUD चेक पास ठीक है।
प्रलेखन से, 2GP बिल्ड इस तरह से होता है:
- एक नया दुर्गम खरोंच अंग बनाया गया है।
- मेटाडेटा को खरोंच अंग में धकेल दिया जाता है।
- टेस्ट चलते हैं।
- पोस्ट-इंस्टॉल स्क्रिप्ट चलती है।
इसलिए मुझे यह देखने के लिए कि परीक्षण चल रहे हैं, की ओर से उपयोगकर्ता को FLS अनुमतियाँ असाइन करने का कोई तरीका नहीं दिखता है।
बिना -cया बिना एफएलएस चेक के पैकेज बनाना पूरी तरह से काम करता है।
क्या इस FLS चेक को पार करने का कोई तरीका है, FLS को रनिंग यूज़र या किसी अन्य समाधान तक पहुँचा सकता है?
जवाब
तो एपेक्स टेस्ट में, आप ऐसा करने के लिए रनएएस फीचर का उपयोग कर सकते हैं - मूल रूप से, परीक्षण में एक उपयोगकर्ता बनाएं, एक मूल प्रोफ़ाइल असाइन करें (नया न्यूनतम एक्सेस इसके लिए उपयोगी है), और फिर अनुमति सेट असाइन करें, और चलाएं परीक्षा जैसे
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);
लेकिन - यह मानता है कि आप पैकेज में पर्म सेट सहित हैं। यदि नहीं, तो आपको संभवतः इस नई सुविधा के लिए प्रतीक्षा करने की आवश्यकता होगी (या पायलट पर लागू होती है) जो आपको स्क्रैच ऑर्ग बनाते समय पैकेज निर्माण प्रक्रिया में गैर = पैकेज्ड मेटाडेटा को शामिल करने देगी।