2 // ZoneMembershipConditionTest.cs -
3 // NUnit Test Cases for ZoneMembershipCondition
6 // Sebastien Pouliot <sebastien@ximian.com>
8 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
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:
18 // The above copyright notice and this permission notice shall be
19 // included in all copies or substantial portions of the Software.
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
;
32 using System
.Collections
;
33 using System
.Security
;
34 using System
.Security
.Policy
;
36 namespace MonoTests
.System
.Security
.Policy
{
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 ();
65 private Evidence
CreateAssemblyEvidence (object o
)
67 Evidence e
= new Evidence ();
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 ();
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
123 [ExpectedException (typeof (ArgumentException
))]
124 public void ZoneMembershipCondition_Invalid ()
126 ZoneMembershipCondition zmc
= new ZoneMembershipCondition ((SecurityZone
)128);
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)");
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)");
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)");
184 [ExpectedException (typeof (ArgumentException
))]
185 public void ZoneMembershipCondition_NoZone ()
187 ZoneMembershipCondition zmc
= new ZoneMembershipCondition (SecurityZone
.NoZone
);
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)");
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)");
227 [ExpectedException (typeof (ArgumentException
))]
228 public void SecurityZone_NoZone ()
230 ZoneMembershipCondition zmc
= new ZoneMembershipCondition (SecurityZone
.MyComputer
);
231 zmc
.SecurityZone
= SecurityZone
.NoZone
;
235 [ExpectedException (typeof (ArgumentException
))]
236 public void SecurityZone_Invalid ()
238 ZoneMembershipCondition zmc
= new ZoneMembershipCondition (SecurityZone
.MyComputer
);
239 zmc
.SecurityZone
= (SecurityZone
)128;
243 [ExpectedException (typeof (ArgumentNullException
))]
244 public void FromXml_Null ()
246 ZoneMembershipCondition zmc
= new ZoneMembershipCondition (SecurityZone
.MyComputer
);
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";
261 public void FromXml_InvalidClass ()
263 ZoneMembershipCondition zmc
= new ZoneMembershipCondition (SecurityZone
.MyComputer
);
264 SecurityElement se
= zmc
.ToXml ();
265 se
.Attributes
["class"] = "Hello world";
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"));
278 // doesn't even care of the class attribute presence
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"));
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"));
307 [ExpectedException (typeof (NotSupportedException
))]
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
+ "')");
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)");
335 [ExpectedException (typeof (NotSupportedException
))]
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
+ "')");