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");
118 Assert
.AreEqual (zmc
.SecurityZone
.GetHashCode (), zmc
.GetHashCode (), "GetHashCode");
121 return zmc
; // for further tests
125 [ExpectedException (typeof (ArgumentException
))]
126 public void ZoneMembershipCondition_Invalid ()
128 ZoneMembershipCondition zmc
= new ZoneMembershipCondition ((SecurityZone
)128);
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)");
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)");
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)");
186 [ExpectedException (typeof (ArgumentException
))]
187 public void ZoneMembershipCondition_NoZone ()
189 ZoneMembershipCondition zmc
= new ZoneMembershipCondition (SecurityZone
.NoZone
);
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)");
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)");
229 [ExpectedException (typeof (ArgumentException
))]
230 public void SecurityZone_NoZone ()
232 ZoneMembershipCondition zmc
= new ZoneMembershipCondition (SecurityZone
.MyComputer
);
233 zmc
.SecurityZone
= SecurityZone
.NoZone
;
237 [ExpectedException (typeof (ArgumentException
))]
238 public void SecurityZone_Invalid ()
240 ZoneMembershipCondition zmc
= new ZoneMembershipCondition (SecurityZone
.MyComputer
);
241 zmc
.SecurityZone
= (SecurityZone
)128;
245 [ExpectedException (typeof (ArgumentNullException
))]
246 public void FromXml_Null ()
248 ZoneMembershipCondition zmc
= new ZoneMembershipCondition (SecurityZone
.MyComputer
);
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";
263 public void FromXml_InvalidClass ()
265 ZoneMembershipCondition zmc
= new ZoneMembershipCondition (SecurityZone
.MyComputer
);
266 SecurityElement se
= zmc
.ToXml ();
267 se
.Attributes
["class"] = "Hello world";
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"));
280 // doesn't even care of the class attribute presence
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"));
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"));
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
+ "')");
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)");
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
+ "')");