**** Merged from MCS ****
[mono-project.git] / mcs / class / corlib / Test / System.Security.Policy / ZoneMembershipConditionTest.cs
blob35573f8294d8c8fe1aaed089d6dda754744e400a
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 #if NET_2_0
118 Assert.AreEqual (zmc.SecurityZone.GetHashCode (), zmc.GetHashCode (), "GetHashCode");
119 #endif
121 return zmc; // for further tests
124 [Test]
125 [ExpectedException (typeof (ArgumentException))]
126 public void ZoneMembershipCondition_Invalid ()
128 ZoneMembershipCondition zmc = new ZoneMembershipCondition ((SecurityZone)128);
131 [Test]
132 public void ZoneMembershipCondition_Internet ()
134 ZoneMembershipCondition zmc = BasicTest (SecurityZone.Internet);
135 Assert.IsTrue (zmc.Check (hostInternet), "Check(hostInternet)");
136 Assert.IsFalse (zmc.Check (hostIntranet), "Check(hostIntranet)");
137 Assert.IsFalse (zmc.Check (hostMyComputer), "Check(hostMyComputer)");
138 Assert.IsFalse (zmc.Check (hostNoZone), "Check(hostNoZone)");
139 Assert.IsFalse (zmc.Check (hostTrusted), "Check(hostTrusted)");
140 Assert.IsFalse (zmc.Check (hostUntrusted), "Check(hostUntrusted)");
141 Assert.IsFalse (zmc.Check (assemblyInternet), "Check(assemblyInternet)");
142 Assert.IsFalse (zmc.Check (assemblyIntranet), "Check(assemblyIntranet)");
143 Assert.IsFalse (zmc.Check (assemblyMyComputer), "Check(assemblyMyComputer)");
144 Assert.IsFalse (zmc.Check (assemblyNoZone), "Check(assemblyNoZone)");
145 Assert.IsFalse (zmc.Check (assemblyTrusted), "Check(assemblyTrusted)");
146 Assert.IsFalse (zmc.Check (assemblyUntrusted), "Check(assemblyUntrusted)");
149 [Test]
150 public void ZoneMembershipCondition_Intranet ()
152 ZoneMembershipCondition zmc = BasicTest (SecurityZone.Intranet);
153 Assert.IsFalse (zmc.Check (hostInternet), "Check(hostInternet)");
154 Assert.IsTrue (zmc.Check (hostIntranet), "Check(hostIntranet)");
155 Assert.IsFalse (zmc.Check (hostMyComputer), "Check(hostMyComputer)");
156 Assert.IsFalse (zmc.Check (hostNoZone), "Check(hostNoZone)");
157 Assert.IsFalse (zmc.Check (hostTrusted), "Check(hostTrusted)");
158 Assert.IsFalse (zmc.Check (hostUntrusted), "Check(hostUntrusted)");
159 Assert.IsFalse (zmc.Check (assemblyInternet), "Check(assemblyInternet)");
160 Assert.IsFalse (zmc.Check (assemblyIntranet), "Check(assemblyIntranet)");
161 Assert.IsFalse (zmc.Check (assemblyMyComputer), "Check(assemblyMyComputer)");
162 Assert.IsFalse (zmc.Check (assemblyNoZone), "Check(assemblyNoZone)");
163 Assert.IsFalse (zmc.Check (assemblyTrusted), "Check(assemblyTrusted)");
164 Assert.IsFalse (zmc.Check (assemblyUntrusted), "Check(assemblyUntrusted)");
167 [Test]
168 public void ZoneMembershipCondition_MyComputer ()
170 ZoneMembershipCondition zmc = BasicTest (SecurityZone.MyComputer);
171 Assert.IsFalse (zmc.Check (hostInternet), "Check(hostInternet)");
172 Assert.IsFalse (zmc.Check (hostIntranet), "Check(hostIntranet)");
173 Assert.IsTrue (zmc.Check (hostMyComputer), "Check(hostMyComputer)");
174 Assert.IsFalse (zmc.Check (hostNoZone), "Check(hostNoZone)");
175 Assert.IsFalse (zmc.Check (hostTrusted), "Check(hostTrusted)");
176 Assert.IsFalse (zmc.Check (hostUntrusted), "Check(hostUntrusted)");
177 Assert.IsFalse (zmc.Check (assemblyInternet), "Check(assemblyInternet)");
178 Assert.IsFalse (zmc.Check (assemblyIntranet), "Check(assemblyIntranet)");
179 Assert.IsFalse (zmc.Check (assemblyMyComputer), "Check(assemblyMyComputer)");
180 Assert.IsFalse (zmc.Check (assemblyNoZone), "Check(assemblyNoZone)");
181 Assert.IsFalse (zmc.Check (assemblyTrusted), "Check(assemblyTrusted)");
182 Assert.IsFalse (zmc.Check (assemblyUntrusted), "Check(assemblyUntrusted)");
185 [Test]
186 [ExpectedException (typeof (ArgumentException))]
187 public void ZoneMembershipCondition_NoZone ()
189 ZoneMembershipCondition zmc = new ZoneMembershipCondition (SecurityZone.NoZone);
192 [Test]
193 public void ZoneMembershipCondition_Trusted ()
195 ZoneMembershipCondition zmc = BasicTest (SecurityZone.Trusted);
196 Assert.IsFalse (zmc.Check (hostInternet), "Check(hostInternet)");
197 Assert.IsFalse (zmc.Check (hostIntranet), "Check(hostIntranet)");
198 Assert.IsFalse (zmc.Check (hostMyComputer), "Check(hostMyComputer)");
199 Assert.IsFalse (zmc.Check (hostNoZone), "Check(hostNoZone)");
200 Assert.IsTrue (zmc.Check (hostTrusted), "Check(hostTrusted)");
201 Assert.IsFalse (zmc.Check (hostUntrusted), "Check(hostUntrusted)");
202 Assert.IsFalse (zmc.Check (assemblyInternet), "Check(assemblyInternet)");
203 Assert.IsFalse (zmc.Check (assemblyIntranet), "Check(assemblyIntranet)");
204 Assert.IsFalse (zmc.Check (assemblyMyComputer), "Check(assemblyMyComputer)");
205 Assert.IsFalse (zmc.Check (assemblyNoZone), "Check(assemblyNoZone)");
206 Assert.IsFalse (zmc.Check (assemblyTrusted), "Check(assemblyTrusted)");
207 Assert.IsFalse (zmc.Check (assemblyUntrusted), "Check(assemblyUntrusted)");
210 [Test]
211 public void ZoneMembershipCondition_Untrusted ()
213 ZoneMembershipCondition zmc = BasicTest (SecurityZone.Untrusted);
214 Assert.IsFalse (zmc.Check (hostInternet), "Check(hostInternet)");
215 Assert.IsFalse (zmc.Check (hostIntranet), "Check(hostIntranet)");
216 Assert.IsFalse (zmc.Check (hostMyComputer), "Check(hostMyComputer)");
217 Assert.IsFalse (zmc.Check (hostNoZone), "Check(hostNoZone)");
218 Assert.IsFalse (zmc.Check (hostTrusted), "Check(hostTrusted)");
219 Assert.IsTrue (zmc.Check (hostUntrusted), "Check(hostUntrusted)");
220 Assert.IsFalse (zmc.Check (assemblyInternet), "Check(assemblyInternet)");
221 Assert.IsFalse (zmc.Check (assemblyIntranet), "Check(assemblyIntranet)");
222 Assert.IsFalse (zmc.Check (assemblyMyComputer), "Check(assemblyMyComputer)");
223 Assert.IsFalse (zmc.Check (assemblyNoZone), "Check(assemblyNoZone)");
224 Assert.IsFalse (zmc.Check (assemblyTrusted), "Check(assemblyTrusted)");
225 Assert.IsFalse (zmc.Check (assemblyUntrusted), "Check(assemblyUntrusted)");
228 [Test]
229 [ExpectedException (typeof (ArgumentException))]
230 public void SecurityZone_NoZone ()
232 ZoneMembershipCondition zmc = new ZoneMembershipCondition (SecurityZone.MyComputer);
233 zmc.SecurityZone = SecurityZone.NoZone;
236 [Test]
237 [ExpectedException (typeof (ArgumentException))]
238 public void SecurityZone_Invalid ()
240 ZoneMembershipCondition zmc = new ZoneMembershipCondition (SecurityZone.MyComputer);
241 zmc.SecurityZone = (SecurityZone)128;
244 [Test]
245 [ExpectedException (typeof (ArgumentNullException))]
246 public void FromXml_Null ()
248 ZoneMembershipCondition zmc = new ZoneMembershipCondition (SecurityZone.MyComputer);
249 zmc.FromXml (null);
252 [Test]
253 [ExpectedException (typeof (ArgumentException))]
254 public void FromXml_InvalidTag ()
256 ZoneMembershipCondition zmc = new ZoneMembershipCondition (SecurityZone.MyComputer);
257 SecurityElement se = zmc.ToXml ();
258 se.Tag = "IMonoship";
259 zmc.FromXml (se);
262 [Test]
263 public void FromXml_InvalidClass ()
265 ZoneMembershipCondition zmc = new ZoneMembershipCondition (SecurityZone.MyComputer);
266 SecurityElement se = zmc.ToXml ();
267 se.Attributes ["class"] = "Hello world";
268 zmc.FromXml (se);
271 [Test]
272 public void FromXml_NoClass ()
274 ZoneMembershipCondition zmc = new ZoneMembershipCondition (SecurityZone.MyComputer);
275 SecurityElement se = zmc.ToXml ();
277 SecurityElement w = new SecurityElement (se.Tag);
278 w.AddAttribute ("version", se.Attribute ("version"));
279 zmc.FromXml (w);
280 // doesn't even care of the class attribute presence
283 [Test]
284 public void FromXml_InvalidVersion ()
286 ZoneMembershipCondition zmc = new ZoneMembershipCondition (SecurityZone.MyComputer);
287 SecurityElement se = zmc.ToXml ();
289 SecurityElement w = new SecurityElement (se.Tag);
290 w.AddAttribute ("class", se.Attribute ("class"));
291 w.AddAttribute ("version", "2");
292 w.AddAttribute ("Zone", se.Attribute ("Zone"));
293 zmc.FromXml (w);
296 [Test]
297 public void FromXml_NoVersion ()
299 ZoneMembershipCondition zmc = new ZoneMembershipCondition (SecurityZone.MyComputer);
300 SecurityElement se = zmc.ToXml ();
302 SecurityElement w = new SecurityElement (se.Tag);
303 w.AddAttribute ("class", se.Attribute ("class"));
304 zmc.FromXml (w);
307 [Test]
308 public void FromXml_PolicyLevel ()
310 ZoneMembershipCondition zmc = new ZoneMembershipCondition (SecurityZone.MyComputer);
311 SecurityElement se = zmc.ToXml ();
312 // is it accepted for all policy levels ?
313 IEnumerator e = SecurityManager.PolicyHierarchy ();
314 while (e.MoveNext ()) {
315 PolicyLevel pl = e.Current as PolicyLevel;
316 ZoneMembershipCondition spl = new ZoneMembershipCondition (SecurityZone.Internet);
317 spl.FromXml (se, pl);
318 Assert.IsTrue (spl.Equals (zmc), "FromXml(PolicyLevel='" + pl.Label + "')");
320 // yes!
323 [Test]
324 public void ToXml_Null ()
326 ZoneMembershipCondition zmc = new ZoneMembershipCondition (SecurityZone.MyComputer);
327 // no ArgumentNullException here
328 SecurityElement se = zmc.ToXml (null);
329 Assert.IsNotNull (se, "ToXml(null)");
332 [Test]
333 public void ToXml_PolicyLevel ()
335 ZoneMembershipCondition zmc = new ZoneMembershipCondition (SecurityZone.MyComputer);
336 SecurityElement se = zmc.ToXml ();
337 string s = zmc.ToXml ().ToString ();
338 // is it accepted for all policy levels ?
339 IEnumerator e = SecurityManager.PolicyHierarchy ();
340 while (e.MoveNext ()) {
341 PolicyLevel pl = e.Current as PolicyLevel;
342 ZoneMembershipCondition spl = new ZoneMembershipCondition (SecurityZone.Internet);
343 spl.FromXml (se, pl);
344 Assert.AreEqual (s, spl.ToXml (pl).ToString (), "ToXml(PolicyLevel='" + pl.Label + "')");
346 // yes!