2 // EnvironmentPermissionTest.cs - NUnit Test Cases for EnvironmentPermission
5 // Sebastien Pouliot (spouliot@motus.com)
7 // (C) 2003 Motus Technologies Inc. (http://www.motus.com)
10 using NUnit.Framework;
12 using System.Security;
13 using System.Security.Permissions;
15 namespace MonoTests.System.Security.Permissions {
18 public class EnvironmentPermissionTest : Assertion {
20 private static string className = "System.Security.Permissions.EnvironmentPermission, ";
21 private static string envVariables = "TMP;TEMP";
24 public void PermissionStateNone ()
26 EnvironmentPermission ep = new EnvironmentPermission (PermissionState.None);
27 AssertNotNull ("EnvironmentPermission(PermissionState.None)", ep);
28 Assert ("IsUnrestricted", !ep.IsUnrestricted ());
29 EnvironmentPermission copy = (EnvironmentPermission) ep.Copy ();
30 AssertEquals ("Copy.IsUnrestricted", ep.IsUnrestricted (), copy.IsUnrestricted ());
31 SecurityElement se = ep.ToXml ();
32 Assert ("ToXml-class", (se.Attributes ["class"] as string).StartsWith (className));
33 AssertEquals ("ToXml-version", "1", (se.Attributes ["version"] as string));
37 public void PermissionStateUnrestricted ()
39 EnvironmentPermission ep = new EnvironmentPermission (PermissionState.Unrestricted);
40 AssertNotNull ("EnvironmentPermission(PermissionState.Unrestricted)", ep);
41 Assert ("IsUnrestricted", ep.IsUnrestricted ());
42 EnvironmentPermission copy = (EnvironmentPermission) ep.Copy ();
43 AssertEquals ("Copy.IsUnrestricted", ep.IsUnrestricted (), copy.IsUnrestricted ());
44 SecurityElement se = ep.ToXml ();
45 AssertEquals ("ToXml-Unrestricted", "true", (se.Attributes ["Unrestricted"] as string));
49 [ExpectedException (typeof (ArgumentNullException))]
50 public void NullPathList ()
52 EnvironmentPermission ep = new EnvironmentPermission (EnvironmentPermissionAccess.AllAccess, null);
56 public void AllAccess ()
58 EnvironmentPermission ep = new EnvironmentPermission (EnvironmentPermissionAccess.AllAccess, envVariables);
59 Assert ("IsUnrestricted", !ep.IsUnrestricted ());
63 public void NoAccess ()
65 EnvironmentPermission ep = new EnvironmentPermission (EnvironmentPermissionAccess.NoAccess, envVariables);
66 Assert ("IsUnrestricted", !ep.IsUnrestricted ());
70 public void ReadAccess ()
72 EnvironmentPermission ep = new EnvironmentPermission (EnvironmentPermissionAccess.Read, envVariables);
73 Assert ("IsUnrestricted", !ep.IsUnrestricted ());
77 public void WriteAccess ()
79 EnvironmentPermission ep = new EnvironmentPermission (EnvironmentPermissionAccess.Write, envVariables);
80 Assert ("IsUnrestricted", !ep.IsUnrestricted ());
84 public void AddPathList ()
86 EnvironmentPermission ep = new EnvironmentPermission (PermissionState.None);
87 ep.AddPathList (EnvironmentPermissionAccess.AllAccess, envVariables);
88 // LAMESPEC NoAccess do not remove the TMP from AllAccess
89 ep.AddPathList (EnvironmentPermissionAccess.NoAccess, "TMP");
90 ep.AddPathList (EnvironmentPermissionAccess.Read, "UID");
91 ep.AddPathList (EnvironmentPermissionAccess.Write, "PROMPT");
92 SecurityElement se = ep.ToXml ();
93 // Note: Debugger can mess results (try to run without stepping)
94 AssertEquals ("AddPathList-ToXml-Read", "TMP;TEMP;UID", (se.Attributes ["Read"] as string));
95 AssertEquals ("AddPathList-ToXml-Write", "TMP;TEMP;PROMPT", (se.Attributes ["Write"] as string));
99 [ExpectedException (typeof (ArgumentException))]
100 public void GetPathListAllAccess ()
102 EnvironmentPermission ep = new EnvironmentPermission (PermissionState.None);
103 ep.AddPathList (EnvironmentPermissionAccess.Read, "UID");
104 ep.AddPathList (EnvironmentPermissionAccess.Write, "PROMPT");
105 AssertEquals ("GetPathList-AllAccess", "", ep.GetPathList (EnvironmentPermissionAccess.AllAccess));
109 [ExpectedException (typeof (ArgumentException))]
110 public void GetPathListNoAccess ()
112 EnvironmentPermission ep = new EnvironmentPermission (PermissionState.None);
113 ep.AddPathList (EnvironmentPermissionAccess.Read, "UID");
114 ep.AddPathList (EnvironmentPermissionAccess.Write, "PROMPT");
115 AssertEquals ("GetPathList-NoAccess", "", ep.GetPathList (EnvironmentPermissionAccess.NoAccess));
119 public void GetPathList ()
121 EnvironmentPermission ep = new EnvironmentPermission (PermissionState.None);
122 AssertNull ("GetPathList-Read-Empty", ep.GetPathList (EnvironmentPermissionAccess.Read));
123 AssertNull ("GetPathList-Write-Empty", ep.GetPathList (EnvironmentPermissionAccess.Write));
124 ep.AddPathList (EnvironmentPermissionAccess.Read, "UID");
125 ep.AddPathList (EnvironmentPermissionAccess.Write, "PROMPT");
126 AssertEquals ("GetPathList-Read", "UID", ep.GetPathList (EnvironmentPermissionAccess.Read));
127 AssertEquals ("GetPathList-Write", "PROMPT", ep.GetPathList (EnvironmentPermissionAccess.Write));
131 public void SetPathList ()
133 EnvironmentPermission ep = new EnvironmentPermission (PermissionState.None);
134 ep.SetPathList (EnvironmentPermissionAccess.AllAccess, envVariables);
135 // LAMESPEC NoAccess do not remove the TMP from AllAccess
136 ep.SetPathList (EnvironmentPermissionAccess.NoAccess, "SYSTEMROOT");
137 ep.SetPathList (EnvironmentPermissionAccess.Read, "UID");
138 ep.SetPathList (EnvironmentPermissionAccess.Write, "PROMPT");
139 SecurityElement se = ep.ToXml ();
140 AssertEquals ("SetPathList-ToXml-Read", "UID", (se.Attributes ["Read"] as string));
141 AssertEquals ("SetPathList-ToXml-Write", "PROMPT", (se.Attributes ["Write"] as string));
145 [ExpectedException (typeof (ArgumentNullException))]
146 public void FromXmlNull ()
148 EnvironmentPermission ep = new EnvironmentPermission (PermissionState.None);
153 [ExpectedException (typeof (ArgumentException))]
154 public void FromXmlInvalidPermission ()
156 EnvironmentPermission ep = new EnvironmentPermission (PermissionState.None);
157 SecurityElement se = ep.ToXml ();
158 // can't modify - so we create our own
159 SecurityElement se2 = new SecurityElement ("IInvalidPermission", se.Text);
160 se2.AddAttribute ("class", se.Attribute ("class"));
161 se2.AddAttribute ("version", se.Attribute ("version"));
166 [ExpectedException (typeof (ArgumentException))]
167 public void FromXmlWrongVersion ()
169 EnvironmentPermission ep = new EnvironmentPermission (PermissionState.None);
170 SecurityElement se = ep.ToXml ();
171 // can't modify - so we create our own
172 SecurityElement se2 = new SecurityElement (se.Tag, se.Text);
173 se2.AddAttribute ("class", se.Attribute ("class"));
174 se2.AddAttribute ("version", "2");
179 public void FromXml ()
181 EnvironmentPermission ep = new EnvironmentPermission (PermissionState.None);
182 SecurityElement se = ep.ToXml ();
183 AssertNotNull ("ToXml()", se);
185 se.AddAttribute ("Read", envVariables);
187 AssertEquals ("FromXml-Read", envVariables, ep.GetPathList (EnvironmentPermissionAccess.Read));
188 se.AddAttribute ("Write", envVariables);
190 AssertEquals ("FromXml-Read", envVariables, ep.GetPathList (EnvironmentPermissionAccess.Read));
191 AssertEquals ("FromXml-Write", envVariables, ep.GetPathList (EnvironmentPermissionAccess.Write));
195 public void UnionWithNull ()
197 EnvironmentPermission ep1 = new EnvironmentPermission (EnvironmentPermissionAccess.Read, envVariables);
198 EnvironmentPermission ep2 = null;
199 EnvironmentPermission ep3 = (EnvironmentPermission) ep1.Union (ep2);
200 AssertEquals ("EP1 U null == EP1", ep1.ToXml ().ToString (), ep3.ToXml ().ToString ());
204 public void UnionWithUnrestricted ()
206 EnvironmentPermission ep1 = new EnvironmentPermission (PermissionState.Unrestricted);
207 EnvironmentPermission ep2 = new EnvironmentPermission (EnvironmentPermissionAccess.Read, envVariables);
208 EnvironmentPermission ep3 = (EnvironmentPermission) ep1.Union (ep2);
209 Assert ("Unrestricted U EP2 == Unrestricted", ep3.IsUnrestricted ());
210 ep3 = (EnvironmentPermission) ep2.Union (ep1);
211 Assert ("EP2 U Unrestricted == Unrestricted", ep3.IsUnrestricted ());
217 EnvironmentPermission ep1 = new EnvironmentPermission (EnvironmentPermissionAccess.Read, envVariables);
218 EnvironmentPermission ep2 = new EnvironmentPermission (EnvironmentPermissionAccess.Write, envVariables);
219 EnvironmentPermission ep3 = (EnvironmentPermission) ep1.Union (ep2);
220 EnvironmentPermission ep4 = new EnvironmentPermission (EnvironmentPermissionAccess.AllAccess, envVariables);
221 AssertEquals ("EP1 U EP2 == EP1+2", ep3.ToXml ().ToString (), ep4.ToXml ().ToString ());
225 [ExpectedException (typeof (ArgumentException))]
226 public void UnionWithBadPermission ()
228 EnvironmentPermission ep1 = new EnvironmentPermission (EnvironmentPermissionAccess.Read, envVariables);
229 FileDialogPermission fdp2 = new FileDialogPermission (PermissionState.Unrestricted);
230 EnvironmentPermission ep3 = (EnvironmentPermission) ep1.Union (fdp2);
234 public void IntersectWithNull ()
236 EnvironmentPermission ep1 = new EnvironmentPermission (EnvironmentPermissionAccess.Read, envVariables);
237 EnvironmentPermission ep2 = null;
238 EnvironmentPermission ep3 = (EnvironmentPermission) ep1.Intersect (ep2);
239 AssertNull ("EP1 N null == null", ep3);
243 public void IntersectWithUnrestricted ()
245 EnvironmentPermission ep1 = new EnvironmentPermission (PermissionState.Unrestricted);
246 EnvironmentPermission ep2 = new EnvironmentPermission (EnvironmentPermissionAccess.Read, envVariables);
247 EnvironmentPermission ep3 = (EnvironmentPermission) ep1.Intersect (ep2);
248 Assert ("Unrestricted N EP2 == EP2", !ep3.IsUnrestricted ());
249 AssertEquals ("Unrestricted N EP2 == EP2", ep2.ToXml ().ToString (), ep3.ToXml ().ToString ());
250 ep3 = (EnvironmentPermission) ep2.Intersect (ep1);
251 Assert ("EP2 N Unrestricted == EP2", !ep3.IsUnrestricted ());
252 AssertEquals ("EP2 N Unrestricted == EP2", ep2.ToXml ().ToString (), ep3.ToXml ().ToString ());
256 public void Intersect ()
259 EnvironmentPermission ep1 = new EnvironmentPermission (EnvironmentPermissionAccess.Write, envVariables);
260 EnvironmentPermission ep2 = new EnvironmentPermission (EnvironmentPermissionAccess.Read, envVariables);
261 EnvironmentPermission ep3 = (EnvironmentPermission) ep1.Intersect (ep2);
262 AssertNull ("EP1 N EP2 == null", ep3);
263 // intersection in read
264 EnvironmentPermission ep4 = new EnvironmentPermission (EnvironmentPermissionAccess.Read, "TMP");
265 ep3 = (EnvironmentPermission) ep4.Intersect (ep2);
266 AssertEquals ("Intersect-Read", "TMP", ep3.GetPathList (EnvironmentPermissionAccess.Read));
267 // intersection in write
268 EnvironmentPermission ep5 = new EnvironmentPermission (EnvironmentPermissionAccess.Write, "TEMP");
269 ep3 = (EnvironmentPermission) ep5.Intersect (ep1);
270 AssertEquals ("Intersect-Read", "TEMP", ep3.GetPathList (EnvironmentPermissionAccess.Write));
271 // intersection in read and write
272 EnvironmentPermission ep6 = new EnvironmentPermission (EnvironmentPermissionAccess.AllAccess, "TEMP");
273 EnvironmentPermission ep7 = new EnvironmentPermission (EnvironmentPermissionAccess.AllAccess, envVariables);
274 ep3 = (EnvironmentPermission) ep6.Intersect (ep7);
275 AssertEquals ("Intersect-AllAccess-Read", "TEMP", ep3.GetPathList (EnvironmentPermissionAccess.Read));
276 AssertEquals ("Intersect-AllAccess-Write", "TEMP", ep3.GetPathList (EnvironmentPermissionAccess.Write));
280 [ExpectedException (typeof (ArgumentException))]
281 public void IntersectWithBadPermission ()
283 EnvironmentPermission ep1 = new EnvironmentPermission (EnvironmentPermissionAccess.Read, envVariables);
284 FileDialogPermission fdp2 = new FileDialogPermission (PermissionState.Unrestricted);
285 EnvironmentPermission ep3 = (EnvironmentPermission) ep1.Intersect (fdp2);
289 public void IsSubsetOfNull ()
291 EnvironmentPermission ep1 = new EnvironmentPermission (EnvironmentPermissionAccess.Read, envVariables);
292 Assert ("IsSubsetOf(null)", !ep1.IsSubsetOf (null));
296 public void IsSubsetOfUnrestricted ()
298 EnvironmentPermission ep1 = new EnvironmentPermission (PermissionState.Unrestricted);
299 EnvironmentPermission ep2 = new EnvironmentPermission (EnvironmentPermissionAccess.Read, envVariables);
300 EnvironmentPermission ep3 = new EnvironmentPermission (PermissionState.Unrestricted);
301 Assert ("Unrestricted.IsSubsetOf()", !ep1.IsSubsetOf (ep2));
302 Assert ("IsSubsetOf(Unrestricted)", ep2.IsSubsetOf (ep1));
303 Assert ("Unrestricted.IsSubsetOf(Unrestricted)", ep1.IsSubsetOf (ep3));
307 public void IsSubsetOf ()
309 EnvironmentPermission ep1 = new EnvironmentPermission (EnvironmentPermissionAccess.Write, envVariables);
310 EnvironmentPermission ep2 = new EnvironmentPermission (EnvironmentPermissionAccess.Read, envVariables);
311 Assert ("IsSubsetOf(nosubset1)", !ep1.IsSubsetOf (ep2));
312 Assert ("IsSubsetOf(nosubset2)", !ep2.IsSubsetOf (ep1));
313 EnvironmentPermission ep3 = new EnvironmentPermission (EnvironmentPermissionAccess.Write, "TMP");
314 Assert ("IsSubsetOf(TMP)", !ep1.IsSubsetOf (ep3));
315 Assert ("TMP.IsSubsetOf()", ep3.IsSubsetOf (ep1));
319 [ExpectedException (typeof (ArgumentException))]
320 public void IsSubsetOfBadPermission ()
322 EnvironmentPermission ep1 = new EnvironmentPermission (EnvironmentPermissionAccess.Read, envVariables);
323 FileDialogPermission fdp2 = new FileDialogPermission (PermissionState.Unrestricted);
324 Assert ("IsSubsetOf(FileDialogPermission)", ep1.IsSubsetOf (fdp2));