2 // FileDialogPermissionTest.cs - NUnit Test Cases for FileDialogPermission
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 FileDialogPermissionTest : Assertion {
20 private static string className = "System.Security.Permissions.FileDialogPermission, ";
23 public void PermissionStateNone ()
25 FileDialogPermission p = new FileDialogPermission (PermissionState.None);
26 AssertNotNull ("FileDialogPermission(PermissionState.None)", p);
27 Assert ("IsUnrestricted", !p.IsUnrestricted ());
28 FileDialogPermission copy = (FileDialogPermission) p.Copy ();
29 AssertEquals ("Copy.IsUnrestricted", p.IsUnrestricted (), copy.IsUnrestricted ());
30 SecurityElement se = p.ToXml ();
31 Assert ("ToXml-class", (se.Attributes ["class"] as string).StartsWith (className));
32 AssertEquals ("ToXml-version", "1", (se.Attributes ["version"] as string));
36 public void PermissionStateUnrestricted ()
38 FileDialogPermission p = new FileDialogPermission (PermissionState.Unrestricted);
39 AssertNotNull ("FileDialogPermission(PermissionState.Unrestricted)", p);
40 Assert ("IsUnrestricted", p.IsUnrestricted ());
41 FileDialogPermission copy = (FileDialogPermission) p.Copy ();
42 AssertEquals ("Copy.IsUnrestricted", p.IsUnrestricted (), copy.IsUnrestricted ());
43 SecurityElement se = p.ToXml ();
44 AssertEquals ("ToXml-Unrestricted", "true", (se.Attributes ["Unrestricted"] as string));
48 public void Derestricted ()
50 FileDialogPermission p = new FileDialogPermission (PermissionState.Unrestricted);
51 Assert ("IsUnrestricted", p.IsUnrestricted ());
52 p.Access = FileDialogPermissionAccess.None;
53 Assert ("IsUnrestricted", !p.IsUnrestricted ());
59 FileDialogPermission p = new FileDialogPermission (FileDialogPermissionAccess.None);
60 Assert ("IsUnrestricted", !p.IsUnrestricted ());
61 SecurityElement se = p.ToXml ();
62 AssertNull ("ToXml-Access=None", (se.Attributes ["Access"] as string));
68 FileDialogPermission p = new FileDialogPermission (FileDialogPermissionAccess.Open);
69 Assert ("IsUnrestricted", !p.IsUnrestricted ());
70 SecurityElement se = p.ToXml ();
71 AssertEquals ("ToXml-Access=Open", "Open", (se.Attributes ["Access"] as string));
77 FileDialogPermission p = new FileDialogPermission (FileDialogPermissionAccess.Save);
78 Assert ("IsUnrestricted", !p.IsUnrestricted ());
79 SecurityElement se = p.ToXml ();
80 AssertEquals ("ToXml-Access=Save", "Save", (se.Attributes ["Access"] as string));
84 public void OpenSave ()
86 FileDialogPermission p = new FileDialogPermission (FileDialogPermissionAccess.OpenSave);
87 Assert ("IsUnrestricted", p.IsUnrestricted ());
88 SecurityElement se = p.ToXml ();
89 AssertEquals ("ToXml-Unrestricted", "true", (se.Attributes ["Unrestricted"] as string));
95 FileDialogPermission p = new FileDialogPermission (PermissionState.None);
96 Assert ("Access(default).IsUnrestricted", !p.IsUnrestricted ());
97 p.Access = FileDialogPermissionAccess.None;
98 Assert ("Access(None).IsUnrestricted", !p.IsUnrestricted ());
99 p.Access = FileDialogPermissionAccess.Open;
100 Assert ("Access(Open).IsUnrestricted", !p.IsUnrestricted ());
101 p.Access = FileDialogPermissionAccess.Save;
102 Assert ("Access(Save).IsUnrestricted", !p.IsUnrestricted ());
103 p.Access = FileDialogPermissionAccess.OpenSave;
104 Assert ("Access(OpenSave).IsUnrestricted", p.IsUnrestricted ());
108 [ExpectedException (typeof (ArgumentNullException))]
109 public void FromXmlNull ()
111 FileDialogPermission p = new FileDialogPermission (PermissionState.None);
116 [ExpectedException (typeof (ArgumentException))]
117 public void FromXmlInvalidPermission ()
119 FileDialogPermission p = new FileDialogPermission (PermissionState.None);
120 SecurityElement se = p.ToXml ();
121 // can't modify - so we create our own
122 SecurityElement se2 = new SecurityElement ("IInvalidPermission", se.Text);
123 se2.AddAttribute ("class", se.Attribute ("class"));
124 se2.AddAttribute ("version", se.Attribute ("version"));
129 [ExpectedException (typeof (ArgumentException))]
130 public void FromXmlWrongVersion ()
132 FileDialogPermission p = new FileDialogPermission (PermissionState.None);
133 SecurityElement se = p.ToXml ();
134 // can't modify - so we create our own
135 SecurityElement se2 = new SecurityElement (se.Tag, se.Text);
136 se2.AddAttribute ("class", se.Attribute ("class"));
137 se2.AddAttribute ("version", "2");
142 public void FromXml ()
144 FileDialogPermission p = new FileDialogPermission (PermissionState.None);
145 SecurityElement se = p.ToXml ();
146 AssertNotNull ("ToXml()", se);
148 FileDialogPermission p2 = (FileDialogPermission) p.Copy ();
150 AssertEquals ("FromXml-None", FileDialogPermissionAccess.None, p2.Access);
152 se.AddAttribute ("Access", "Open");
154 AssertEquals ("FromXml-Open", FileDialogPermissionAccess.Open, p2.Access);
157 se.AddAttribute ("Access", "Save");
159 AssertEquals ("FromXml-Save", FileDialogPermissionAccess.Save, p2.Access);
162 se.AddAttribute ("Unrestricted", "true");
164 Assert ("FromXml-Unrestricted", p2.IsUnrestricted ());
168 public void UnionWithNull ()
170 FileDialogPermission p1 = new FileDialogPermission (FileDialogPermissionAccess.Open);
171 FileDialogPermission p2 = null;
172 FileDialogPermission p3 = (FileDialogPermission) p1.Union (p2);
173 AssertEquals ("P1 U null == P1", p1.ToXml ().ToString (), p3.ToXml ().ToString ());
177 public void UnionWithUnrestricted ()
179 FileDialogPermission p1 = new FileDialogPermission (PermissionState.Unrestricted);
180 FileDialogPermission p2 = new FileDialogPermission (FileDialogPermissionAccess.Open);
181 FileDialogPermission p3 = (FileDialogPermission) p1.Union (p2);
182 Assert ("Unrestricted U P2 == Unrestricted", p3.IsUnrestricted ());
183 p3 = (FileDialogPermission) p2.Union (p1);
184 Assert ("P2 U Unrestricted == Unrestricted", p3.IsUnrestricted ());
190 FileDialogPermission p1 = new FileDialogPermission (FileDialogPermissionAccess.Open);
191 FileDialogPermission p2 = new FileDialogPermission (FileDialogPermissionAccess.Save);
192 FileDialogPermission p3 = (FileDialogPermission) p1.Union (p2);
193 FileDialogPermission p4 = new FileDialogPermission (FileDialogPermissionAccess.OpenSave);
194 AssertEquals ("P1 U P2 == P1+2", p3.ToXml ().ToString (), p4.ToXml ().ToString ());
195 Assert ("P1+2==Unrestricted", p3.IsUnrestricted ());
199 [ExpectedException (typeof (ArgumentException))]
200 public void UnionWithBadPermission ()
202 FileDialogPermission p1 = new FileDialogPermission (FileDialogPermissionAccess.Open);
203 EnvironmentPermission ep2 = new EnvironmentPermission (PermissionState.Unrestricted);
204 FileDialogPermission p3 = (FileDialogPermission) p1.Union (ep2);
208 public void IntersectWithNull ()
210 FileDialogPermission p1 = new FileDialogPermission (FileDialogPermissionAccess.Open);
211 FileDialogPermission p2 = null;
212 FileDialogPermission p3 = (FileDialogPermission) p1.Intersect (p2);
213 AssertNull ("P1 N null == null", p3);
217 public void IntersectWithUnrestricted ()
219 FileDialogPermission p1 = new FileDialogPermission (PermissionState.Unrestricted);
220 FileDialogPermission p2 = new FileDialogPermission (FileDialogPermissionAccess.Open);
221 FileDialogPermission p3 = (FileDialogPermission) p1.Intersect (p2);
222 Assert ("Unrestricted N P2 == P2", !p3.IsUnrestricted ());
223 AssertEquals ("Unrestricted N EP2 == EP2", p2.ToXml ().ToString (), p3.ToXml ().ToString ());
224 p3 = (FileDialogPermission) p2.Intersect (p1);
225 Assert ("P2 N Unrestricted == P2", !p3.IsUnrestricted ());
226 AssertEquals ("P2 N Unrestricted == P2", p2.ToXml ().ToString (), p3.ToXml ().ToString ());
230 public void Intersect ()
233 FileDialogPermission p1 = new FileDialogPermission (FileDialogPermissionAccess.Open);
234 FileDialogPermission p2 = new FileDialogPermission (FileDialogPermissionAccess.Save);
235 FileDialogPermission p3 = (FileDialogPermission) p1.Intersect (p2);
236 AssertNull ("EP1 N EP2 == null", p3);
237 // intersection in open
238 FileDialogPermission p4 = new FileDialogPermission (FileDialogPermissionAccess.Open);
239 p3 = (FileDialogPermission) p4.Intersect (p1);
240 AssertEquals ("Intersect-Open", FileDialogPermissionAccess.Open, p3.Access);
241 // intersection in save
242 FileDialogPermission p5 = new FileDialogPermission (FileDialogPermissionAccess.Save);
243 p3 = (FileDialogPermission) p5.Intersect (p2);
244 AssertEquals ("Intersect-Save", FileDialogPermissionAccess.Save, p3.Access);
245 // intersection in open and save
246 FileDialogPermission p6 = new FileDialogPermission (FileDialogPermissionAccess.OpenSave);
247 FileDialogPermission p7 = new FileDialogPermission (FileDialogPermissionAccess.OpenSave);
248 p3 = (FileDialogPermission) p6.Intersect (p7);
249 AssertEquals ("Intersect-AllAccess-OpenSave", FileDialogPermissionAccess.OpenSave, p3.Access);
250 Assert ("Intersect-OpenSave-Unrestricted", p3.IsUnrestricted ());
254 [ExpectedException (typeof (ArgumentException))]
255 public void IntersectWithBadPermission ()
257 FileDialogPermission p1 = new FileDialogPermission (FileDialogPermissionAccess.Open);
258 EnvironmentPermission ep2 = new EnvironmentPermission (PermissionState.Unrestricted);
259 FileDialogPermission p3 = (FileDialogPermission) p1.Intersect (ep2);
263 public void IsSubsetOfNull ()
265 FileDialogPermission p1 = new FileDialogPermission (FileDialogPermissionAccess.Open);
266 Assert ("IsSubsetOf(null)", !p1.IsSubsetOf (null));
270 public void IsSubsetOfUnrestricted ()
272 FileDialogPermission p1 = new FileDialogPermission (PermissionState.Unrestricted);
273 FileDialogPermission p2 = new FileDialogPermission (FileDialogPermissionAccess.Open);
274 FileDialogPermission p3 = new FileDialogPermission (PermissionState.Unrestricted);
275 Assert ("Unrestricted.IsSubsetOf()", !p1.IsSubsetOf (p2));
276 Assert ("IsSubsetOf(Unrestricted)", p2.IsSubsetOf (p1));
277 Assert ("Unrestricted.IsSubsetOf(Unrestricted)", p1.IsSubsetOf (p3));
281 public void IsSubsetOf ()
283 FileDialogPermission p1 = new FileDialogPermission (FileDialogPermissionAccess.Open);
284 FileDialogPermission p2 = new FileDialogPermission (FileDialogPermissionAccess.Save);
285 Assert ("IsSubsetOf(nosubset1)", !p1.IsSubsetOf (p2));
286 Assert ("IsSubsetOf(nosubset2)", !p2.IsSubsetOf (p1));
287 FileDialogPermission p3 = new FileDialogPermission (FileDialogPermissionAccess.OpenSave);
288 Assert ("IsSubsetOf(OpenSave)", p1.IsSubsetOf (p3));
289 Assert ("OpenSave.IsSubsetOf()", !p3.IsSubsetOf (p1));
293 [ExpectedException (typeof (ArgumentException))]
294 public void IsSubsetOfBadPermission ()
296 FileDialogPermission p1 = new FileDialogPermission (FileDialogPermissionAccess.Open);
297 EnvironmentPermission ep2 = new EnvironmentPermission (PermissionState.Unrestricted);
298 Assert ("IsSubsetOf(EnvironmentPermission)", p1.IsSubsetOf (ep2));