2010-04-06 Jb Evain <jbevain@novell.com>
[mcs.git] / class / corlib / Test / System.Security.Policy / SiteTest.cs
blob18e589e7b657a549262d8d7ce6f7a7372ba0edec
1 //
2 // SiteTest.cs - NUnit Test Cases for Site
3 //
4 // Author:
5 // Sebastien Pouliot <sebastien@ximian.com>
6 //
7 // (C) 2004 Motus Technologies Inc. (http://www.motus.com)
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.Globalization;
33 using System.Security;
34 using System.Security.Permissions;
35 using System.Security.Policy;
37 namespace MonoTests.System.Security.Policy {
39 [TestFixture]
40 public class SiteTest {
42 [Test]
43 [ExpectedException (typeof (ArgumentNullException))]
44 public void Site_Null ()
46 Site s = new Site (null);
49 [Test]
50 [ExpectedException (typeof (ArgumentException))]
51 public void Site_Empty ()
53 Site s = new Site (String.Empty);
56 [Test]
57 [ExpectedException (typeof (ArgumentException))]
58 public void Site_FileUrl ()
60 Site s = new Site ("file://mono/index.html");
63 [Test]
64 [ExpectedException (typeof (ArgumentException))]
65 public void Site_AllGoMono ()
67 Site s = new Site ("http://*.go-mono.com");
70 [Test]
71 [ExpectedException (typeof (ArgumentException))]
72 public void Site_FullUrlWithPort ()
74 Site s = new Site ("http://www.go-mono.com:8080/index.html");
77 [Test]
78 public void Site_GoMonoWebSite ()
80 Site s = new Site ("www.go-mono.com");
81 Assert.AreEqual ("www.go-mono.com", s.Name, "Name");
82 #if NET_2_0
83 Assert.AreEqual ("<System.Security.Policy.Site version=\"1\">" + Environment.NewLine + "<Name>www.go-mono.com</Name>" + Environment.NewLine + "</System.Security.Policy.Site>" + Environment.NewLine, s.ToString (), "ToString");
84 #else
85 Assert.AreEqual ("<System.Security.Policy.Site version=\"1\">" + Environment.NewLine + " <Name>www.go-mono.com</Name>" + Environment.NewLine + "</System.Security.Policy.Site>" + Environment.NewLine, s.ToString (), "ToString");
86 #endif
87 Site s2 = (Site) s.Copy ();
88 Assert.AreEqual (s.Name, s2.Name, "Copy.Name");
89 Assert.AreEqual (s.GetHashCode (), s2.GetHashCode (), "Copy.GetHashCode");
91 SiteIdentityPermission sip = (SiteIdentityPermission) s.CreateIdentityPermission (null);
92 Assert.AreEqual (s.Name, sip.Site, "CreateIdentityPermission");
94 Assert.IsTrue (s.Equals (s2), "Equals");
95 Site s3 = new Site ("go-mono.com");
96 Assert.IsTrue (!s.Equals (s3), "!Equals");
99 [Test]
100 public void Site_AllGoMonoSite ()
102 Site s = new Site ("*.go-mono.com");
103 Assert.AreEqual ("*.go-mono.com", s.Name, "Name");
104 #if NET_2_0
105 Assert.AreEqual ("<System.Security.Policy.Site version=\"1\">" + Environment.NewLine + "<Name>*.go-mono.com</Name>" + Environment.NewLine + "</System.Security.Policy.Site>" + Environment.NewLine, s.ToString (), "ToString");
106 #else
107 Assert.AreEqual ("<System.Security.Policy.Site version=\"1\">" + Environment.NewLine + " <Name>*.go-mono.com</Name>" + Environment.NewLine + "</System.Security.Policy.Site>" + Environment.NewLine, s.ToString (), "ToString");
108 #endif
109 Site s2 = (Site) s.Copy ();
110 Assert.AreEqual (s.Name, s2.Name, "Copy.Name");
111 Assert.AreEqual (s.GetHashCode (), s2.GetHashCode (), "Copy.GetHashCode");
113 SiteIdentityPermission sip = (SiteIdentityPermission) s.CreateIdentityPermission (null);
114 Assert.AreEqual (s.Name, sip.Site, "CreateIdentityPermission");
116 Assert.IsTrue (s.Equals (s2), "Equals");
117 Site s3 = new Site ("go-mono.com");
118 Assert.IsTrue (!s.Equals (s3), "!Equals");
121 [Test]
122 [ExpectedException (typeof (ArgumentException))]
123 public void Site_GoMonoAllTLD ()
125 Site s = new Site ("www.go-mono.*");
128 [Test]
129 [ExpectedException (typeof (ArgumentException))]
130 public void Site_TwoStars ()
132 Site s = new Site ("*.*.go-mono.com");
135 [Test]
136 public void EqualsCaseSensitive () {
137 Site s1 = new Site ("*.go-mono.com");
138 Site s2 = new Site ("*.Go-Mono.com");
139 Assert.IsTrue (s1.Equals (s2), "CaseSensitive");
142 [Test]
143 public void EqualsPartial ()
145 Site s1 = new Site ("www.go-mono.com");
146 Site s2 = new Site ("*.go-mono.com");
147 Assert.IsTrue (!s1.Equals (s2), "Partial:1-2");
148 Assert.IsTrue (!s2.Equals (s1), "Partial:2-1");
151 [Test]
152 public void EqualsNull ()
154 Site s1 = new Site ("*.go-mono.com");
155 Assert.IsTrue (!s1.Equals (null), "EqualsNull");
158 [Test]
159 public void Site_LoneStar ()
161 Site s = new Site ("*");
162 Assert.AreEqual ("*", s.Name, "Name");
163 #if NET_2_0
164 Assert.AreEqual ("<System.Security.Policy.Site version=\"1\">" + Environment.NewLine + "<Name>*</Name>" + Environment.NewLine + "</System.Security.Policy.Site>" + Environment.NewLine, s.ToString (), "ToString");
165 #else
166 Assert.AreEqual ("<System.Security.Policy.Site version=\"1\">" + Environment.NewLine + " <Name>*</Name>" + Environment.NewLine + "</System.Security.Policy.Site>" + Environment.NewLine, s.ToString (), "ToString");
167 #endif
168 Site s2 = (Site) s.Copy ();
169 Assert.AreEqual (s.Name, s2.Name, "Copy.Name");
170 Assert.AreEqual (s.GetHashCode (), s2.GetHashCode (), "Copy.GetHashCode");
172 SiteIdentityPermission sip = (SiteIdentityPermission) s.CreateIdentityPermission (null);
173 Assert.AreEqual (s.Name, sip.Site, "CreateIdentityPermission");
175 Assert.IsTrue (s.Equals (s2), "Equals");
176 Site s3 = new Site ("go-mono.com");
177 Assert.IsTrue (!s.Equals (s3), "!Equals");
180 [Test]
181 public void AllChars ()
183 for (int i=1; i < 256; i++) {
184 bool actual = false;
185 char c = Convert.ToChar (i);
186 try {
187 Site s = new Site (Convert.ToString (c));
188 actual = true;
189 // Console.WriteLine ("GOOD: {0} - {1}", i, c);
191 catch {
192 // Console.WriteLine ("FAIL: {0} - {1}", i, c);
194 bool result = ((i == 45) // -
195 #if NET_2_0
196 || (i == 33) // !
197 || (i >= 35 && i <= 42) // #$%&'()*
198 || (i >= 48 && i <= 57) // 0-9
199 || (i >= 94 && i <= 95) // ^_
200 || (i >= 97 && i <= 123) // a-z{
201 || (i >= 125 && i <= 126) // }~
202 #else
203 || (i == 42) // *
204 || (i >= 47 && i <= 57) // /,0-9
205 || (i == 95) // _
206 || (i >= 97 && i <= 122) // a-z
207 #endif
208 || (i >= 64 && i <= 90)); // @,A-Z
209 Assert.IsTrue ((actual == result), "#"+i);
213 [Test]
214 [ExpectedException (typeof (ArgumentNullException))]
215 public void CreateFromUrl_Null ()
217 Site.CreateFromUrl (null);
220 [Test]
221 [ExpectedException (typeof (FormatException))]
222 public void CreateFromUrl_Empty ()
224 Site.CreateFromUrl (String.Empty);
227 string[] valid_urls = {
228 "http://www.go-mono.com",
229 "http://*.go-mono.com",
230 "http://www.go-mono.com:8080/index.html",
231 #if !NET_2_0
232 "file://mono/index.html", // file:// is supported as a site (1.0/1.1)
233 #endif
236 [Test]
237 public void CreateFromUrl_Valid ()
239 foreach (string url in valid_urls) {
240 Site s = Site.CreateFromUrl (url);
241 Assert.IsTrue ((s.Name.ToUpper (CultureInfo.InvariantCulture).IndexOf ("MONO") != -1), s.Name);
245 #if NET_2_0
246 string[] invalid_urls = {
247 "file://mono/index.html", // file:// isn't supported as a site (2.0)
250 [Test]
251 public void CreateFromUrl_Invalid ()
253 string msg = null;
254 foreach (string url in invalid_urls) {
255 try {
256 Site.CreateFromUrl (url);
257 msg = String.Format ("Expected ArgumentException for {0} but got none", url);
259 catch (ArgumentException) {
261 catch (Exception e) {
262 msg = String.Format ("Expected ArgumentException for {0} but got: {1}", url, e);
264 finally {
265 if (msg != null) {
266 Assert.Fail (msg);
267 msg = null;
272 #endif