2 // SiteMembershipConditionTest.cs -
3 // NUnit Test Cases for SiteMembershipCondition
6 // Sebastien Pouliot <sebastien@ximian.com>
8 // (C) 2004 Motus Technologies Inc. (http://www.motus.com)
9 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
11 // Permission is hereby granted, free of charge, to any person obtaining
12 // a copy of this software and associated documentation files (the
13 // "Software"), to deal in the Software without restriction, including
14 // without limitation the rights to use, copy, modify, merge, publish,
15 // distribute, sublicense, and/or sell copies of the Software, and to
16 // permit persons to whom the Software is furnished to do so, subject to
17 // the following conditions:
19 // The above copyright notice and this permission notice shall be
20 // included in all copies or substantial portions of the Software.
22 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
23 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
25 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
26 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
27 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
28 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31 using NUnit
.Framework
;
33 using System
.Collections
;
34 using System
.Security
;
35 using System
.Security
.Policy
;
37 namespace MonoTests
.System
.Security
.Policy
{
40 public class SiteMembershipConditionTest
{
43 [ExpectedException (typeof (ArgumentNullException
))]
44 public void SiteMembershipCondition_Null ()
46 SiteMembershipCondition smc
= new SiteMembershipCondition (null);
50 [ExpectedException (typeof (ArgumentException
))]
51 public void SiteMembershipCondition_Empty ()
53 SiteMembershipCondition smc
= new SiteMembershipCondition (String
.Empty
);
57 [ExpectedException (typeof (ArgumentException
))]
58 public void SiteMembershipCondition_FileUrl ()
60 SiteMembershipCondition smc
= new SiteMembershipCondition ("file://mono/index.html");
64 [ExpectedException (typeof (ArgumentException
))]
65 public void SiteMembershipCondition_FullUrlWithPort ()
67 SiteMembershipCondition smc
= new SiteMembershipCondition ("http://www.go-mono.com:8080/index.html");
71 public void SiteMembershipCondition_GoMonoWebSite ()
73 SiteMembershipCondition smc
= new SiteMembershipCondition ("www.go-mono.com");
74 Assert
.AreEqual ("www.go-mono.com", smc
.Site
, "Site");
75 Assert
.AreEqual ("Site - www.go-mono.com", smc
.ToString (), "ToString");
77 SiteMembershipCondition smc2
= (SiteMembershipCondition
) smc
.Copy ();
78 Assert
.AreEqual (smc
.Site
, smc2
.Site
, "Copy.Site");
79 Assert
.AreEqual (smc
.GetHashCode (), smc2
.GetHashCode (), "Copy.GetHashCode");
81 SecurityElement se
= smc2
.ToXml ();
82 SiteMembershipCondition smc3
= new SiteMembershipCondition ("*");
84 Assert
.AreEqual (smc
.Site
, smc3
.Site
, "ToXml/FromXml");
86 Assert
.IsTrue (smc
.Equals (smc2
), "Equals");
87 SiteMembershipCondition smc4
= new SiteMembershipCondition ("go-mono.com");
88 Assert
.IsFalse (smc
.Equals (smc4
), "!Equals");
92 public void Site_AllGoMonoSite ()
94 SiteMembershipCondition smc
= new SiteMembershipCondition ("*.go-mono.com");
95 Assert
.AreEqual ("*.go-mono.com", smc
.Site
, "Site");
96 Assert
.AreEqual ("Site - *.go-mono.com", smc
.ToString (), "ToString");
98 SiteMembershipCondition smc2
= (SiteMembershipCondition
) smc
.Copy ();
99 Assert
.AreEqual (smc
.Site
, smc2
.Site
, "Copy.Site");
100 Assert
.AreEqual (smc
.GetHashCode (), smc2
.GetHashCode (), "Copy.GetHashCode");
102 SecurityElement se
= smc2
.ToXml ();
103 SiteMembershipCondition smc3
= new SiteMembershipCondition ("*");
105 Assert
.AreEqual (smc
.Site
, smc3
.Site
, "ToXml/FromXml");
107 Assert
.IsTrue (smc
.Equals (smc2
), "Equals");
108 SiteMembershipCondition smc4
= new SiteMembershipCondition ("go-mono.com");
109 Assert
.IsFalse (smc
.Equals (smc4
), "!Equals");
115 SiteMembershipCondition smc
= new SiteMembershipCondition ("*.go-mono.com");
118 Assert
.IsFalse (smc
.Check (e
), "Check(null)");
120 Assert
.IsFalse (smc
.Check (e
), "Check (empty)");
121 e
.AddHost (new Zone (SecurityZone
.MyComputer
));
122 Assert
.IsFalse (smc
.Check (e
), "Check (zone)");
124 Site s
= new Site ("*.go-mono.com");
126 Assert
.IsFalse (smc
.Check (e
), "Check (site-assembly)");
128 Assert
.IsTrue (smc
.Check (e
), "Check (site-host)");
131 e
.AddHost (new Site ("www.go-mono.com"));
132 Assert
.IsTrue (smc
.Check (e
), "Check(+-)");
135 e
.AddHost (new Site ("*.go-mono.org"));
136 Assert
.IsFalse (smc
.Check (e
), "Check(-)");
140 public void Equals ()
142 SiteMembershipCondition smc1
= new SiteMembershipCondition ("*.go-mono.com");
143 Assert
.IsFalse (smc1
.Equals (null), "Null");
144 SiteMembershipCondition smc2
= new SiteMembershipCondition ("*.Go-Mono.com");
145 Assert
.IsTrue (smc1
.Equals (smc2
), "CaseSensitive");
149 [ExpectedException (typeof (ArgumentNullException
))]
150 public void FromXml_Null ()
152 SiteMembershipCondition smc
= new SiteMembershipCondition ("*.go-mono.com");
157 [ExpectedException (typeof (ArgumentException
))]
158 public void FromXml_InvalidTag ()
160 SiteMembershipCondition smc
= new SiteMembershipCondition ("*.go-mono.com");
161 SecurityElement se
= smc
.ToXml ();
162 se
.Tag
= "IMonoship";
167 public void FromXml_InvalidClass ()
169 SiteMembershipCondition smc
= new SiteMembershipCondition ("*.go-mono.com");
170 SecurityElement se
= smc
.ToXml ();
171 se
.Attributes
["class"] = "Hello world";
176 public void FromXml_NoClass ()
178 SiteMembershipCondition smc
= new SiteMembershipCondition ("*.go-mono.com");
179 SecurityElement se
= smc
.ToXml ();
181 SecurityElement w
= new SecurityElement (se
.Tag
);
182 w
.AddAttribute ("version", se
.Attribute ("version"));
184 // doesn't even care of the class attribute presence
188 public void FromXml_InvalidVersion ()
190 SiteMembershipCondition smc
= new SiteMembershipCondition ("*.go-mono.com");
191 SecurityElement se
= smc
.ToXml ();
192 se
.Attributes
["version"] = "2";
197 public void FromXml_NoVersion ()
199 SiteMembershipCondition smc
= new SiteMembershipCondition ("*.go-mono.com");
200 SecurityElement se
= smc
.ToXml ();
202 SecurityElement w
= new SecurityElement (se
.Tag
);
203 w
.AddAttribute ("class", se
.Attribute ("class"));
208 public void FromXml_PolicyLevel ()
210 SiteMembershipCondition smc
= new SiteMembershipCondition ("*.go-mono.com");
211 SecurityElement se
= smc
.ToXml ();
212 // is it accepted for all policy levels ?
213 IEnumerator e
= SecurityManager
.PolicyHierarchy ();
214 while (e
.MoveNext ()) {
215 PolicyLevel pl
= e
.Current
as PolicyLevel
;
216 SiteMembershipCondition spl
= new SiteMembershipCondition ("*");
217 spl
.FromXml (se
, pl
);
218 Assert
.IsTrue (spl
.Equals (smc
), "FromXml(PolicyLevel='" + pl
.Label
+ "')");
224 public void ToXml_Null ()
226 SiteMembershipCondition smc
= new SiteMembershipCondition ("*.go-mono.com");
227 // no ArgumentNullException here
228 SecurityElement se
= smc
.ToXml (null);
229 Assert
.IsNotNull (se
, "ToXml(null)");
233 public void ToXml_PolicyLevel ()
235 SiteMembershipCondition smc
= new SiteMembershipCondition ("*.go-mono.com");
236 SecurityElement se
= smc
.ToXml ();
237 string s
= smc
.ToXml ().ToString ();
238 // is it accepted for all policy levels ?
239 IEnumerator e
= SecurityManager
.PolicyHierarchy ();
240 while (e
.MoveNext ()) {
241 PolicyLevel pl
= e
.Current
as PolicyLevel
;
242 SiteMembershipCondition spl
= new SiteMembershipCondition ("*");
243 spl
.FromXml (se
, pl
);
244 Assert
.AreEqual (s
, spl
.ToXml (pl
).ToString (), "ToXml(PolicyLevel='" + pl
.Label
+ "')");
250 public void ToFromXmlRoundTrip ()
252 SiteMembershipCondition smc1
= new SiteMembershipCondition ("*.go-mono.com");
253 SecurityElement se
= smc1
.ToXml ();
255 SiteMembershipCondition smc2
= new SiteMembershipCondition ("*");
258 Assert
.AreEqual (smc1
.GetHashCode (), smc2
.GetHashCode (), "ToFromXmlRoundTrip");