2 // UrlMembershipConditionTest.cs - NUnit Test Cases for UrlMembershipCondition
5 // Sebastien Pouliot (spouliot@motus.com)
7 // (C) 2004 Motus Technologies Inc. (http://www.motus.com)
10 using NUnit.Framework;
12 using System.Collections;
13 using System.Security;
14 using System.Security.Permissions;
15 using System.Security.Policy;
17 namespace MonoTests.System.Security.Policy {
20 public class UrlMembershipConditionTest : Assertion {
23 [ExpectedException (typeof (ArgumentNullException))]
24 public void UrlMembershipCondition_Null ()
26 UrlMembershipCondition umc = new UrlMembershipCondition (null);
30 [ExpectedException (typeof (FormatException))]
31 public void UrlMembershipCondition_Empty ()
33 UrlMembershipCondition umc = new UrlMembershipCondition (String.Empty);
37 public void UrlMembershipCondition_FileUrl ()
39 UrlMembershipCondition umc = new UrlMembershipCondition ("file://mono/index.html");
43 public void UrlMembershipCondition_FullUrlWithPort ()
45 UrlMembershipCondition umc = new UrlMembershipCondition ("http://www.go-mono.com:8080/index.html");
49 public void UrlMembershipCondition_GoMonoWebUrl ()
51 UrlMembershipCondition umc = new UrlMembershipCondition ("http://www.go-mono.com/");
52 AssertEquals ("Url", "http://www.go-mono.com/", umc.Url);
53 AssertEquals ("ToString", "Url - http://www.go-mono.com/", umc.ToString ());
55 UrlMembershipCondition umc2 = (UrlMembershipCondition) umc.Copy ();
56 AssertEquals ("Copy.Url", umc.Url, umc2.Url);
57 AssertEquals ("Copy.GetHashCode", umc.GetHashCode (), umc2.GetHashCode ());
59 SecurityElement se = umc2.ToXml ();
60 UrlMembershipCondition umc3 = new UrlMembershipCondition ("*");
62 AssertEquals ("ToXml/FromXml", umc.Url, umc3.Url);
64 Assert ("Equals", umc.Equals (umc2));
65 UrlMembershipCondition umc4 = new UrlMembershipCondition ("http://www.go-mono.com");
66 // note that a last slash is added to Url - so it's equal
67 Assert ("Equals-AutoAddedLastSlash", umc.Equals (umc4));
71 public void Url_AllGoMonoUrl ()
73 UrlMembershipCondition umc = new UrlMembershipCondition ("http://www.go-mono.com/*");
74 AssertEquals ("Url", "http://www.go-mono.com/*", umc.Url);
75 AssertEquals ("ToString", "Url - http://www.go-mono.com/*", umc.ToString ());
77 UrlMembershipCondition umc2 = (UrlMembershipCondition) umc.Copy ();
78 AssertEquals ("Copy.Url", umc.Url, umc2.Url);
79 AssertEquals ("Copy.GetHashCode", umc.GetHashCode (), umc2.GetHashCode ());
81 SecurityElement se = umc2.ToXml ();
82 UrlMembershipCondition umc3 = new UrlMembershipCondition ("*");
84 AssertEquals ("ToXml/FromXml", umc.Url, umc3.Url);
86 Assert ("Equals", umc.Equals (umc2));
87 UrlMembershipCondition umc4 = new UrlMembershipCondition ("http://www.go-mono.com/");
88 Assert ("Equals-*", umc.Equals (umc4));
92 [ExpectedException (typeof (ArgumentException))]
93 [Ignore ("not currently supported by Mono - CAS related")]
94 public void Url_InvalidSite ()
96 UrlMembershipCondition umc = new UrlMembershipCondition ("http://www.go-mono.*");
100 public void Url_NoProtocol ()
102 UrlMembershipCondition umc = new UrlMembershipCondition ("www.go-mono.com");
103 // note: no last slash here
104 AssertEquals ("Url", "file://WWW.GO-MONO.COM", umc.Url);
105 AssertEquals ("ToString", "Url - file://WWW.GO-MONO.COM", umc.ToString ());
109 public void Url_WellKnownProtocol ()
111 UrlMembershipCondition umc = new UrlMembershipCondition ("http://www.go-mono.com");
112 AssertEquals ("Url", "http://www.go-mono.com/", umc.Url);
113 AssertEquals ("ToString", "Url - http://www.go-mono.com/", umc.ToString ());
115 umc = new UrlMembershipCondition ("https://www.go-mono.com");
116 AssertEquals ("Url", "https://www.go-mono.com/", umc.Url);
117 AssertEquals ("ToString", "Url - https://www.go-mono.com/", umc.ToString ());
119 umc = new UrlMembershipCondition ("ftp://www.go-mono.com");
120 AssertEquals ("Url", "ftp://www.go-mono.com/", umc.Url);
121 AssertEquals ("ToString", "Url - ftp://www.go-mono.com/", umc.ToString ());
123 umc = new UrlMembershipCondition ("file://www.go-mono.com");
124 AssertEquals ("Url", "file://WWW.GO-MONO.COM", umc.Url);
125 AssertEquals ("ToString", "Url - file://WWW.GO-MONO.COM", umc.ToString ());
129 public void Url_UnknownProtocol ()
131 UrlMembershipCondition umc = new UrlMembershipCondition ("mono://www.go-mono.com");
132 AssertEquals ("Url", "mono://www.go-mono.com/", umc.Url);
133 AssertEquals ("ToString", "Url - mono://www.go-mono.com/", umc.ToString ());
137 public void Url_RelativePath ()
139 UrlMembershipCondition umc = new UrlMembershipCondition ("http://www.go-mono.com/path/../newpath/index.html");
140 AssertEquals ("Url", "http://www.go-mono.com/path/../newpath/index.html", umc.Url);
141 AssertEquals ("ToString", "Url - http://www.go-mono.com/path/../newpath/index.html", umc.ToString ());
145 [ExpectedException (typeof (ArgumentNullException))]
146 public void Url_Null ()
148 UrlMembershipCondition umc = new UrlMembershipCondition ("ftp://www.go-mono.com");
153 [ExpectedException (typeof (FormatException))]
154 public void Url_Empty ()
156 UrlMembershipCondition umc = new UrlMembershipCondition ("ftp://www.go-mono.com");
157 umc.Url = String.Empty;
161 public void CheckNull ()
163 UrlMembershipCondition umc = new UrlMembershipCondition ("http://www.go-mono.com");
164 Assert ("Check(null)", !umc.Check (null));
168 public void CheckPositive ()
170 UrlMembershipCondition umc = new UrlMembershipCondition ("http://www.go-mono.com");
171 Evidence e = new Evidence ();
172 e.AddHost (new Url ("http://www.go-mono.com"));
173 Assert ("Check(+)", umc.Check (e));
177 public void CheckPositive_Partial ()
179 UrlMembershipCondition umc = new UrlMembershipCondition ("http://www.go-mono.com/*");
180 Evidence e = new Evidence ();
181 e.AddHost (new Url ("http://www.go-mono.com/index.html"));
182 Assert ("Check(+-)", umc.Check (e));
186 public void CheckNegative ()
188 UrlMembershipCondition umc = new UrlMembershipCondition ("http://www.go-mono.com");
189 Evidence e = new Evidence ();
190 e.AddHost (new Url ("http://www.go-mono.org"));
191 Assert ("Check(-)", !umc.Check (e));
195 public void CheckNegative_NoUrlEvidence ()
197 UrlMembershipCondition umc = new UrlMembershipCondition ("http://www.go-mono.com");
198 Evidence e = new Evidence ();
199 e.AddHost (new Zone (SecurityZone.MyComputer));
200 Assert ("Check(?)", !umc.Check (e));
204 public void CheckMultipleEvidences ()
206 UrlMembershipCondition umc = new UrlMembershipCondition ("http://www.go-mono.com");
207 Evidence e = new Evidence ();
208 e.AddHost (new Url ("http://www.go-mono.org")); // the bad
209 e.AddHost (new Url ("http://www.go-mono.com")); // the good
210 e.AddHost (new Zone (SecurityZone.MyComputer)); // and the ugly (couldn't resist ;)
211 Assert ("Check(n)", umc.Check (e));
212 // check all Url evidence (i.e. do not stop at the first Url evidence)
216 public void EqualsCaseSensitive_Http ()
218 UrlMembershipCondition umc1 = new UrlMembershipCondition ("http://www.go-mono.com");
219 UrlMembershipCondition umc2 = new UrlMembershipCondition ("http://www.Go-Mono.com");
220 Assert ("CaseSensitive", umc1.Equals (umc2));
224 public void EqualsCaseSensitive_File ()
226 UrlMembershipCondition umc1 = new UrlMembershipCondition ("file://MONO");
227 UrlMembershipCondition umc2 = new UrlMembershipCondition ("file://mono");
228 Assert ("CaseSensitive", umc1.Equals (umc2));
232 public void EqualsNull ()
234 UrlMembershipCondition umc = new UrlMembershipCondition ("http://www.go-mono.com");
235 Assert ("EqualsNull", !umc.Equals (null));
239 [ExpectedException (typeof (ArgumentNullException))]
240 public void FromXmlNull ()
242 UrlMembershipCondition umc = new UrlMembershipCondition ("http://www.go-mono.com");
247 [ExpectedException (typeof (ArgumentException))]
248 public void FromXmlInvalid ()
250 UrlMembershipCondition umc = new UrlMembershipCondition ("http://www.go-mono.com");
251 SecurityElement se = umc.ToXml ();
252 se.Tag = "IMonoship";
257 public void FromXmlPolicyLevel ()
259 UrlMembershipCondition umc = new UrlMembershipCondition ("http://www.go-mono.com");
260 SecurityElement se = umc.ToXml ();
261 // is it accepted for all policy levels ?
262 IEnumerator e = SecurityManager.PolicyHierarchy ();
263 while (e.MoveNext ()) {
264 PolicyLevel pl = e.Current as PolicyLevel;
265 UrlMembershipCondition spl = new UrlMembershipCondition ("*");
266 spl.FromXml (se, pl);
267 Assert ("FromXml(PolicyLevel='" + pl.Label + "')", spl.Equals (umc));
273 public void ToXmlNull ()
275 UrlMembershipCondition umc = new UrlMembershipCondition ("http://www.go-mono.com");
276 // no ArgumentNullException here
277 SecurityElement se = umc.ToXml (null);
278 AssertNotNull ("ToXml(null)", se);
282 public void ToXmlPolicyLevel ()
284 UrlMembershipCondition umc = new UrlMembershipCondition ("http://www.go-mono.com");
285 SecurityElement se = umc.ToXml ();
286 string s = umc.ToXml ().ToString ();
287 // is it accepted for all policy levels ?
288 IEnumerator e = SecurityManager.PolicyHierarchy ();
289 while (e.MoveNext ()) {
290 PolicyLevel pl = e.Current as PolicyLevel;
291 UrlMembershipCondition spl = new UrlMembershipCondition ("*");
292 spl.FromXml (se, pl);
293 AssertEquals ("ToXml(PolicyLevel='" + pl.Label + "')", s, spl.ToXml (pl).ToString ());
299 public void ToFromXmlRoundTrip ()
301 UrlMembershipCondition umc1 = new UrlMembershipCondition ("http://www.go-mono.com");
302 SecurityElement se = umc1.ToXml ();
304 UrlMembershipCondition umc2 = new UrlMembershipCondition ("*");
307 AssertEquals ("ToFromXmlRoundTrip", umc1.GetHashCode (), umc2.GetHashCode ());