2 // ZoneTest.cs - NUnit Test Cases for Zone
5 // Sebastien Pouliot <sebastien@ximian.com>
7 // (C) 2003 Motus Technologies Inc. (http://www.motus.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;
33 using System.Reflection;
34 using System.Security;
35 using System.Security.Policy;
37 namespace MonoTests.System.Security.Policy {
40 public class ZoneTest : Assertion {
43 public void MyComputer ()
45 Zone z = new Zone (SecurityZone.MyComputer);
46 AssertEquals ("MyComputer.SecurityZone", SecurityZone.MyComputer, z.SecurityZone);
47 Assert ("MyComputer.ToString", (z.ToString ().IndexOf ("<Zone>MyComputer</Zone>") >= 0));
48 Zone zc = (Zone) z.Copy ();
49 Assert ("MyComputer.Copy.Equals", z.Equals (zc));
50 IPermission p = z.CreateIdentityPermission (null);
51 AssertNotNull ("MyComputer.CreateIdentityPermission", p);
53 Assert ("MyComputer.MyComputer.Equals", z.Equals (new Zone (SecurityZone.MyComputer)));
54 Assert ("MyComputer.Intranet.Equals", !z.Equals (new Zone (SecurityZone.Intranet)));
55 Assert ("MyComputer.Trusted.Equals", !z.Equals (new Zone (SecurityZone.Trusted)));
56 Assert ("MyComputer.Internet.Equals", !z.Equals (new Zone (SecurityZone.Internet)));
57 Assert ("MyComputer.Untrusted.Equals", !z.Equals (new Zone (SecurityZone.Untrusted)));
58 Assert ("MyComputer.NoZone.Equals", !z.Equals (new Zone (SecurityZone.NoZone)));
59 Assert ("MyComputer.Null.Equals", !z.Equals (null));
63 public void Intranet ()
65 Zone z = new Zone (SecurityZone.Intranet);
66 AssertEquals ("Intranet.SecurityZone", SecurityZone.Intranet, z.SecurityZone);
67 Assert ("Intranet.ToString", (z.ToString ().IndexOf ("<Zone>Intranet</Zone>") >= 0));
68 Zone zc = (Zone) z.Copy ();
69 Assert ("Intranet.Copy.Equals", z.Equals (zc));
70 IPermission p = z.CreateIdentityPermission (null);
71 AssertNotNull ("Intranet.CreateIdentityPermission", p);
73 Assert ("Intranet.MyComputer.Equals", !z.Equals (new Zone (SecurityZone.MyComputer)));
74 Assert ("Intranet.Intranet.Equals", z.Equals (new Zone (SecurityZone.Intranet)));
75 Assert ("Intranet.Trusted.Equals", !z.Equals (new Zone (SecurityZone.Trusted)));
76 Assert ("Intranet.Internet.Equals", !z.Equals (new Zone (SecurityZone.Internet)));
77 Assert ("Intranet.Untrusted.Equals", !z.Equals (new Zone (SecurityZone.Untrusted)));
78 Assert ("Intranet.NoZone.Equals", !z.Equals (new Zone (SecurityZone.NoZone)));
79 Assert ("Intranet.Null.Equals", !z.Equals (null));
83 public void Trusted ()
85 Zone z = new Zone (SecurityZone.Trusted);
86 AssertEquals ("Trusted.SecurityZone", SecurityZone.Trusted, z.SecurityZone);
87 Assert ("Trusted.ToString", (z.ToString ().IndexOf ("<Zone>Trusted</Zone>") >= 0));
88 Zone zc = (Zone) z.Copy ();
89 Assert ("Trusted.Copy.Equals", z.Equals (zc));
90 IPermission p = z.CreateIdentityPermission (null);
91 AssertNotNull ("Trusted.CreateIdentityPermission", p);
93 Assert ("Trusted.MyComputer.Equals", !z.Equals (new Zone (SecurityZone.MyComputer)));
94 Assert ("Trusted.Intranet.Equals", !z.Equals (new Zone (SecurityZone.Intranet)));
95 Assert ("Trusted.Trusted.Equals", z.Equals (new Zone (SecurityZone.Trusted)));
96 Assert ("Trusted.Internet.Equals", !z.Equals (new Zone (SecurityZone.Internet)));
97 Assert ("Trusted.Untrusted.Equals", !z.Equals (new Zone (SecurityZone.Untrusted)));
98 Assert ("Trusted.NoZone.Equals", !z.Equals (new Zone (SecurityZone.NoZone)));
99 Assert ("Trusted.Null.Equals", !z.Equals (null));
103 public void Internet ()
105 Zone z = new Zone (SecurityZone.Internet);
106 AssertEquals ("Internet.SecurityZone", SecurityZone.Internet, z.SecurityZone);
107 Assert ("Internet.ToString", (z.ToString ().IndexOf ("<Zone>Internet</Zone>") >= 0));
108 Zone zc = (Zone) z.Copy ();
109 Assert ("Internet.Copy.Equals", z.Equals (zc));
110 IPermission p = z.CreateIdentityPermission (null);
111 AssertNotNull ("Internet.CreateIdentityPermission", p);
113 Assert ("Internet.MyComputer.Equals", !z.Equals (new Zone (SecurityZone.MyComputer)));
114 Assert ("Internet.Intranet.Equals", !z.Equals (new Zone (SecurityZone.Intranet)));
115 Assert ("Internet.Trusted.Equals", !z.Equals (new Zone (SecurityZone.Trusted)));
116 Assert ("Internet.Internet.Equals", z.Equals (new Zone (SecurityZone.Internet)));
117 Assert ("Internet.Untrusted.Equals", !z.Equals (new Zone (SecurityZone.Untrusted)));
118 Assert ("Internet.NoZone.Equals", !z.Equals (new Zone (SecurityZone.NoZone)));
119 Assert ("Internet.Null.Equals", !z.Equals (null));
123 public void Untrusted ()
125 Zone z = new Zone (SecurityZone.Untrusted);
126 AssertEquals ("Untrusted.SecurityZone", SecurityZone.Untrusted, z.SecurityZone);
127 Assert ("Untrusted.ToString", (z.ToString ().IndexOf ("<Zone>Untrusted</Zone>") >= 0));
128 Zone zc = (Zone) z.Copy ();
129 Assert ("Untrusted.Copy.Equals", z.Equals (zc));
130 IPermission p = z.CreateIdentityPermission (null);
131 AssertNotNull ("Untrusted.CreateIdentityPermission", p);
133 Assert ("Untrusted.MyComputer.Equals", !z.Equals (new Zone (SecurityZone.MyComputer)));
134 Assert ("Untrusted.Intranet.Equals", !z.Equals (new Zone (SecurityZone.Intranet)));
135 Assert ("Untrusted.Trusted.Equals", !z.Equals (new Zone (SecurityZone.Trusted)));
136 Assert ("Untrusted.Internet.Equals", !z.Equals (new Zone (SecurityZone.Internet)));
137 Assert ("Untrusted.Untrusted.Equals", z.Equals (new Zone (SecurityZone.Untrusted)));
138 Assert ("Untrusted.NoZone.Equals", !z.Equals (new Zone (SecurityZone.NoZone)));
139 Assert ("Untrusted.Null.Equals", !z.Equals (null));
143 public void NoZone ()
145 Zone z = new Zone (SecurityZone.NoZone);
146 AssertEquals ("NoZone.SecurityZone", SecurityZone.NoZone, z.SecurityZone);
147 Assert ("NoZone.ToString", (z.ToString ().IndexOf ("<Zone>NoZone</Zone>") >= 0));
148 Zone zc = (Zone) z.Copy ();
149 Assert ("NoZone.Copy.Equals", z.Equals (zc));
150 IPermission p = z.CreateIdentityPermission (null);
151 AssertNotNull ("NoZone.CreateIdentityPermission", p);
152 // NoZone isn't added to the XML / string of permissions
153 Assert ("ToString!=NoZone", p.ToString ().IndexOf ("NoZone") < 0);
155 Assert ("NoZone.MyComputer.Equals", !z.Equals (new Zone (SecurityZone.MyComputer)));
156 Assert ("NoZone.Intranet.Equals", !z.Equals (new Zone (SecurityZone.Intranet)));
157 Assert ("NoZone.Trusted.Equals", !z.Equals (new Zone (SecurityZone.Trusted)));
158 Assert ("NoZone.Internet.Equals", !z.Equals (new Zone (SecurityZone.Internet)));
159 Assert ("NoZone.Untrusted.Equals", !z.Equals (new Zone (SecurityZone.Untrusted)));
160 Assert ("NoZone.NoZone.Equals", z.Equals (new Zone (SecurityZone.NoZone)));
161 Assert ("NoZone.Null.Equals", !z.Equals (null));
165 [ExpectedException (typeof (ArgumentNullException))]
166 public void CreateFromUrl_Null ()
168 Zone.CreateFromUrl (null);
171 string[] noZoneUrls = {
172 String.Empty, // not accepted for a Site
176 public void CreateFromUrl_NoZone ()
178 foreach (string url in noZoneUrls) {
179 Zone z = Zone.CreateFromUrl (url);
180 AssertEquals (url, SecurityZone.NoZone, z.SecurityZone);
184 // files are always rooted (Path.IsPathRooted) and exists (File.Exists)
185 string[] myComputerUrls = {
186 Path.GetTempFileName (),
187 Assembly.GetExecutingAssembly ().Location,
191 public void CreateFromUrl_MyComputer ()
193 foreach (string u in myComputerUrls) {
195 Zone z = Zone.CreateFromUrl (url);
196 AssertEquals (url, SecurityZone.MyComputer, z.SecurityZone);
199 z = Zone.CreateFromUrl (url);
200 AssertEquals (url, SecurityZone.MyComputer, z.SecurityZone);
203 z = Zone.CreateFromUrl (url);
204 AssertEquals (url, SecurityZone.MyComputer, z.SecurityZone);
208 string[] intranetUrls = {
209 "file://mono/index.html", // file:// isn't supported as a site
210 "FILE://MONO/INDEX.HTML",
214 public void CreateFromUrl_Intranet ()
216 foreach (string url in intranetUrls) {
217 Zone z = Zone.CreateFromUrl (url);
218 AssertEquals (url, SecurityZone.Intranet, z.SecurityZone);
222 string[] internetUrls = {
223 "http://www.go-mono.com",
224 "http://64.14.94.188/",
225 "HTTP://WWW.GO-MONO.COM",
226 "http://*.go-mono.com",
227 "http://www.go-mono.com:8080/index.html",
228 "mono://unknown/protocol",
229 Path.DirectorySeparatorChar + "mono" + Path.DirectorySeparatorChar + "index.html",
233 public void CreateFromUrl_Internet ()
235 foreach (string url in internetUrls) {
236 Zone z = Zone.CreateFromUrl (url);
237 AssertEquals (url, SecurityZone.Internet, z.SecurityZone);
242 public void ToString_ ()
244 Zone z = Zone.CreateFromUrl (String.Empty);
245 string ts = z.ToString ();
246 Assert ("Class", ts.StartsWith ("<System.Security.Policy.Zone"));
247 Assert ("Version", (ts.IndexOf (" version=\"1\"") >= 0));
248 Assert ("Zone", (ts.IndexOf ("<Zone>NoZone</Zone>") >= 0));
249 Assert ("End", (ts.IndexOf ("</System.Security.Policy.Zone>") >= 0));