SyncMadeEasy/force-app/main/default/classes/SmeConfigurationTriggerTest...

226 lines
6.6 KiB
OpenEdge ABL

@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<PermissionSetAssignment> 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<PermissionSetAssignment> 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<PermissionSetAssignment> psaList = [
SELECT Id
FROM PermissionSetAssignment
WHERE AssigneeId = :testUser.Id
AND PermissionSetId = :ps.Id
];
}
}