Guest User

Untitled

a guest
Aug 1st, 2018
406
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.66 KB | None | 0 0
  1. trigger AssignPermissionSet on User (after insert,after Update) {
  2. PermissionSet pereset = [SELECT Id FROM PermissionSet WHERE Label ='SBU Impact Visible'];
  3. Set<ID> addIds = new Set<Id>(),
  4. removeIds = new Set<Id>(),
  5. roleIds = new Map<Id, UserRole>([
  6. SELECT Id FROM UserRole
  7. WHERE Name LIKE '%E&C%' OR Name LIKE '%Commerical Ops%' OR Name LIKE
  8. '%Energy & Chemicals%' OR Name LIKE '%All Fluor%'
  9. OR Name LIKE '%System Administrator%'
  10. ]).keySet();
  11. for(User record: Trigger.new) {
  12. (record.IsActive && roleIds.contains(record.UserRoleId)? addIds: removeIds).add(record.Id);
  13. }
  14. PermissionSetAssignment[] permissionSetList = new PermissionSetAssignment[0];
  15. addIds.removeAll(new Map<Id, AggregateResult>([SELECT AssigneeId Id FROM PermissionSetAssignment
  16. WHERE AssigneeId = :addIds AND PermissionSetId = :pereset.Id GROUP BY AssigneeId]).keySet());
  17.  
  18. for(Id userId: addIds) {
  19. permissionSetList.add(new PermissionSetAssignment(PermissionSetId = pereset.id, AssigneeId = userId));
  20. }
  21. upsert permissionSetList;
  22. delete [SELECT Id FROM PermissionSetAssignment WHERE AssigneeId =:removeIds AND PermissionSetId =:pereset.Id];
  23.  
  24. @isTest
  25. public class Test_AssignPermissionSet {
  26. public static testmethod void userTest(){
  27. // This code runs as the Standard User
  28. Profile profileId = [SELECT Id FROM Profile WHERE Name = 'Standard User' LIMIT 1];
  29. //User role creation
  30. UserRole r = new UserRole(DeveloperName = 'MyCustomRole', Name ='System Administrator');
  31. insert r;
  32. // Perform user data preparation.
  33. User usr = new User(LastName = 'TestAssignmentUser',
  34. FirstName='TestAssignUser',
  35. Alias = 'Test',
  36. Email = 'Test@gmail.com',
  37. Username = 'testAssign@gmail.com',
  38. ProfileId = profileId.id,
  39. TimeZoneSidKey = 'GMT',
  40. LanguageLocaleKey = 'en_US',
  41. EmailEncodingKey = 'UTF-8',
  42. LocaleSidKey = 'en_US',
  43. UserRoleId = r.Id
  44. );
  45. // Start the test, this changes governor limit context to
  46. test.startTest();
  47. // Insert the user records that cause the trigger to execute.
  48. insert usr;
  49. PermissionSetAssignment per=[select PermissionSetId,PermissionSet.Name,PermissionSet.label,AssigneeId from PermissionSetAssignment where Assignee.Id =:usr.id limit 1];
  50. // Comparing Permission set userId with Inserted UserId
  51. // This indicates Permission set created for that Inserted User
  52. system.assertEquals(usr.Id,per.AssigneeId);
  53. PermissionSet permission=[SELECT Name,Label FROM PermissionSet where id=:per.PermissionSetId];
  54. system.assertEquals('SBU Impact Visible',permission.Label);
  55. // Stop the test, this changes limit context back to test from trigger.
  56. test.stopTest();
  57. }}
  58.  
  59. trigger AssignPermissionSet on User (after insert, after Update) {
  60. PermissionSet pereset = [SELECT Id FROM PermissionSet WHERE Label ='SBU Impact Visible'];
  61.  
  62. Set<Id> addIds = new Set<Id>();
  63. Set<Id> removeIds = new Set<Id>();
  64. Set<Id> roleIds = new Map<Id, UserRole>([
  65. SELECT Id
  66. FROM UserRole
  67. 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%'
  68. ]).keySet();
  69.  
  70. for(User record : Trigger.new) {
  71. if(record.IsActive && roleIds.contains(record.UserRoleId)) {
  72. addIds.add(record.Id):
  73. }
  74. else {
  75. removeIds.add(record.Id):
  76. }
  77. }
  78.  
  79. PermissionSetAssignment[] permissionSetList = new PermissionSetAssignment[0];
  80. addIds.removeAll(new Map<Id, AggregateResult>([SELECT AssigneeId Id FROM PermissionSetAssignment WHERE AssigneeId = :addIds AND PermissionSetId = :pereset.Id GROUP BY AssigneeId]).keySet());
  81.  
  82. for(Id userId: addIds) {
  83. permissionSetList.add(new PermissionSetAssignment(PermissionSetId = pereset.id, AssigneeId = userId));
  84. }
  85.  
  86. upsert permissionSetList;
  87.  
  88. delete [SELECT Id FROM PermissionSetAssignment WHERE AssigneeId =:removeIds AND PermissionSetId =:pereset.Id];
  89. }
  90.  
  91. @IsTest
  92. public class Test_AssignPermissionSet {
  93.  
  94. @IsTest
  95. public static void when_user_is_inserted_then_assign_permission_set(){
  96. Profile profileId = [SELECT Id FROM Profile WHERE Name = 'Standard User' LIMIT 1];
  97. UserRole r = new UserRole(DeveloperName = 'MyCustomRole', Name ='System Administrator');
  98. insert r;
  99.  
  100. User usr = new User(LastName = 'TestAssignmentUser',
  101. FirstName='TestAssignUser',
  102. Alias = 'Test',
  103. Email = 'Test@gmail.com',
  104. Username = 'testAssign@gmail.com',
  105. ProfileId = profileId.id,
  106. TimeZoneSidKey = 'GMT',
  107. LanguageLocaleKey = 'en_US',
  108. EmailEncodingKey = 'UTF-8',
  109. LocaleSidKey = 'en_US',
  110. UserRoleId = r.Id
  111. );
  112.  
  113. Test.startTest();
  114. insert usr;
  115. Test.stopTest();
  116.  
  117. // Comparing Permission set userId with Inserted UserI. This indicates Permission set created for that Inserted User
  118. PermissionSetAssignment per = [SELECT PermissionSetId, PermissionSet.Name, PermissionSet.label, AssigneeId FROM PermissionSetAssignment WHERE Assignee.Id = :usr.id LIMIT 1];
  119. PermissionSet permission = [SELECT Name, Label FROM PermissionSet WHERE Id = :per.PermissionSetId];
  120. System.assertEquals(usr.Id,per.AssigneeId);
  121. System.assertEquals('SBU Impact Visible',permission.Label);
  122. }
Add Comment
Please, Sign In to add comment