[LoongArch64] Part-5:add loongarch support in some files for LoongArch64. (#21769)
[mono-project.git] / mcs / class / corlib / Test / System.Security.Policy / ZoneMembershipConditionTest.cs
blob1cf15b99176e81dcfb5fe501ac6ec6248ecb0d5c
1 //
2 // ZoneMembershipConditionTest.cs -
3 // NUnit Test Cases for ZoneMembershipCondition
4 //
5 // Author:
6 // Sebastien Pouliot <sebastien@ximian.com>
7 //
8 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
9 //
10 // Permission is hereby granted, free of charge, to any person obtaining
11 // a copy of this software and associated documentation files (the
12 // "Software"), to deal in the Software without restriction, including
13 // without limitation the rights to use, copy, modify, merge, publish,
14 // distribute, sublicense, and/or sell copies of the Software, and to
15 // permit persons to whom the Software is furnished to do so, subject to
16 // the following conditions:
17 //
18 // The above copyright notice and this permission notice shall be
19 // included in all copies or substantial portions of the Software.
20 //
21 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
24 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
25 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
26 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
27 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
30 using NUnit.Framework;
31 using System;
32 using System.Collections;
33 using System.Security;
34 using System.Security.Policy;
36 namespace MonoTests.System.Security.Policy {
38 [TestFixture]
39 public class ZoneMembershipConditionTest {
41 static Evidence allEmpty;
42 static Evidence hostInternet;
43 static Evidence hostIntranet;
44 static Evidence hostMyComputer;
45 static Evidence hostNoZone;
46 static Evidence hostTrusted;
47 static Evidence hostUntrusted;
48 static Evidence hostOther;
49 static Evidence assemblyInternet;
50 static Evidence assemblyIntranet;
51 static Evidence assemblyMyComputer;
52 static Evidence assemblyNoZone;
53 static Evidence assemblyTrusted;
54 static Evidence assemblyUntrusted;
55 static Evidence assemblyOther;
56 static object wrongEvidence;
58 private Evidence CreateHostEvidence (object o)
60 Evidence e = new Evidence ();
61 e.AddHost (o);
62 return e;
65 private Evidence CreateAssemblyEvidence (object o)
67 Evidence e = new Evidence ();
68 e.AddAssembly (o);
69 return e;
72 [TestFixtureSetUp]
73 public void FixtureSetUp ()
75 wrongEvidence = new Site ("test");
76 allEmpty = new Evidence ();
77 hostInternet = CreateHostEvidence (new Zone (SecurityZone.Internet));
78 hostIntranet = CreateHostEvidence (new Zone (SecurityZone.Intranet));
79 hostMyComputer = CreateHostEvidence (new Zone (SecurityZone.MyComputer));
80 hostNoZone = CreateHostEvidence (new Zone (SecurityZone.NoZone));
81 hostTrusted = CreateHostEvidence (new Zone (SecurityZone.Trusted));
82 hostUntrusted = CreateHostEvidence (new Zone (SecurityZone.Untrusted));
83 hostOther = CreateHostEvidence (wrongEvidence);
84 assemblyInternet = CreateAssemblyEvidence (new Zone (SecurityZone.Internet));
85 assemblyIntranet = CreateAssemblyEvidence (new Zone (SecurityZone.Intranet));
86 assemblyMyComputer = CreateAssemblyEvidence (new Zone (SecurityZone.MyComputer));
87 assemblyNoZone = CreateAssemblyEvidence (new Zone (SecurityZone.NoZone));
88 assemblyTrusted = CreateAssemblyEvidence (new Zone (SecurityZone.Trusted));
89 assemblyUntrusted = CreateAssemblyEvidence (new Zone (SecurityZone.Untrusted));
90 assemblyOther = CreateAssemblyEvidence (wrongEvidence);
93 private ZoneMembershipCondition BasicTest (SecurityZone zone)
95 ZoneMembershipCondition zmc = new ZoneMembershipCondition (zone);
96 Assert.AreEqual (zone, zmc.SecurityZone, "SecurityZone");
97 Assert.IsFalse (zmc.Check (null), "Check(null)");
98 Assert.IsFalse (zmc.Check (allEmpty), "Check(empty)");
99 Assert.IsFalse (zmc.Check (hostOther), "Check(hostOther)");
100 Assert.IsFalse (zmc.Check (assemblyOther), "Check(assemblyOther)");
102 ZoneMembershipCondition copy = (ZoneMembershipCondition) zmc.Copy ();
103 Assert.IsTrue (zmc.Equals (copy), "Equals-1");
104 Assert.IsTrue (copy.Equals (zmc), "Equals-2");
105 Assert.IsFalse (Object.ReferenceEquals (zmc, copy), "!ReferenceEquals");
106 Assert.IsFalse (zmc.Equals (null), "Equals-3");
107 Assert.IsFalse (zmc.Equals (wrongEvidence), "Equals-4");
109 SecurityElement se = zmc.ToXml ();
110 copy.FromXml (se);
111 Assert.IsTrue (zmc.Equals (copy), "Equals-5");
112 Assert.AreEqual (se.ToString (), zmc.ToXml (null).ToString (), "Equals-6");
114 Assert.IsTrue (zmc.ToString ().StartsWith ("Zone - "), "ToString-1");
115 Assert.IsTrue (zmc.ToString ().EndsWith (zmc.SecurityZone.ToString ()), "ToString-2");
117 Assert.AreEqual (zmc.SecurityZone.GetHashCode (), zmc.GetHashCode (), "GetHashCode");
119 return zmc; // for further tests
122 [Test]
123 [ExpectedException (typeof (ArgumentException))]
124 public void ZoneMembershipCondition_Invalid ()
126 ZoneMembershipCondition zmc = new ZoneMembershipCondition ((SecurityZone)128);
129 [Test]
130 public void ZoneMembershipCondition_Internet ()
132 ZoneMembershipCondition zmc = BasicTest (SecurityZone.Internet);
133 Assert.IsTrue (zmc.Check (hostInternet), "Check(hostInternet)");
134 Assert.IsFalse (zmc.Check (hostIntranet), "Check(hostIntranet)");
135 Assert.IsFalse (zmc.Check (hostMyComputer), "Check(hostMyComputer)");
136 Assert.IsFalse (zmc.Check (hostNoZone), "Check(hostNoZone)");
137 Assert.IsFalse (zmc.Check (hostTrusted), "Check(hostTrusted)");
138 Assert.IsFalse (zmc.Check (hostUntrusted), "Check(hostUntrusted)");
139 Assert.IsFalse (zmc.Check (assemblyInternet), "Check(assemblyInternet)");
140 Assert.IsFalse (zmc.Check (assemblyIntranet), "Check(assemblyIntranet)");
141 Assert.IsFalse (zmc.Check (assemblyMyComputer), "Check(assemblyMyComputer)");
142 Assert.IsFalse (zmc.Check (assemblyNoZone), "Check(assemblyNoZone)");
143 Assert.IsFalse (zmc.Check (assemblyTrusted), "Check(assemblyTrusted)");
144 Assert.IsFalse (zmc.Check (assemblyUntrusted), "Check(assemblyUntrusted)");
147 [Test]
148 public void ZoneMembershipCondition_Intranet ()
150 ZoneMembershipCondition zmc = BasicTest (SecurityZone.Intranet);
151 Assert.IsFalse (zmc.Check (hostInternet), "Check(hostInternet)");
152 Assert.IsTrue (zmc.Check (hostIntranet), "Check(hostIntranet)");
153 Assert.IsFalse (zmc.Check (hostMyComputer), "Check(hostMyComputer)");
154 Assert.IsFalse (zmc.Check (hostNoZone), "Check(hostNoZone)");
155 Assert.IsFalse (zmc.Check (hostTrusted), "Check(hostTrusted)");
156 Assert.IsFalse (zmc.Check (hostUntrusted), "Check(hostUntrusted)");
157 Assert.IsFalse (zmc.Check (assemblyInternet), "Check(assemblyInternet)");
158 Assert.IsFalse (zmc.Check (assemblyIntranet), "Check(assemblyIntranet)");
159 Assert.IsFalse (zmc.Check (assemblyMyComputer), "Check(assemblyMyComputer)");
160 Assert.IsFalse (zmc.Check (assemblyNoZone), "Check(assemblyNoZone)");
161 Assert.IsFalse (zmc.Check (assemblyTrusted), "Check(assemblyTrusted)");
162 Assert.IsFalse (zmc.Check (assemblyUntrusted), "Check(assemblyUntrusted)");
165 [Test]
166 public void ZoneMembershipCondition_MyComputer ()
168 ZoneMembershipCondition zmc = BasicTest (SecurityZone.MyComputer);
169 Assert.IsFalse (zmc.Check (hostInternet), "Check(hostInternet)");
170 Assert.IsFalse (zmc.Check (hostIntranet), "Check(hostIntranet)");
171 Assert.IsTrue (zmc.Check (hostMyComputer), "Check(hostMyComputer)");
172 Assert.IsFalse (zmc.Check (hostNoZone), "Check(hostNoZone)");
173 Assert.IsFalse (zmc.Check (hostTrusted), "Check(hostTrusted)");
174 Assert.IsFalse (zmc.Check (hostUntrusted), "Check(hostUntrusted)");
175 Assert.IsFalse (zmc.Check (assemblyInternet), "Check(assemblyInternet)");
176 Assert.IsFalse (zmc.Check (assemblyIntranet), "Check(assemblyIntranet)");
177 Assert.IsFalse (zmc.Check (assemblyMyComputer), "Check(assemblyMyComputer)");
178 Assert.IsFalse (zmc.Check (assemblyNoZone), "Check(assemblyNoZone)");
179 Assert.IsFalse (zmc.Check (assemblyTrusted), "Check(assemblyTrusted)");
180 Assert.IsFalse (zmc.Check (assemblyUntrusted), "Check(assemblyUntrusted)");
183 [Test]
184 [ExpectedException (typeof (ArgumentException))]
185 public void ZoneMembershipCondition_NoZone ()
187 ZoneMembershipCondition zmc = new ZoneMembershipCondition (SecurityZone.NoZone);
190 [Test]
191 public void ZoneMembershipCondition_Trusted ()
193 ZoneMembershipCondition zmc = BasicTest (SecurityZone.Trusted);
194 Assert.IsFalse (zmc.Check (hostInternet), "Check(hostInternet)");
195 Assert.IsFalse (zmc.Check (hostIntranet), "Check(hostIntranet)");
196 Assert.IsFalse (zmc.Check (hostMyComputer), "Check(hostMyComputer)");
197 Assert.IsFalse (zmc.Check (hostNoZone), "Check(hostNoZone)");
198 Assert.IsTrue (zmc.Check (hostTrusted), "Check(hostTrusted)");
199 Assert.IsFalse (zmc.Check (hostUntrusted), "Check(hostUntrusted)");
200 Assert.IsFalse (zmc.Check (assemblyInternet), "Check(assemblyInternet)");
201 Assert.IsFalse (zmc.Check (assemblyIntranet), "Check(assemblyIntranet)");
202 Assert.IsFalse (zmc.Check (assemblyMyComputer), "Check(assemblyMyComputer)");
203 Assert.IsFalse (zmc.Check (assemblyNoZone), "Check(assemblyNoZone)");
204 Assert.IsFalse (zmc.Check (assemblyTrusted), "Check(assemblyTrusted)");
205 Assert.IsFalse (zmc.Check (assemblyUntrusted), "Check(assemblyUntrusted)");
208 [Test]
209 public void ZoneMembershipCondition_Untrusted ()
211 ZoneMembershipCondition zmc = BasicTest (SecurityZone.Untrusted);
212 Assert.IsFalse (zmc.Check (hostInternet), "Check(hostInternet)");
213 Assert.IsFalse (zmc.Check (hostIntranet), "Check(hostIntranet)");
214 Assert.IsFalse (zmc.Check (hostMyComputer), "Check(hostMyComputer)");
215 Assert.IsFalse (zmc.Check (hostNoZone), "Check(hostNoZone)");
216 Assert.IsFalse (zmc.Check (hostTrusted), "Check(hostTrusted)");
217 Assert.IsTrue (zmc.Check (hostUntrusted), "Check(hostUntrusted)");
218 Assert.IsFalse (zmc.Check (assemblyInternet), "Check(assemblyInternet)");
219 Assert.IsFalse (zmc.Check (assemblyIntranet), "Check(assemblyIntranet)");
220 Assert.IsFalse (zmc.Check (assemblyMyComputer), "Check(assemblyMyComputer)");
221 Assert.IsFalse (zmc.Check (assemblyNoZone), "Check(assemblyNoZone)");
222 Assert.IsFalse (zmc.Check (assemblyTrusted), "Check(assemblyTrusted)");
223 Assert.IsFalse (zmc.Check (assemblyUntrusted), "Check(assemblyUntrusted)");
226 [Test]
227 [ExpectedException (typeof (ArgumentException))]
228 public void SecurityZone_NoZone ()
230 ZoneMembershipCondition zmc = new ZoneMembershipCondition (SecurityZone.MyComputer);
231 zmc.SecurityZone = SecurityZone.NoZone;
234 [Test]
235 [ExpectedException (typeof (ArgumentException))]
236 public void SecurityZone_Invalid ()
238 ZoneMembershipCondition zmc = new ZoneMembershipCondition (SecurityZone.MyComputer);
239 zmc.SecurityZone = (SecurityZone)128;
242 [Test]
243 [ExpectedException (typeof (ArgumentNullException))]
244 public void FromXml_Null ()
246 ZoneMembershipCondition zmc = new ZoneMembershipCondition (SecurityZone.MyComputer);
247 zmc.FromXml (null);
250 [Test]
251 [ExpectedException (typeof (ArgumentException))]
252 public void FromXml_InvalidTag ()
254 ZoneMembershipCondition zmc = new ZoneMembershipCondition (SecurityZone.MyComputer);
255 SecurityElement se = zmc.ToXml ();
256 se.Tag = "IMonoship";
257 zmc.FromXml (se);
260 [Test]
261 public void FromXml_InvalidClass ()
263 ZoneMembershipCondition zmc = new ZoneMembershipCondition (SecurityZone.MyComputer);
264 SecurityElement se = zmc.ToXml ();
265 se.Attributes ["class"] = "Hello world";
266 zmc.FromXml (se);
269 [Test]
270 public void FromXml_NoClass ()
272 ZoneMembershipCondition zmc = new ZoneMembershipCondition (SecurityZone.MyComputer);
273 SecurityElement se = zmc.ToXml ();
275 SecurityElement w = new SecurityElement (se.Tag);
276 w.AddAttribute ("version", se.Attribute ("version"));
277 zmc.FromXml (w);
278 // doesn't even care of the class attribute presence
281 [Test]
282 public void FromXml_InvalidVersion ()
284 ZoneMembershipCondition zmc = new ZoneMembershipCondition (SecurityZone.MyComputer);
285 SecurityElement se = zmc.ToXml ();
287 SecurityElement w = new SecurityElement (se.Tag);
288 w.AddAttribute ("class", se.Attribute ("class"));
289 w.AddAttribute ("version", "2");
290 w.AddAttribute ("Zone", se.Attribute ("Zone"));
291 zmc.FromXml (w);
294 [Test]
295 public void FromXml_NoVersion ()
297 ZoneMembershipCondition zmc = new ZoneMembershipCondition (SecurityZone.MyComputer);
298 SecurityElement se = zmc.ToXml ();
300 SecurityElement w = new SecurityElement (se.Tag);
301 w.AddAttribute ("class", se.Attribute ("class"));
302 zmc.FromXml (w);
305 [Test]
306 #if MOBILE
307 [ExpectedException (typeof (NotSupportedException))]
308 #endif
309 public void FromXml_PolicyLevel ()
311 ZoneMembershipCondition zmc = new ZoneMembershipCondition (SecurityZone.MyComputer);
312 SecurityElement se = zmc.ToXml ();
313 // is it accepted for all policy levels ?
314 IEnumerator e = SecurityManager.PolicyHierarchy ();
315 while (e.MoveNext ()) {
316 PolicyLevel pl = e.Current as PolicyLevel;
317 ZoneMembershipCondition spl = new ZoneMembershipCondition (SecurityZone.Internet);
318 spl.FromXml (se, pl);
319 Assert.IsTrue (spl.Equals (zmc), "FromXml(PolicyLevel='" + pl.Label + "')");
321 // yes!
324 [Test]
325 public void ToXml_Null ()
327 ZoneMembershipCondition zmc = new ZoneMembershipCondition (SecurityZone.MyComputer);
328 // no ArgumentNullException here
329 SecurityElement se = zmc.ToXml (null);
330 Assert.IsNotNull (se, "ToXml(null)");
333 [Test]
334 #if MOBILE
335 [ExpectedException (typeof (NotSupportedException))]
336 #endif
337 public void ToXml_PolicyLevel ()
339 ZoneMembershipCondition zmc = new ZoneMembershipCondition (SecurityZone.MyComputer);
340 SecurityElement se = zmc.ToXml ();
341 string s = zmc.ToXml ().ToString ();
342 // is it accepted for all policy levels ?
343 IEnumerator e = SecurityManager.PolicyHierarchy ();
344 while (e.MoveNext ()) {
345 PolicyLevel pl = e.Current as PolicyLevel;
346 ZoneMembershipCondition spl = new ZoneMembershipCondition (SecurityZone.Internet);
347 spl.FromXml (se, pl);
348 Assert.AreEqual (s, spl.ToXml (pl).ToString (), "ToXml(PolicyLevel='" + pl.Label + "')");
350 // yes!