Memos About SalesForce

Salesforceにハマってたこと!

Salesforce テストクラス エラー Internal Salesforce.com Error

こんにちは、管理人の@Salesforce.Zです。

別の記事で、テストクラスで、外部ユーザ(パートナーコミュニティやカスタマーコミュニティユーザ)をテストする時にどう作成するかを共有しました。

今回、その外部ユーザに権限セットを割り当てた場合のテスト例を共有したいと思います。

読んだら得ること

★ テストクラスで発生したInternal Salesforce.com Errorの解消方法

目次

権限セットをもつ外部ユーザ

外部ユーザに特別のアクセス権を付与するには、権限セットが挙げられる。

テストクラスを書く時に

単純に下記の手順で、用意しても、アクセス権がないとInternal Saleforce.com Errorが発生するはず

もちろん、このエラーの原因はほかにもあるが、根本的には権限の問題ではないかに見える

  • 外部取引先の所有者の用意

  • 取引先を用意(上記のユーザを所有者にする)

  • 上記の取引先の取引先責任者を用意する

  • 外部ユーザを用意する(ロール設定しない、上記の取引先責任者とリレーションする)

上記の流れをテストクラスで実現するにはこの記事を参考にしてください。

テストクラスで権限セットを用意したテスト外部ユーザに割り当て

一部抜粋

String PERMISSIONSET_NAME = 'your_permission_set_api_name'
// 権限セットを取得
PermissionSet ps = [SELECT Id FROM PermissionSet WHERE Name =:PERMISSIONSET_NAME];
// ユーザに権限セットを割り当て(execute_userは事前に作成した外部ユーザである ロールは設定しないよ)
insert new PermissionSetAssignment(AssigneeId = execute_user.id, PermissionSetId = ps.Id);

割り当てしたい権限セットをクエリで取得し、準備した外部ユーザと取得した権限セットを

PermissionSetAssignmentに設定し、追加すれば、ユーザと権限セットが結ぶになる

リファレンス

User と PermissionSet との間の関連を表すPermissionSetAssignment