public void SetSddlFormAllowsFlags ()
		{
			TestSecurity security = new TestSecurity ();
			security.SetSecurityDescriptorSddlForm ("G:BA", AccessControlSections.Group | AccessControlSections.Owner);
			Assert.AreEqual ("", security.GetSecurityDescriptorSddlForm (AccessControlSections.Owner));
			Assert.AreEqual ("G:BA", security.GetSecurityDescriptorSddlForm (AccessControlSections.Group));
		}
        public void SetSddlFormAllowsFlags()
        {
            TestSecurity security = new TestSecurity();

            security.SetSecurityDescriptorSddlForm("G:BA", AccessControlSections.Group | AccessControlSections.Owner);
            Assert.AreEqual("", security.GetSecurityDescriptorSddlForm(AccessControlSections.Owner));
            Assert.AreEqual("G:BA", security.GetSecurityDescriptorSddlForm(AccessControlSections.Group));
        }
		public void SetSddlForm ()
		{
			TestSecurity security = new TestSecurity ();

			SecurityIdentifier groupSid = new SecurityIdentifier ("WD");
			SecurityIdentifier userSid = new SecurityIdentifier ("SY");

			security.SetGroup (groupSid);
			security.SetOwner (userSid);
			Assert.AreEqual ("G:WD", security.GetSecurityDescriptorSddlForm (AccessControlSections.Group));
			Assert.AreEqual ("O:SY", security.GetSecurityDescriptorSddlForm (AccessControlSections.Owner));
			security.SetSecurityDescriptorSddlForm ("O:BG", AccessControlSections.Owner);
			Assert.AreEqual ("O:BG", security.GetSecurityDescriptorSddlForm (AccessControlSections.Owner));
			Assert.AreEqual (new SecurityIdentifier ("BG"), security.GetOwner (typeof (SecurityIdentifier)));
		}
        public void SetSddlForm()
        {
            TestSecurity security = new TestSecurity();

            SecurityIdentifier groupSid = new SecurityIdentifier("WD");
            SecurityIdentifier userSid  = new SecurityIdentifier("SY");

            security.SetGroup(groupSid);
            security.SetOwner(userSid);
            Assert.AreEqual("G:WD", security.GetSecurityDescriptorSddlForm(AccessControlSections.Group));
            Assert.AreEqual("O:SY", security.GetSecurityDescriptorSddlForm(AccessControlSections.Owner));
            security.SetSecurityDescriptorSddlForm("O:BG", AccessControlSections.Owner);
            Assert.AreEqual("O:BG", security.GetSecurityDescriptorSddlForm(AccessControlSections.Owner));
            Assert.AreEqual(new SecurityIdentifier("BG"), security.GetOwner(typeof(SecurityIdentifier)));
        }
        public void DefaultsForSddlAndBinary()
        {
            TestSecurity security = new TestSecurity();

            Assert.AreEqual("D:", security.GetSecurityDescriptorSddlForm(AccessControlSections.All));
            Assert.AreEqual(28, security.GetSecurityDescriptorBinaryForm().Length);
        }
        public void ModifyAccessRuleAllowsDerivedTypeAndCallsModifyAccessButNothingChanges()
        {
            bool modifiedRet, modifiedOut;
            SecurityIdentifier everyoneSid = new SecurityIdentifier("WD");
            TestSecurity       security    = new TestSecurity();

            DerivedAccessRule rule = new DerivedAccessRule(everyoneSid, TestRights.One, AccessControlType.Allow);

            modifiedRet = security.ModifyAccessRule(AccessControlModification.Add, rule, out modifiedOut);
            Assert.AreEqual(modifiedRet, modifiedOut);
            Assert.IsTrue(modifiedRet);

            Assert.IsTrue(security.modify_access_called);
            Assert.AreEqual("D:", security.GetSecurityDescriptorSddlForm(AccessControlSections.All));

            // (1) There is no external abstract/virtual 'get collection',
            // (2) The overrides in this test call this base class, which does not change it, and
            // (3) There are methods based on the collection value such as GetSecurityDescriptorSddlForm.
            // Conclusion: Collection is internal and manipulated by derived classes.
        }
		public void DefaultsForSddlAndBinary ()
		{
			TestSecurity security = new TestSecurity ();
			Assert.AreEqual ("D:", security.GetSecurityDescriptorSddlForm (AccessControlSections.All));
			Assert.AreEqual (28, security.GetSecurityDescriptorBinaryForm ().Length);
		}
		public void ModifyAccessRuleAllowsDerivedTypeAndCallsModifyAccessButNothingChanges ()
		{
			bool modifiedRet, modifiedOut;
			SecurityIdentifier everyoneSid = new SecurityIdentifier ("WD");
			TestSecurity security = new TestSecurity ();

			DerivedAccessRule rule = new DerivedAccessRule (everyoneSid, TestRights.One, AccessControlType.Allow);

			modifiedRet = security.ModifyAccessRule (AccessControlModification.Add, rule, out modifiedOut);
			Assert.AreEqual (modifiedRet, modifiedOut);
			Assert.IsTrue (modifiedRet);

			Assert.IsTrue (security.modify_access_called);
			Assert.AreEqual ("D:", security.GetSecurityDescriptorSddlForm (AccessControlSections.All));

			// (1) There is no external abstract/virtual 'get collection',
			// (2) The overrides in this test call this base class, which does not change it, and
			// (3) There are methods based on the collection value such as GetSecurityDescriptorSddlForm.
			// Conclusion: Collection is internal and manipulated by derived classes.
		}