public void TestOnDeleteAccessRule() { bool success = true; string subjectName = "Role" + Guid.NewGuid(); string typeName = "Type" + Guid.NewGuid(); string reportName = "Report" + Guid.NewGuid(); var mockAuditLog = new Mock <IAuditLog>(MockBehavior.Strict); mockAuditLog.Setup(al => al.OnDeleteAccessRule(success, subjectName, typeName, reportName)); var eventTarget = new AuditLogAccessRuleEventTarget(mockAuditLog.Object); var subject = new Role { Name = subjectName }; var type = new EntityType { Name = typeName }; var report = new Report { Name = reportName }; var accessRule = new AccessRule { AllowAccessBy = subject.As <Subject>(), ControlAccess = type.As <SecurableEntity>(), AccessRuleReport = report }; IDictionary <string, object> state = new Dictionary <string, object>(); eventTarget.GatherAuditLogEntityDetailsForDelete(accessRule, state); eventTarget.WriteDeleteAuditLogEntries(success, accessRule.Id, state); mockAuditLog.VerifyAll(); }
public void TestOnChangeAccessRulePermissions() { bool success = true; string subjectName = "Role" + Guid.NewGuid(); string typeName = "Type" + Guid.NewGuid(); string reportName = "Report" + Guid.NewGuid(); var read = Entity.Get <Permission>("read"); var delete = Entity.Get <Permission>("delete"); ISet <string> oldPerm = new SortedSet <string> { read.Name }; ISet <string> newPerm = new SortedSet <string> { read.Name, delete.Name }; var mockAuditLog = new Mock <IAuditLog>(MockBehavior.Strict); mockAuditLog.Setup(al => al.OnChangeAccessRulePermissions(success, subjectName, typeName, reportName, It.Is <ISet <string> >(p => oldPerm.SetEquals(p)), It.Is <ISet <string> >(p => newPerm.SetEquals(p)))); var eventTarget = new AuditLogAccessRuleEventTarget(mockAuditLog.Object); var subject = new Role { Name = subjectName }; var type = new EntityType { Name = typeName }; var report = new Report { Name = reportName }; var accessRule = new AccessRule { AllowAccessBy = subject.As <Subject>(), ControlAccess = type.As <SecurableEntity>(), AccessRuleReport = report }; accessRule.PermissionAccess.Add(read); accessRule.Save(); // Change permissions accessRule.PermissionAccess.Add(delete); IDictionary <string, object> state = new Dictionary <string, object>(); eventTarget.GatherAuditLogEntityDetailsForSave(accessRule, state); eventTarget.WriteSaveAuditLogEntries(success, accessRule.Id, state); mockAuditLog.VerifyAll(); }