function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
kirankumarreddy punurukirankumarreddy punuru 

System.DmlException: Insert failed. First exception on row 0; first error: INVALID_CROSS_REFERENCE_KEY, Invalid permission set ID: {0}.: []

Hi,
can someone tell me how to solve this exception:
System.DmlException: Insert failed. First exception on row 0; first error: INVALID_CROSS_REFERENCE_KEY, Invalid permission set ID: {0}.: []
My test class is:
@istest
global class OpportunityTest{
static testMethod PermissionSetAssignment getPermissionA(){
         Profile p = [SELECT Id FROM Profile WHERE Name='Standard User']; 
        User u = new User(Alias = 'dardt', Email='normaluser@testorg.com', 
        EmailEncodingKey='UTF-8', LastName='Testuser', LanguageLocaleKey='en_US', 
        LocaleSidKey='en_US', ProfileId = p.Id, 
        TimeZoneSidKey='America/Los_Angeles', UserName='normaluser@testorg.com');
        insert u;  
        
        
        // creating one permissionsetassignment
      
        PermissionSetAssignment psg = new PermissionSetAssignment();
        psg.AssigneeId =u.Id;
        insert psg;
        return psg;
        }
Arunkumar RArunkumar R
Hi Kiran,

You need to query a permission set, then assign a member on this permission set.
 
@istest
global class OpportunityTest{
static testMethod PermissionSetAssignment getPermissionA(){
         Profile p = [SELECT Id FROM Profile WHERE Name='Standard User']; 
        User u = new User(Alias = 'dardt', Email='normaluser@testorg.com', 
        EmailEncodingKey='UTF-8', LastName='Testuser', LanguageLocaleKey='en_US', 
        LocaleSidKey='en_US', ProfileId = p.Id, 
        TimeZoneSidKey='America/Los_Angeles', UserName='normaluser@testorg.com');
        insert u;  
        
       // Query your permission set name from Organization that your want to test.
        PermissionSet ps = [SELECT Id FROM PermissionSet WHERE Name = 'AccountRating'];
       
        // Assign the above inserted user for the above Permission Set.
        PermissionSetAssignment psa = new PermissionSetAssignment();
        psa.AssigneeId = u.Id;
        psa.PermissionSetId = ps.Id;
        insert psa;
        return psa;
        }
}

You can also check out the below link,
http://salesforcekings.blogspot.in/2015/05/how-to-test-your-permission-set-logic.html