Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- trigger AssignPermissionSet on User (after insert,after Update) {
- PermissionSet pereset = [SELECT Id FROM PermissionSet WHERE Label ='SBU Impact Visible'];
- Set<ID> addIds = new Set<Id>(),
- removeIds = new Set<Id>(),
- roleIds = new Map<Id, UserRole>([
- SELECT Id FROM UserRole
- WHERE Name LIKE '%E&C%' OR Name LIKE '%Commerical Ops%' OR Name LIKE
- '%Energy & Chemicals%' OR Name LIKE '%All Fluor%'
- OR Name LIKE '%System Administrator%'
- ]).keySet();
- for(User record: Trigger.new) {
- (record.IsActive && roleIds.contains(record.UserRoleId)? addIds: removeIds).add(record.Id);
- }
- PermissionSetAssignment[] permissionSetList = new PermissionSetAssignment[0];
- addIds.removeAll(new Map<Id, AggregateResult>([SELECT AssigneeId Id FROM PermissionSetAssignment
- WHERE AssigneeId = :addIds AND PermissionSetId = :pereset.Id GROUP BY AssigneeId]).keySet());
- for(Id userId: addIds) {
- permissionSetList.add(new PermissionSetAssignment(PermissionSetId = pereset.id, AssigneeId = userId));
- }
- upsert permissionSetList;
- delete [SELECT Id FROM PermissionSetAssignment WHERE AssigneeId =:removeIds AND PermissionSetId =:pereset.Id];
- @isTest
- public class Test_AssignPermissionSet {
- public static testmethod void userTest(){
- // This code runs as the Standard User
- Profile profileId = [SELECT Id FROM Profile WHERE Name = 'Standard User' LIMIT 1];
- //User role creation
- UserRole r = new UserRole(DeveloperName = 'MyCustomRole', Name ='System Administrator');
- insert r;
- // Perform user data preparation.
- User usr = new User(LastName = 'TestAssignmentUser',
- FirstName='TestAssignUser',
- Alias = 'Test',
- Email = 'Test@gmail.com',
- Username = 'testAssign@gmail.com',
- ProfileId = profileId.id,
- TimeZoneSidKey = 'GMT',
- LanguageLocaleKey = 'en_US',
- EmailEncodingKey = 'UTF-8',
- LocaleSidKey = 'en_US',
- UserRoleId = r.Id
- );
- // Start the test, this changes governor limit context to
- test.startTest();
- // Insert the user records that cause the trigger to execute.
- insert usr;
- PermissionSetAssignment per=[select PermissionSetId,PermissionSet.Name,PermissionSet.label,AssigneeId from PermissionSetAssignment where Assignee.Id =:usr.id limit 1];
- // Comparing Permission set userId with Inserted UserId
- // This indicates Permission set created for that Inserted User
- system.assertEquals(usr.Id,per.AssigneeId);
- PermissionSet permission=[SELECT Name,Label FROM PermissionSet where id=:per.PermissionSetId];
- system.assertEquals('SBU Impact Visible',permission.Label);
- // Stop the test, this changes limit context back to test from trigger.
- test.stopTest();
- }}
- trigger AssignPermissionSet on User (after insert, after Update) {
- PermissionSet pereset = [SELECT Id FROM PermissionSet WHERE Label ='SBU Impact Visible'];
- Set<Id> addIds = new Set<Id>();
- Set<Id> removeIds = new Set<Id>();
- Set<Id> roleIds = new Map<Id, UserRole>([
- SELECT Id
- FROM UserRole
- WHERE Name LIKE '%E&C%' OR Name LIKE '%Commerical Ops%' OR Name LIKE '%Energy & Chemicals%' OR Name LIKE '%All Fluor%'OR Name LIKE '%System Administrator%'
- ]).keySet();
- for(User record : Trigger.new) {
- if(record.IsActive && roleIds.contains(record.UserRoleId)) {
- addIds.add(record.Id):
- }
- else {
- removeIds.add(record.Id):
- }
- }
- PermissionSetAssignment[] permissionSetList = new PermissionSetAssignment[0];
- addIds.removeAll(new Map<Id, AggregateResult>([SELECT AssigneeId Id FROM PermissionSetAssignment WHERE AssigneeId = :addIds AND PermissionSetId = :pereset.Id GROUP BY AssigneeId]).keySet());
- for(Id userId: addIds) {
- permissionSetList.add(new PermissionSetAssignment(PermissionSetId = pereset.id, AssigneeId = userId));
- }
- upsert permissionSetList;
- delete [SELECT Id FROM PermissionSetAssignment WHERE AssigneeId =:removeIds AND PermissionSetId =:pereset.Id];
- }
- @IsTest
- public class Test_AssignPermissionSet {
- @IsTest
- public static void when_user_is_inserted_then_assign_permission_set(){
- Profile profileId = [SELECT Id FROM Profile WHERE Name = 'Standard User' LIMIT 1];
- UserRole r = new UserRole(DeveloperName = 'MyCustomRole', Name ='System Administrator');
- insert r;
- User usr = new User(LastName = 'TestAssignmentUser',
- FirstName='TestAssignUser',
- Alias = 'Test',
- Email = 'Test@gmail.com',
- Username = 'testAssign@gmail.com',
- ProfileId = profileId.id,
- TimeZoneSidKey = 'GMT',
- LanguageLocaleKey = 'en_US',
- EmailEncodingKey = 'UTF-8',
- LocaleSidKey = 'en_US',
- UserRoleId = r.Id
- );
- Test.startTest();
- insert usr;
- Test.stopTest();
- // Comparing Permission set userId with Inserted UserI. This indicates Permission set created for that Inserted User
- PermissionSetAssignment per = [SELECT PermissionSetId, PermissionSet.Name, PermissionSet.label, AssigneeId FROM PermissionSetAssignment WHERE Assignee.Id = :usr.id LIMIT 1];
- PermissionSet permission = [SELECT Name, Label FROM PermissionSet WHERE Id = :per.PermissionSetId];
- System.assertEquals(usr.Id,per.AssigneeId);
- System.assertEquals('SBU Impact Visible',permission.Label);
- }
Add Comment
Please, Sign In to add comment