@isTest public class SmeConfigurationTriggerTest { @testSetup static void setupData() { // Get Standard User Profile Profile p = [ SELECT Id FROM Profile WHERE Name = 'Standard User' LIMIT 1 ]; // Create Test User User testUser = new User( FirstName = 'Test', LastName = 'User', Email = 'testuser@example.com', Username = 'testuser' + System.currentTimeMillis() + '@example.com', Alias = 'tuser', TimeZoneSidKey = 'America/Los_Angeles', LocaleSidKey = 'en_US', EmailEncodingKey = 'UTF-8', LanguageLocaleKey = 'en_US', ProfileId = p.Id ); insert testUser; } @isTest static void testPermissionSetAssignmentCreated() { // Fetch Test User User testUser = [ SELECT Id FROM User WHERE Email = 'testuser@example.com' LIMIT 1 ]; // Fetch Permission Set PermissionSet ps = [ SELECT Id FROM PermissionSet WHERE Name = 'Shopify_Made_Easy_Modify_All' LIMIT 1 ]; System.runAs(testUser) { Test.startTest(); // Insert Configuration Record HIC_ShopifySync__HIC_Configuration__c conf = new HIC_ShopifySync__HIC_Configuration__c( Name = 'Default' ); insert conf; Test.stopTest(); } // Verify Permission Set Assignment List psaList = [ SELECT Id, AssigneeId, PermissionSetId FROM PermissionSetAssignment WHERE AssigneeId = :testUser.Id AND PermissionSetId = :ps.Id ]; } @isTest static void testNoAssignmentForNonDefaultName() { // Fetch Test User User testUser = [ SELECT Id FROM User WHERE Email = 'testuser@example.com' LIMIT 1 ]; // Fetch Permission Set PermissionSet ps = [ SELECT Id FROM PermissionSet WHERE Name = 'Shopify_Made_Easy_Modify_All' LIMIT 1 ]; System.runAs(testUser) { Test.startTest(); // Insert Non-Default Configuration HIC_ShopifySync__HIC_Configuration__c conf = new HIC_ShopifySync__HIC_Configuration__c( Name = 'Custom' ); insert conf; Test.stopTest(); } // Verify No Permission Set Assignment Created List psaList = [ SELECT Id FROM PermissionSetAssignment WHERE AssigneeId = :testUser.Id AND PermissionSetId = :ps.Id ]; } @isTest static void testTokenResetFlagWipesConfigurationTokens() { // Seed the Configuration custom setting with live tokens. insert new HIC_ShopifySync__Configuration__c( Name = 'Default', HIC_ShopifySync__Access_Token__c = 'live_access', HIC_ShopifySync__Refresh_Token__c = 'live_refresh' ); Test.startTest(); // Admin sets the reset flag on the 'Default' HIC_Configuration record. HIC_ShopifySync__HIC_Configuration__c conf = new HIC_ShopifySync__HIC_Configuration__c( Name = 'Default', HIC_ShopifySync__Shopify_Store_Details__c = 'Token' ); insert conf; Test.stopTest(); // Tokens on the Configuration setting must be blanked. HIC_ShopifySync__Configuration__c cfg = [ SELECT HIC_ShopifySync__Access_Token__c, HIC_ShopifySync__Refresh_Token__c FROM HIC_ShopifySync__Configuration__c WHERE Name = 'Default' LIMIT 1 ]; System.assert(String.isBlank(cfg.HIC_ShopifySync__Access_Token__c), 'access token should be cleared'); System.assert(String.isBlank(cfg.HIC_ShopifySync__Refresh_Token__c), 'refresh token should be cleared'); // The flag must be consumed so it cannot fire again. HIC_ShopifySync__HIC_Configuration__c saved = [ SELECT HIC_ShopifySync__Shopify_Store_Details__c FROM HIC_ShopifySync__HIC_Configuration__c WHERE Id = :conf.Id LIMIT 1 ]; System.assert(String.isBlank(saved.HIC_ShopifySync__Shopify_Store_Details__c), 'flag should be consumed'); } @isTest static void testNoResetWhenFlagAbsent() { insert new HIC_ShopifySync__Configuration__c( Name = 'Default', HIC_ShopifySync__Access_Token__c = 'keep_access', HIC_ShopifySync__Refresh_Token__c = 'keep_refresh' ); Test.startTest(); insert new HIC_ShopifySync__HIC_Configuration__c(Name = 'Default'); // no flag Test.stopTest(); HIC_ShopifySync__Configuration__c cfg = [ SELECT HIC_ShopifySync__Access_Token__c, HIC_ShopifySync__Refresh_Token__c FROM HIC_ShopifySync__Configuration__c WHERE Name = 'Default' LIMIT 1 ]; System.assertEquals('keep_access', cfg.HIC_ShopifySync__Access_Token__c, 'tokens must be untouched without the flag'); System.assertEquals('keep_refresh', cfg.HIC_ShopifySync__Refresh_Token__c); } @isTest static void testNoDuplicatePermissionSetAssignment() { // Fetch Test User User testUser = [ SELECT Id FROM User WHERE Email = 'testuser@example.com' LIMIT 1 ]; // Fetch Permission Set PermissionSet ps = [ SELECT Id FROM PermissionSet WHERE Name = 'Shopify_Made_Easy_Modify_All' LIMIT 1 ]; // Manually assign Permission Set insert new PermissionSetAssignment( AssigneeId = testUser.Id, PermissionSetId = ps.Id ); System.runAs(testUser) { Test.startTest(); // Insert Configuration Record HIC_ShopifySync__HIC_Configuration__c conf = new HIC_ShopifySync__HIC_Configuration__c( Name = 'Default' ); insert conf; Test.stopTest(); } // Verify only one assignment exists List psaList = [ SELECT Id FROM PermissionSetAssignment WHERE AssigneeId = :testUser.Id AND PermissionSetId = :ps.Id ]; } }