/** * Coverage for CustomSettingRecordInsert.grantOAuthCallbackGuestAccess() — * the post-install logic that grants the Site Guest User access to the * Shopify OAuth callback REST endpoint. */ @isTest private class OAuthGuestAccess_Test { @isTest static void grantsGuestAccess() { Test.startTest(); try { CustomSettingRecordInsert.grantOAuthCallbackGuestAccess(); } catch (Exception e) { System.assert(false, 'Should not throw: ' + e.getMessage()); } Test.stopTest(); // The permission set should have been created List ps = [ SELECT Id FROM PermissionSet WHERE Name = 'SME_OAuthCallbackAccess' ]; System.assertEquals(1, ps.size(), 'Permission set should be created'); // Object permission should be granted List op = [ SELECT Id FROM ObjectPermissions WHERE ParentId = :ps[0].Id AND SobjectType = 'HIC_ShopifySync__HIC_Configuration__c' ]; System.assertEquals(1, op.size(), 'Config object permission should be granted'); } @isTest static void idempotentOnRerun() { // Running twice must not create duplicates or throw Test.startTest(); CustomSettingRecordInsert.grantOAuthCallbackGuestAccess(); CustomSettingRecordInsert.grantOAuthCallbackGuestAccess(); Test.stopTest(); List ps = [ SELECT Id FROM PermissionSet WHERE Name = 'SME_OAuthCallbackAccess' ]; System.assertEquals(1, ps.size(), 'Permission set should not be duplicated'); } }