使いどころ
System.runAsを用いたユーザコンテクストでの実行テストの一環として、特定の権限セットが割り当てられた状態での実行をテストする。
結論
runAsメソッドの前に下記のコードを入れ込む。
PermissionSet ps = [SELECT Id FROM PermissionSet WHERE Name = '権限セット名'];
insert new PermissionSetAssignment(AssigneeId =ユーザID, PermissionSetId = ps.Id);
サンプルコード
String uniqueUserName = 'standarduser' + DateTime.now().getTime() + '@testorg.com';
Profile p = [SELECT Id FROM Profile WHERE Name='プロファイル名'];
User u = new User(
Alias = 'standt',
Email='standarduser@testorg.com',
EmailEncodingKey='UTF-8',
LastName='Testing',
LanguageLocaleKey='ja_JP',
LocaleSidKey='ja_JP',
ProfileId = p.Id,
TimeZoneSidKey='Asia/Tokyo',
UserName=uniqueUserName);
insert u;
PermissionSet ps = [SELECT Id FROM PermissionSet WHERE Name = '権限セット名'];
insert new PermissionSetAssignment(AssigneeId = u.Id, PermissionSetId = ps.Id);
System.runAs(u) {
//具体的な処理
}