public static SemaphoreSecurity GetAccessControl(this Semaphore semaphore) { if (semaphore == null) { throw new ArgumentNullException(nameof(semaphore)); } return(semaphore.GetAccessControl()); }
public void PermissionsActuallyWork () { if (PlatformID.Win32NT != Environment.OSVersion.Platform) { Assert.Ignore (); } bool createdNew; SemaphoreSecurity security; string name = @"Local\MonoTestSemaphore"; using (Semaphore semaphore = new Semaphore (1, 1, name, out createdNew)) { Assert.IsFalse (semaphore.SafeWaitHandle.IsInvalid); Assert.IsTrue (createdNew); // Make sure our later error will be due to permissions and not some sharing bug. bool createdAnotherNew; using (Semaphore anotherSemaphore = new Semaphore (1, 1, name, out createdAnotherNew)) { Assert.IsFalse (anotherSemaphore.SafeWaitHandle.IsInvalid); Assert.IsFalse (createdAnotherNew); } // Let's make a deny all. security = semaphore.GetAccessControl (); foreach (SemaphoreAccessRule rule in security.GetAccessRules (true, false, typeof (SecurityIdentifier))) { security.RemoveAccessRuleSpecific (rule); } Assert.AreEqual (0, security.GetAccessRules (true, false, typeof (SecurityIdentifier)).Count); semaphore.SetAccessControl (security); security = semaphore.GetAccessControl (); Assert.AreEqual (0, security.GetAccessRules (true, false, typeof (SecurityIdentifier)).Count); // MS.NET will throw on the first line below. // For Mono testing the latter verifies the rest until the Semaphore bug is fixed. // Also, NUnit 2.4 appears to lacks Assert.Pass (). Semaphore badSemaphore = new Semaphore (1, 1, name); if (badSemaphore.SafeWaitHandle.IsInvalid) throw new UnauthorizedAccessException (); } }
[Category ("NotWorking")] // not implemented in Mono public void AccessControl_Unnamed () { Semaphore s = new Semaphore (0, 1, null); SemaphoreSecurity ss = s.GetAccessControl (); Assert.IsNotNull (ss, "GetAccessControl"); s.SetAccessControl (ss); }
public static SemaphoreSecurity GetAccessControl(this Semaphore semaphore) { return(semaphore.GetAccessControl()); }
public static SemaphoreSecurity GetAccessControl(Semaphore semaphore) { return semaphore.GetAccessControl(); }