2 // ISAPIRuntimeCas.cs - CAS unit tests for System.Web.Hosting.ISAPIRuntime
5 // Sebastien Pouliot <sebastien@ximian.com>
7 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
9 // Permission is hereby granted, free of charge, to any person obtaining
10 // a copy of this software and associated documentation files (the
11 // "Software"), to deal in the Software without restriction, including
12 // without limitation the rights to use, copy, modify, merge, publish,
13 // distribute, sublicense, and/or sell copies of the Software, and to
14 // permit persons to whom the Software is furnished to do so, subject to
15 // the following conditions:
17 // The above copyright notice and this permission notice shall be
18 // included in all copies or substantial portions of the Software.
20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
29 using NUnit.Framework;
32 using System.Reflection;
33 using System.Security;
34 using System.Security.Permissions;
36 using System.Web.Hosting;
38 namespace MonoCasTests.System.Web.Hosting {
42 public class ISAPIRuntimeCas : AspNetHostingMinimal {
44 private ISAPIRuntime isapi;
47 public void FixtureSetUp ()
49 // we're at full trust here
50 isapi = new ISAPIRuntime ();
53 // test ctor (those tests aren't affected by a LinkDemand)
56 [SecurityPermission (SecurityAction.Deny, UnmanagedCode = true)]
57 [ExpectedException (typeof (SecurityException))]
58 public void Constructor_Deny_UnmanagedCode ()
64 [AspNetHostingPermission (SecurityAction.Deny, Level = AspNetHostingPermissionLevel.Minimal)]
66 [ExpectedException (typeof (SecurityException))]
68 public void Constructor_Deny_AspNetHostingPermission ()
74 [SecurityPermission (SecurityAction.PermitOnly, UnmanagedCode = true)]
75 [AspNetHostingPermission (SecurityAction.PermitOnly, Level = AspNetHostingPermissionLevel.Minimal)]
76 public void Constructor_PermitOnly_UnmanagedCode ()
81 // only StopProcessing requires some permissions (UnmanagedCode)
84 [PermissionSet (SecurityAction.Deny, Unrestricted = true)]
85 public void Members_Deny_Unrestricted ()
90 catch (NotImplementedException) {
94 isapi.ProcessRequest (IntPtr.Zero, 0);
97 catch (AccessViolationException) {
101 catch (NullReferenceException) {
105 catch (NotImplementedException) {
109 isapi.StartProcessing ();
111 catch (NotImplementedException) {
116 isapi.InitializeLifetimeService ();
118 catch (NotImplementedException) {
125 [SecurityPermission (SecurityAction.Deny, UnmanagedCode = true)]
127 [ExpectedException (typeof (SecurityException))]
129 public void StopProcessing_Deny_UnmanagedCode ()
132 isapi.StopProcessing ();
135 catch (TypeInitializationException) {
138 catch (NotImplementedException) {
147 [SecurityPermission (SecurityAction.PermitOnly, UnmanagedCode = true)]
148 public void StopProcessing_PermitOnly_UnmanagedCode ()
151 isapi.StopProcessing ();
154 catch (TypeInitializationException) {
158 catch (NotImplementedException) {
163 // test for LinkDemand on class
165 [SecurityPermission (SecurityAction.Assert, UnmanagedCode = true)]
166 public override object CreateControl (SecurityAction action, AspNetHostingPermissionLevel level)
168 // in this case testing the ctor isn't very conveniant
169 // because it has a Demand similar to the LinkDemand.
171 return base.CreateControl (action, level);
173 catch (TargetInvocationException tie) {
174 throw tie.InnerException;
178 public override Type Type {
179 get { return typeof (ISAPIRuntime); }