Beispiel #1
0
        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();
        }
Beispiel #2
0
        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();
        }