Author: spouliot
Date: 2005-04-28 09:27:13 -0400 (Thu, 28 Apr 2005)
New Revision: 43720
Added:
trunk/mcs/class/corlib/Test/System.Security/SecurityContextCas.cs
trunk/mcs/class/corlib/Test/System.Security/SecurityContextTest.cs
trunk/mcs/class/corlib/Test/System.Security/SecurityCriticalAttributeTest.cs
trunk/mcs/class/corlib/Test/System.Security/SecurityTransparentAttributeTest.cs
Modified:
trunk/mcs/class/corlib/Test/System.Security/ChangeLog
Log:
2005-03-28 Sebastien Pouliot <[EMAIL PROTECTED]>
* SecurityContextCas.cs: New. CAS unit tests for SecurityContext.
* SecurityContextTest.cs: New. Unit tests for SecurityContext.
* SecurityCriticalAttributeTest.cs: New. Unit tests for
SecurityCriticalAttribute.
* SecurityTransparentAttributeTest.cs: New. Unit tests for
SecurityTransparentAttribute.
Modified: trunk/mcs/class/corlib/Test/System.Security/ChangeLog
===================================================================
--- trunk/mcs/class/corlib/Test/System.Security/ChangeLog 2005-04-28
13:24:04 UTC (rev 43719)
+++ trunk/mcs/class/corlib/Test/System.Security/ChangeLog 2005-04-28
13:27:13 UTC (rev 43720)
@@ -1,3 +1,12 @@
+2005-03-28 Sebastien Pouliot <[EMAIL PROTECTED]>
+
+ * SecurityContextCas.cs: New. CAS unit tests for SecurityContext.
+ * SecurityContextTest.cs: New. Unit tests for SecurityContext.
+ * SecurityCriticalAttributeTest.cs: New. Unit tests for
+ SecurityCriticalAttribute.
+ * SecurityTransparentAttributeTest.cs: New. Unit tests for
+ SecurityTransparentAttribute.
+
2005-04-25 Sebastien Pouliot <[EMAIL PROTECTED]>
* HostSecurityManagerTest.cs: Renamed HostSecurityManagerFlags to
Added: trunk/mcs/class/corlib/Test/System.Security/SecurityContextCas.cs
===================================================================
--- trunk/mcs/class/corlib/Test/System.Security/SecurityContextCas.cs
2005-04-28 13:24:04 UTC (rev 43719)
+++ trunk/mcs/class/corlib/Test/System.Security/SecurityContextCas.cs
2005-04-28 13:27:13 UTC (rev 43720)
@@ -0,0 +1,172 @@
+//
+// SecurityContextCas.cs - CAS Unit Tests for SecurityContext
+//
+// Author:
+// Sebastien Pouliot ([EMAIL PROTECTED])
+//
+// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if NET_2_0
+
+using System;
+using System.Security;
+using System.Security.Permissions;
+using System.Threading;
+
+using NUnit.Framework;
+
+namespace MonoCasTests.System.Threading {
+
+ [TestFixture]
+ [Category ("CAS")]
+ public class SecurityContextCas {
+
+ static bool success;
+
+ static void Callback (object o)
+ {
+ new SecurityPermission
(SecurityPermissionFlag.UnmanagedCode).Demand ();
+ success = (bool)o;
+ }
+
+ [SetUp]
+ public void SetUp ()
+ {
+ if (!SecurityManager.SecurityEnabled)
+ Assert.Ignore ("SecurityManager isn't enabled");
+
+ success = false;
+ }
+
+ [TearDown]
+ public void TearDown ()
+ {
+ if (SecurityContext.IsFlowSuppressed () ||
SecurityContext.IsWindowsIdentityFlowSuppressed ())
+ SecurityContext.RestoreFlow ();
+ }
+
+ private void Thread_Run_Empty ()
+ {
+ Assert.IsFalse (success, "pre-check");
+ SecurityContext.Run (SecurityContext.Capture (), new
ContextCallback (Callback), true);
+ Assert.IsTrue (success, "post-check");
+ }
+
+ [Test]
+ public void Run_Empty ()
+ {
+ Thread t = new Thread (new ThreadStart
(Thread_Run_Empty));
+ t.Start ();
+ t.Join ();
+ }
+
+ [SecurityPermission (SecurityAction.Deny, UnmanagedCode = true)]
+ private SecurityContext GetSecurityContextUnmanaged ()
+ {
+ return SecurityContext.Capture ();
+ // the Deny disappears with this stack frame but we got
a capture of it
+ }
+
+ private void Thread_Run_UnmanagedCode ()
+ {
+ bool result = false;
+ Assert.IsFalse (success, "pre-check");
+ try {
+ SecurityContext sc =
GetSecurityContextUnmanaged ();
+ // run with the captured security stack (i.e.
deny unmanaged)
+ SecurityContext.Run (sc, new ContextCallback
(Callback), true);
+ }
+ catch (SecurityException) {
+ result = true;
+ }
+ finally {
+ Assert.IsFalse (success, "post-check");
+ Assert.IsTrue (result, "Result");
+ }
+ }
+
+ [Test]
+ public void Run_UnmanagedCode ()
+ {
+ Thread t = new Thread (new ThreadStart
(Thread_Run_UnmanagedCode));
+ t.Start ();
+ t.Join ();
+ }
+
+ private void
Thread_Run_UnmanagedCode_SuppressFlow_BeforeCapture ()
+ {
+ bool result = false;
+ Assert.IsFalse (success, "pre-check");
+ AsyncFlowControl afc = SecurityContext.SuppressFlow ();
+ try {
+ SecurityContext sc =
GetSecurityContextUnmanaged ();
+ SecurityContext.Run (sc, new ContextCallback
(Callback), true);
+ }
+ catch (InvalidOperationException) {
+ result = true;
+ }
+ finally {
+ Assert.IsFalse (success, "post-check");
+ afc.Undo ();
+ Assert.IsTrue (result, "Result");
+ }
+ }
+
+ [Test]
+ public void Run_UnmanagedCode_SuppressFlow_BeforeCapture ()
+ {
+ Thread t = new Thread (new ThreadStart
(Thread_Run_UnmanagedCode_SuppressFlow_BeforeCapture));
+ t.Start ();
+ t.Join ();
+ }
+
+ private void Thread_Run_UnmanagedCode_SuppressFlow_AfterCapture
()
+ {
+ bool result = false;
+ Assert.IsFalse (success, "pre-check");
+ SecurityContext sc = GetSecurityContextUnmanaged ();
+ AsyncFlowControl afc = SecurityContext.SuppressFlow ();
+ try {
+ SecurityContext.Run (sc, new ContextCallback
(Callback), true);
+ }
+ catch (SecurityException) {
+ result = true;
+ }
+ finally {
+ Assert.IsFalse (success, "post-check");
+ afc.Undo ();
+ Assert.IsTrue (result, "Result");
+ }
+ }
+
+ [Test]
+ public void Run_UnmanagedCode_SuppressFlow_AfterCapture ()
+ {
+ Thread t = new Thread (new ThreadStart
(Thread_Run_UnmanagedCode_SuppressFlow_AfterCapture));
+ t.Start ();
+ t.Join ();
+ }
+ }
+}
+
+#endif
Added: trunk/mcs/class/corlib/Test/System.Security/SecurityContextTest.cs
===================================================================
--- trunk/mcs/class/corlib/Test/System.Security/SecurityContextTest.cs
2005-04-28 13:24:04 UTC (rev 43719)
+++ trunk/mcs/class/corlib/Test/System.Security/SecurityContextTest.cs
2005-04-28 13:27:13 UTC (rev 43720)
@@ -0,0 +1,290 @@
+//
+// SecurityContextTest.cs - NUnit tests for SecurityContext
+//
+// Author:
+// Sebastien Pouliot <[EMAIL PROTECTED]>
+//
+// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if NET_2_0
+
+using System;
+using System.Security;
+using System.Security.Principal;
+using System.Threading;
+
+using NUnit.Framework;
+
+namespace MonoTests.System.Security {
+
+ [TestFixture]
+ public class SecurityContextTest {
+
+ static bool success;
+
+ static void Callback (object o)
+ {
+ success = (bool) o;
+ }
+
+ [SetUp]
+ public void SetUp ()
+ {
+ success = false;
+ }
+
+ [TearDown]
+ public void TearDown ()
+ {
+ if (SecurityContext.IsFlowSuppressed () ||
SecurityContext.IsWindowsIdentityFlowSuppressed ())
+ SecurityContext.RestoreFlow ();
+ }
+
+ [Test]
+ public void Capture ()
+ {
+ SecurityContext sc = SecurityContext.Capture ();
+ Assert.IsNotNull (sc, "Capture");
+
+ AsyncFlowControl afc = SecurityContext.SuppressFlow ();
+ Assert.IsTrue (SecurityContext.IsFlowSuppressed (),
"IsFlowSuppressed-1");
+ try {
+ sc = SecurityContext.Capture ();
+ Assert.IsNull (sc, "Capture with SuppressFlow");
+ }
+ finally {
+ afc.Undo ();
+ }
+
+ afc = SecurityContext.SuppressFlowWindowsIdentity ();
+ Assert.IsTrue
(SecurityContext.IsWindowsIdentityFlowSuppressed (),
"IsWindowsIdentityFlowSuppressed-1");
+ try {
+ sc = SecurityContext.Capture ();
+ Assert.IsNotNull (sc, "Capture with
SuppressFlowWindowsIdentity");
+ }
+ finally {
+ afc.Undo ();
+ }
+ }
+
+ [Test]
+ public void Copy ()
+ {
+ SecurityContext sc = SecurityContext.Capture ();
+ Assert.IsNotNull (sc, "Capture");
+
+ SecurityContext copy = sc.CreateCopy ();
+ Assert.IsNotNull (copy, "Copy of Capture");
+
+ Assert.IsFalse (sc.Equals (copy));
+ Assert.IsFalse (copy.Equals (sc));
+ Assert.IsFalse (Object.ReferenceEquals (sc, copy));
+
+ SecurityContext copy2nd = copy.CreateCopy ();
+ Assert.IsNotNull (copy2nd, "2nd level copy of Capture");
+ }
+
+ [Test]
+ public void IsFlowSuppressed ()
+ {
+ Assert.IsFalse (SecurityContext.IsFlowSuppressed (),
"IsFlowSuppressed-1");
+
+ AsyncFlowControl afc =
SecurityContext.SuppressFlowWindowsIdentity ();
+ Assert.IsFalse (SecurityContext.IsFlowSuppressed (),
"IsFlowSuppressed-2");
+ afc.Undo ();
+
+ afc = SecurityContext.SuppressFlow ();
+ Assert.IsTrue (SecurityContext.IsFlowSuppressed (),
"IsFlowSuppressed-3");
+ afc.Undo ();
+
+ Assert.IsFalse (SecurityContext.IsFlowSuppressed (),
"IsFlowSuppressed-4");
+ }
+
+ [Test]
+ public void IsWindowsIdentityFlowSuppressed ()
+ {
+ Assert.IsFalse
(SecurityContext.IsWindowsIdentityFlowSuppressed (),
"IsWindowsIdentityFlowSuppressed-1");
+
+ AsyncFlowControl afc = SecurityContext.SuppressFlow ();
+ Assert.IsTrue
(SecurityContext.IsWindowsIdentityFlowSuppressed (),
"IsWindowsIdentityFlowSuppressed-2");
+ afc.Undo ();
+
+ afc = SecurityContext.SuppressFlowWindowsIdentity ();
+ Assert.IsTrue
(SecurityContext.IsWindowsIdentityFlowSuppressed (),
"IsWindowsIdentityFlowSuppressed-3");
+ afc.Undo ();
+
+ Assert.IsFalse
(SecurityContext.IsWindowsIdentityFlowSuppressed (),
"IsWindowsIdentityFlowSuppressed-4");
+ }
+
+ [Test]
+ [ExpectedException (typeof (InvalidOperationException))]
+ public void RestoreFlow_None ()
+ {
+ SecurityContext.RestoreFlow ();
+ }
+
+ [Test]
+ public void RestoreFlow_SuppressFlow ()
+ {
+ Assert.IsFalse (SecurityContext.IsFlowSuppressed (),
"IsFlowSuppressed-1");
+ SecurityContext.SuppressFlow ();
+ Assert.IsTrue (SecurityContext.IsFlowSuppressed (),
"IsFlowSuppressed-2");
+ SecurityContext.RestoreFlow ();
+ Assert.IsFalse (SecurityContext.IsFlowSuppressed (),
"IsFlowSuppressed-3");
+ }
+
+ [Test]
+ public void RestoreFlow_SuppressFlowWindowsIdentity ()
+ {
+ Assert.IsFalse
(SecurityContext.IsWindowsIdentityFlowSuppressed (),
"IsWindowsIdentityFlowSuppressed-1");
+ SecurityContext.SuppressFlowWindowsIdentity ();
+ Assert.IsTrue
(SecurityContext.IsWindowsIdentityFlowSuppressed (),
"IsWindowsIdentityFlowSuppressed-2");
+ SecurityContext.RestoreFlow ();
+ Assert.IsFalse
(SecurityContext.IsWindowsIdentityFlowSuppressed (),
"IsWindowsIdentityFlowSuppressed-3");
+ }
+
+ [Test]
+ public void Run ()
+ {
+ Assert.IsFalse (success, "pre-check");
+ SecurityContext.Run (SecurityContext.Capture (), new
ContextCallback (Callback), true);
+ Assert.IsTrue (success, "post-check");
+ }
+
+ [Test]
+ [ExpectedException (typeof (InvalidOperationException))]
+ public void Run_SuppressFlow ()
+ {
+ Assert.IsFalse (SecurityContext.IsFlowSuppressed ());
+ AsyncFlowControl afc = SecurityContext.SuppressFlow ();
+ Assert.IsTrue (SecurityContext.IsFlowSuppressed ());
+ try {
+ SecurityContext.Run (SecurityContext.Capture
(), new ContextCallback (Callback), "Hello world.");
+ }
+ finally {
+ afc.Undo ();
+ }
+ }
+
+ [Test]
+ public void SuppressFlow ()
+ {
+ Assert.IsFalse (SecurityContext.IsFlowSuppressed (),
"IsFlowSuppressed-1");
+ Assert.IsFalse
(SecurityContext.IsWindowsIdentityFlowSuppressed (),
"IsWindowsIdentityFlowSuppressed-1");
+
+ AsyncFlowControl afc = SecurityContext.SuppressFlow ();
+ Assert.IsTrue (SecurityContext.IsFlowSuppressed (),
"IsFlowSuppressed-3");
+ Assert.IsTrue
(SecurityContext.IsWindowsIdentityFlowSuppressed (),
"IsWindowsIdentityFlowSuppressed-3");
+ afc.Undo ();
+
+ Assert.IsFalse (SecurityContext.IsFlowSuppressed (),
"IsFlowSuppressed-4");
+ Assert.IsFalse
(SecurityContext.IsWindowsIdentityFlowSuppressed (),
"IsWindowsIdentityFlowSuppressed-4");
+ }
+
+ [Test]
+ public void SuppressFlowWindowsIdentity ()
+ {
+ Assert.IsFalse (SecurityContext.IsFlowSuppressed (),
"IsFlowSuppressed-1");
+ Assert.IsFalse
(SecurityContext.IsWindowsIdentityFlowSuppressed (),
"IsWindowsIdentityFlowSuppressed-1");
+
+ AsyncFlowControl afc =
SecurityContext.SuppressFlowWindowsIdentity ();
+ Assert.IsFalse (SecurityContext.IsFlowSuppressed (),
"IsFlowSuppressed-2");
+ Assert.IsTrue
(SecurityContext.IsWindowsIdentityFlowSuppressed (),
"IsWindowsIdentityFlowSuppressed-2");
+ afc.Undo ();
+
+ Assert.IsFalse (SecurityContext.IsFlowSuppressed (),
"IsFlowSuppressed-4");
+ Assert.IsFalse
(SecurityContext.IsWindowsIdentityFlowSuppressed (),
"IsWindowsIdentityFlowSuppressed-4");
+ }
+
+ [Test]
+ public void SuppressFlow_Both ()
+ {
+ Assert.IsFalse (SecurityContext.IsFlowSuppressed (),
"IsFlowSuppressed-1");
+ Assert.IsFalse
(SecurityContext.IsWindowsIdentityFlowSuppressed (),
"IsWindowsIdentityFlowSuppressed-1");
+
+ AsyncFlowControl afc =
SecurityContext.SuppressFlowWindowsIdentity ();
+ Assert.IsFalse (SecurityContext.IsFlowSuppressed (),
"IsFlowSuppressed-2");
+ Assert.IsTrue
(SecurityContext.IsWindowsIdentityFlowSuppressed (),
"IsWindowsIdentityFlowSuppressed-2");
+
+ AsyncFlowControl afc2 = SecurityContext.SuppressFlow ();
+ Assert.IsTrue (SecurityContext.IsFlowSuppressed (),
"IsFlowSuppressed-2");
+ Assert.IsTrue
(SecurityContext.IsWindowsIdentityFlowSuppressed (),
"IsWindowsIdentityFlowSuppressed-2");
+ afc2.Undo ();
+
+ // note: afc2 Undo return to the original (not the
previous) state
+ Assert.IsFalse (SecurityContext.IsFlowSuppressed (),
"IsFlowSuppressed-2");
+ Assert.IsFalse
(SecurityContext.IsWindowsIdentityFlowSuppressed (),
"IsWindowsIdentityFlowSuppressed-2");
+ }
+
+ [Test]
+ [ExpectedException (typeof (InvalidOperationException))]
+ public void SuppressFlow_Both_Undo ()
+ {
+ Assert.IsFalse (SecurityContext.IsFlowSuppressed (),
"IsFlowSuppressed-1");
+ Assert.IsFalse
(SecurityContext.IsWindowsIdentityFlowSuppressed (),
"IsWindowsIdentityFlowSuppressed-1");
+
+ AsyncFlowControl afc =
SecurityContext.SuppressFlowWindowsIdentity ();
+ Assert.IsFalse (SecurityContext.IsFlowSuppressed (),
"IsFlowSuppressed-2");
+ Assert.IsTrue
(SecurityContext.IsWindowsIdentityFlowSuppressed (),
"IsWindowsIdentityFlowSuppressed-2");
+
+ AsyncFlowControl afc2 = SecurityContext.SuppressFlow ();
+ Assert.IsTrue (SecurityContext.IsFlowSuppressed (),
"IsFlowSuppressed-2");
+ Assert.IsTrue
(SecurityContext.IsWindowsIdentityFlowSuppressed (),
"IsWindowsIdentityFlowSuppressed-2");
+ afc2.Undo ();
+
+ // note: afc2 Undo return to the original (not the
previous) state
+ Assert.IsFalse (SecurityContext.IsFlowSuppressed (),
"IsFlowSuppressed-2");
+ Assert.IsFalse
(SecurityContext.IsWindowsIdentityFlowSuppressed (),
"IsWindowsIdentityFlowSuppressed-2");
+
+ // we can't use the first AsyncFlowControl
+ afc.Undo ();
+ }
+
+ // effects of ExecutionContext on SecurityContext
+
+ [Test]
+ public void ExecutionContext_SuppressFlow ()
+ {
+ Assert.IsFalse (ExecutionContext.IsFlowSuppressed (),
"IsFlowSuppressed-1");
+ AsyncFlowControl afc = ExecutionContext.SuppressFlow ();
+ try {
+ Assert.IsTrue
(ExecutionContext.IsFlowSuppressed (), "IsFlowSuppressed-2");
+ Assert.IsFalse
(SecurityContext.IsFlowSuppressed (), "IsFlowSuppressed-3");
+ Assert.IsNotNull (SecurityContext.Capture (),
"Capture");
+ }
+ finally {
+ afc.Undo ();
+ }
+ }
+
+ [Test]
+ public void WindowsIdentity_ ()
+ {
+ Thread.CurrentPrincipal = new WindowsPrincipal
(WindowsIdentity.GetCurrent ());
+ SecurityContext sc = SecurityContext.Capture ();
+ Assert.IsNotNull (sc, "Capture");
+ }
+ }
+}
+
+#endif
\ No newline at end of file
Added:
trunk/mcs/class/corlib/Test/System.Security/SecurityCriticalAttributeTest.cs
===================================================================
---
trunk/mcs/class/corlib/Test/System.Security/SecurityCriticalAttributeTest.cs
2005-04-28 13:24:04 UTC (rev 43719)
+++
trunk/mcs/class/corlib/Test/System.Security/SecurityCriticalAttributeTest.cs
2005-04-28 13:27:13 UTC (rev 43720)
@@ -0,0 +1,87 @@
+//
+// SecurityCriticalAttributeTest.cs -
+// NUnit Test Cases for SecurityCriticalAttribute
+//
+// Author:
+// Sebastien Pouliot <[EMAIL PROTECTED]>
+//
+// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if NET_2_0
+
+using NUnit.Framework;
+using System;
+using System.Security;
+
+namespace MonoTests.System.Security {
+
+ [TestFixture]
+ public class SecurityCriticalAttributeTest {
+
+ [Test]
+ public void Constructor_Default ()
+ {
+ SecurityCriticalAttribute sca = new
SecurityCriticalAttribute ();
+ Assert.AreEqual (SecurityCriticalScope.Explicit,
sca.Scope);
+ }
+
+ [Test]
+ public void Constructor_Scope_Everything ()
+ {
+ SecurityCriticalAttribute sca = new
SecurityCriticalAttribute (SecurityCriticalScope.Everything);
+ Assert.AreEqual (SecurityCriticalScope.Everything,
sca.Scope);
+ }
+
+ [Test]
+ public void Constructor_Scope_Explicit ()
+ {
+ SecurityCriticalAttribute sca = new
SecurityCriticalAttribute (SecurityCriticalScope.Explicit);
+ Assert.AreEqual (SecurityCriticalScope.Explicit,
sca.Scope);
+ }
+
+ [Test]
+ public void Constructor_Scope_Bad ()
+ {
+ SecurityCriticalScope scs =
(SecurityCriticalScope)UInt32.MinValue;
+ SecurityCriticalAttribute sca = new
SecurityCriticalAttribute (scs);
+ Assert.AreEqual (SecurityCriticalScope.Explicit,
sca.Scope);
+ }
+
+ [Test]
+ public void Attributes ()
+ {
+ Type t = typeof (SecurityCriticalAttribute);
+ Assert.IsFalse (t.IsSerializable, "IsSerializable");
+
+ object [] attrs = t.GetCustomAttributes (typeof
(AttributeUsageAttribute), false);
+ Assert.AreEqual (1, attrs.Length, "AttributeUsage");
+ AttributeUsageAttribute aua =
(AttributeUsageAttribute)attrs [0];
+ Assert.IsFalse (aua.AllowMultiple, "AllowMultiple");
+ Assert.IsFalse (aua.Inherited, "Inherited");
+ AttributeTargets at = (AttributeTargets.Assembly |
AttributeTargets.Module | AttributeTargets.Class | AttributeTargets.Struct |
AttributeTargets.Enum | AttributeTargets.Constructor | AttributeTargets.Method
| AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event |
AttributeTargets.Interface | AttributeTargets.Delegate);
+ Assert.AreEqual (at, aua.ValidOn, "ValidOn");
+ }
+ }
+}
+
+#endif
Added:
trunk/mcs/class/corlib/Test/System.Security/SecurityTransparentAttributeTest.cs
===================================================================
---
trunk/mcs/class/corlib/Test/System.Security/SecurityTransparentAttributeTest.cs
2005-04-28 13:24:04 UTC (rev 43719)
+++
trunk/mcs/class/corlib/Test/System.Security/SecurityTransparentAttributeTest.cs
2005-04-28 13:27:13 UTC (rev 43720)
@@ -0,0 +1,57 @@
+//
+// SecurityTransparentAttributeTest.cs -
+// NUnit Test Cases for SecurityTransparentAttribute
+//
+// Author:
+// Sebastien Pouliot <[EMAIL PROTECTED]>
+//
+// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if NET_2_0
+
+using NUnit.Framework;
+using System;
+using System.Security;
+
+namespace MonoTests.System.Security {
+
+ [TestFixture]
+ public class SecurityTransparentAttributeTest {
+
+ [Test]
+ public void Attributes ()
+ {
+ Type t = typeof (SecurityTransparentAttribute);
+ Assert.IsFalse (t.IsSerializable, "IsSerializable");
+
+ object [] attrs = t.GetCustomAttributes (typeof
(AttributeUsageAttribute), false);
+ Assert.AreEqual (1, attrs.Length, "AttributeUsage");
+ AttributeUsageAttribute aua =
(AttributeUsageAttribute)attrs [0];
+ Assert.IsFalse (aua.AllowMultiple, "AllowMultiple");
+ Assert.IsFalse (aua.Inherited, "Inherited");
+ Assert.AreEqual (AttributeTargets.Assembly,
aua.ValidOn, "ValidOn");
+ }
+ }
+}
+
+#endif
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches