[LoongArch64] Part-5:add loongarch support in some files for LoongArch64. (#21769)
[mono-project.git] / mcs / class / System / Test / System.Net / WebPermissionAttributeTest.cs
blob15bdaea1ce1e515153f6f669dae96b674f3da331
1 //
2 // WebPermissionAttributeTest.cs - NUnit Test Cases for WebPermissionAttribute
3 //
4 // Author:
5 // Sebastien Pouliot <sebastien@ximian.com>
6 //
7 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
8 //
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:
16 //
17 // The above copyright notice and this permission notice shall be
18 // included in all copies or substantial portions of the Software.
19 //
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;
30 using System;
31 using System.Net;
32 using System.Security;
33 using System.Security.Permissions;
34 using System.Text.RegularExpressions;
36 namespace MonoTests.System.Net {
38 [TestFixture]
39 #if MOBILE
40 [Ignore ("CAS is not supported and parts will be linked away")]
41 #endif
42 public class WebPermissionAttributeTest {
44 [Test]
45 public void Default ()
47 WebPermissionAttribute a = new WebPermissionAttribute (SecurityAction.Assert);
48 Assert.AreEqual (a.ToString (), a.TypeId.ToString (), "TypeId");
49 Assert.IsFalse (a.Unrestricted, "Unrestricted");
51 WebPermission wp = (WebPermission)a.CreatePermission ();
52 Assert.IsFalse (wp.IsUnrestricted (), "IsUnrestricted");
55 [Test]
56 public void Action ()
58 WebPermissionAttribute a = new WebPermissionAttribute (SecurityAction.Assert);
59 Assert.AreEqual (SecurityAction.Assert, a.Action, "Action=Assert");
60 a.Action = SecurityAction.Demand;
61 Assert.AreEqual (SecurityAction.Demand, a.Action, "Action=Demand");
62 a.Action = SecurityAction.Deny;
63 Assert.AreEqual (SecurityAction.Deny, a.Action, "Action=Deny");
64 a.Action = SecurityAction.InheritanceDemand;
65 Assert.AreEqual (SecurityAction.InheritanceDemand, a.Action, "Action=InheritanceDemand");
66 a.Action = SecurityAction.LinkDemand;
67 Assert.AreEqual (SecurityAction.LinkDemand, a.Action, "Action=LinkDemand");
68 a.Action = SecurityAction.PermitOnly;
69 Assert.AreEqual (SecurityAction.PermitOnly, a.Action, "Action=PermitOnly");
70 a.Action = SecurityAction.RequestMinimum;
71 Assert.AreEqual (SecurityAction.RequestMinimum, a.Action, "Action=RequestMinimum");
72 a.Action = SecurityAction.RequestOptional;
73 Assert.AreEqual (SecurityAction.RequestOptional, a.Action, "Action=RequestOptional");
74 a.Action = SecurityAction.RequestRefuse;
75 Assert.AreEqual (SecurityAction.RequestRefuse, a.Action, "Action=RequestRefuse");
78 [Test]
79 public void Action_Invalid ()
81 WebPermissionAttribute a = new WebPermissionAttribute ((SecurityAction)Int32.MinValue);
82 // no validation in attribute
85 [Test]
86 public void Unrestricted ()
88 WebPermissionAttribute a = new WebPermissionAttribute (SecurityAction.Assert);
89 a.Unrestricted = true;
90 WebPermission wp = (WebPermission)a.CreatePermission ();
91 Assert.IsTrue (wp.IsUnrestricted (), "IsUnrestricted");
93 a.Unrestricted = false;
94 wp = (WebPermission)a.CreatePermission ();
95 Assert.IsFalse (wp.IsUnrestricted (), "!IsUnrestricted");
98 [Test]
99 public void Accept_Null ()
101 WebPermissionAttribute a = new WebPermissionAttribute (SecurityAction.Assert);
102 a.Accept = null; // legal
103 Assert.IsNull (a.Accept, "Accept");
104 Assert.IsNull (a.Connect, "Connect");
107 [Test]
108 [ExpectedException (typeof (ArgumentException))]
109 public void Accept_Dual ()
111 WebPermissionAttribute a = new WebPermissionAttribute (SecurityAction.Assert);
112 a.Accept = "/";
113 a.Accept = "\\";
116 [Test]
117 [ExpectedException (typeof (ArgumentException))]
118 public void Accept_Dual_Null ()
120 WebPermissionAttribute a = new WebPermissionAttribute (SecurityAction.Assert);
121 a.Accept = "/";
122 a.Accept = null;
125 [Test]
126 public void Accept ()
128 WebPermissionAttribute a = new WebPermissionAttribute (SecurityAction.Assert);
129 a.Accept = "/";
132 [Test]
133 [ExpectedException (typeof (ArgumentNullException))]
134 public void AcceptPattern_Null ()
136 WebPermissionAttribute a = new WebPermissionAttribute (SecurityAction.Assert);
137 a.AcceptPattern = null;
140 [Test]
141 [ExpectedException (typeof (ArgumentException))]
142 public void AcceptPattern_Dual ()
144 WebPermissionAttribute a = new WebPermissionAttribute (SecurityAction.Assert);
145 a.AcceptPattern = "/";
146 a.AcceptPattern = "\\";
149 [Test]
150 public void AcceptPattern ()
152 WebPermissionAttribute a = new WebPermissionAttribute (SecurityAction.Assert);
153 a.AcceptPattern = "\b(?"; // invalid regex expression
154 Assert.AreEqual ("\b(?", a.AcceptPattern, "AcceptPattern");
155 Assert.IsNull (a.ConnectPattern, "ConnectPattern");
158 [Test]
159 [ExpectedException (typeof (ArgumentException))]
160 public void Accept_AcceptPattern ()
162 WebPermissionAttribute a = new WebPermissionAttribute (SecurityAction.Assert);
163 a.Accept = "/";
164 a.AcceptPattern = "\\";
167 [Test]
168 [ExpectedException (typeof (ArgumentException))]
169 public void AcceptPattern_Accept ()
171 WebPermissionAttribute a = new WebPermissionAttribute (SecurityAction.Assert);
172 a.AcceptPattern = "/";
173 a.Accept = "\\";
176 [Test]
177 public void Connect_Null ()
179 WebPermissionAttribute a = new WebPermissionAttribute (SecurityAction.Assert);
180 a.Connect = null; // legal
181 Assert.IsNull (a.Accept, "Accept");
182 Assert.IsNull (a.Connect, "Connect");
185 [Test]
186 [ExpectedException (typeof (ArgumentException))]
187 public void Connect_Dual ()
189 WebPermissionAttribute a = new WebPermissionAttribute (SecurityAction.Assert);
190 a.Connect = "/";
191 a.Connect = "\\";
194 [Test]
195 [ExpectedException (typeof (ArgumentException))]
196 public void Connect_Dual_Null ()
198 WebPermissionAttribute a = new WebPermissionAttribute (SecurityAction.Assert);
199 a.Connect = "/";
200 a.Connect = null;
203 [Test]
204 public void Connect ()
206 WebPermissionAttribute a = new WebPermissionAttribute (SecurityAction.Assert);
207 a.Connect = "/";
208 Assert.IsNull (a.Accept, "Accept");
209 Assert.AreEqual ("/", a.Connect, "Connect");
212 [Test]
213 [ExpectedException (typeof (ArgumentNullException))]
214 public void ConnectPattern_Null ()
216 WebPermissionAttribute a = new WebPermissionAttribute (SecurityAction.Assert);
217 a.ConnectPattern = null;
220 [Test]
221 [ExpectedException (typeof (ArgumentException))]
222 public void ConnectPattern_Dual ()
224 WebPermissionAttribute a = new WebPermissionAttribute (SecurityAction.Assert);
225 a.ConnectPattern = "/";
226 a.ConnectPattern = "\\";
229 [Test]
230 public void ConnectPattern ()
232 WebPermissionAttribute a = new WebPermissionAttribute (SecurityAction.Assert);
233 a.ConnectPattern = "\b(?"; // invalid regex expression
234 Assert.IsNull (a.AcceptPattern, "AcceptPattern");
235 Assert.AreEqual ("\b(?", a.ConnectPattern, "ConnectPattern");
238 [Test]
239 [ExpectedException (typeof (ArgumentException))]
240 public void Connect_ConnectPattern ()
242 WebPermissionAttribute a = new WebPermissionAttribute (SecurityAction.Assert);
243 a.Connect = "/";
244 a.ConnectPattern = "\\";
247 [Test]
248 [ExpectedException (typeof (ArgumentException))]
249 public void ConnectPattern_Accept ()
251 WebPermissionAttribute a = new WebPermissionAttribute (SecurityAction.Assert);
252 a.ConnectPattern = "/";
253 a.Connect = "\\";
256 [Test]
257 public void CreatePermission_InvalidRegex ()
259 WebPermissionAttribute a = new WebPermissionAttribute (SecurityAction.Assert);
260 a.AcceptPattern = "\b(?"; // invalid regex expression
261 a.ConnectPattern = "\b(?"; // invalid regex expression
262 WebPermission wp = (WebPermission) a.CreatePermission ();
263 Assert.IsNotNull (wp, "CreatePermission");
266 [Test]
267 public void Attributes ()
269 Type t = typeof (WebPermissionAttribute);
270 Assert.IsTrue (t.IsSerializable, "IsSerializable");
272 object [] attrs = t.GetCustomAttributes (typeof (AttributeUsageAttribute), false);
273 Assert.AreEqual (1, attrs.Length, "AttributeUsage");
274 AttributeUsageAttribute aua = (AttributeUsageAttribute)attrs [0];
275 Assert.IsTrue (aua.AllowMultiple, "AllowMultiple");
276 Assert.IsFalse (aua.Inherited, "Inherited");
277 AttributeTargets at = (AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Constructor | AttributeTargets.Method);
278 Assert.AreEqual (at, aua.ValidOn, "ValidOn");