2005-01-31 Zoltan Varga <vargaz@freemail.hu>
[mono.git] / mcs / class / corlib / Test / System.Security.Permissions / FileDialogPermissionTest.cs
1 //
2 // FileDialogPermissionTest.cs - NUnit Test Cases for FileDialogPermission
3 //
4 // Author:
5 //      Sebastien Pouliot (spouliot@motus.com)
6 //
7 // (C) 2003 Motus Technologies Inc. (http://www.motus.com)
8 //
9
10 using NUnit.Framework;
11 using System;
12 using System.Security;
13 using System.Security.Permissions;
14
15 namespace MonoTests.System.Security.Permissions {
16
17         [TestFixture]
18         public class FileDialogPermissionTest : Assertion {
19
20                 private static string className = "System.Security.Permissions.FileDialogPermission, ";
21
22                 [Test]
23                 public void PermissionStateNone () 
24                 {
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));
33                 }
34
35                 [Test]
36                 public void PermissionStateUnrestricted () 
37                 {
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));
45                 }
46
47                 [Test]
48                 public void Derestricted () 
49                 {
50                         FileDialogPermission p = new FileDialogPermission (PermissionState.Unrestricted);
51                         Assert ("IsUnrestricted", p.IsUnrestricted ());
52                         p.Access = FileDialogPermissionAccess.None;
53                         Assert ("IsUnrestricted", !p.IsUnrestricted ());
54                 }
55
56                 [Test]
57                 public void None () 
58                 {
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));
63                 }
64
65                 [Test]
66                 public void Open () 
67                 {
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));
72                 }
73
74                 [Test]
75                 public void Save () 
76                 {
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));
81                 }
82
83                 [Test]
84                 public void OpenSave () 
85                 {
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));
90                 }
91
92                 [Test]
93                 public void Access () 
94                 {
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 ());
105                 }
106
107                 [Test]
108                 [ExpectedException (typeof (ArgumentNullException))]
109                 public void FromXmlNull () 
110                 {
111                         FileDialogPermission p = new FileDialogPermission (PermissionState.None);
112                         p.FromXml (null);
113                 }
114
115                 [Test]
116                 [ExpectedException (typeof (ArgumentException))]
117                 public void FromXmlInvalidPermission () 
118                 {
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"));
125                         p.FromXml (se2);
126                 }
127
128                 [Test]
129                 [ExpectedException (typeof (ArgumentException))]
130                 public void FromXmlWrongVersion () 
131                 {
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");
138                         p.FromXml (se2);
139                 }
140
141                 [Test]
142                 public void FromXml () 
143                 {
144                         FileDialogPermission p = new FileDialogPermission (PermissionState.None);
145                         SecurityElement se = p.ToXml ();
146                         AssertNotNull ("ToXml()", se);
147
148                         FileDialogPermission p2 = (FileDialogPermission) p.Copy ();
149                         p2.FromXml (se);
150                         AssertEquals ("FromXml-None", FileDialogPermissionAccess.None, p2.Access);
151
152                         se.AddAttribute ("Access", "Open");
153                         p2.FromXml (se);
154                         AssertEquals ("FromXml-Open", FileDialogPermissionAccess.Open, p2.Access);
155
156                         se = p.ToXml ();
157                         se.AddAttribute ("Access", "Save");
158                         p2.FromXml (se);
159                         AssertEquals ("FromXml-Save", FileDialogPermissionAccess.Save, p2.Access);
160
161                         se = p.ToXml ();
162                         se.AddAttribute ("Unrestricted", "true");
163                         p2.FromXml (se);
164                         Assert ("FromXml-Unrestricted", p2.IsUnrestricted ());
165                 }
166
167                 [Test]
168                 public void UnionWithNull () 
169                 {
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 ());
174                 }
175
176                 [Test]
177                 public void UnionWithUnrestricted () 
178                 {
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 ());
185                 }
186
187                 [Test]
188                 public void Union () 
189                 {
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 ());
196                 }
197
198                 [Test]
199                 [ExpectedException (typeof (ArgumentException))]
200                 public void UnionWithBadPermission () 
201                 {
202                         FileDialogPermission p1 = new FileDialogPermission (FileDialogPermissionAccess.Open);
203                         EnvironmentPermission ep2 = new EnvironmentPermission (PermissionState.Unrestricted);
204                         FileDialogPermission p3 = (FileDialogPermission) p1.Union (ep2);
205                 }
206
207                 [Test]
208                 public void IntersectWithNull () 
209                 {
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);
214                 }
215
216                 [Test]
217                 public void IntersectWithUnrestricted () 
218                 {
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 ());
227                 }
228
229                 [Test]
230                 public void Intersect () 
231                 {
232                         // no intersection
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 ());
251                 }
252
253                 [Test]
254                 [ExpectedException (typeof (ArgumentException))]
255                 public void IntersectWithBadPermission () 
256                 {
257                         FileDialogPermission p1 = new FileDialogPermission (FileDialogPermissionAccess.Open);
258                         EnvironmentPermission ep2 = new EnvironmentPermission (PermissionState.Unrestricted);
259                         FileDialogPermission p3 = (FileDialogPermission) p1.Intersect (ep2);
260                 }
261
262                 [Test]
263                 public void IsSubsetOfNull () 
264                 {
265                         FileDialogPermission p1 = new FileDialogPermission (FileDialogPermissionAccess.Open);
266                         Assert ("IsSubsetOf(null)", !p1.IsSubsetOf (null));
267                 }
268
269                 [Test]
270                 public void IsSubsetOfUnrestricted () 
271                 {
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));
278                 }
279
280                 [Test]
281                 public void IsSubsetOf () 
282                 {
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));
290                 }
291
292                 [Test]
293                 [ExpectedException (typeof (ArgumentException))]
294                 public void IsSubsetOfBadPermission () 
295                 {
296                         FileDialogPermission p1 = new FileDialogPermission (FileDialogPermissionAccess.Open);
297                         EnvironmentPermission ep2 = new EnvironmentPermission (PermissionState.Unrestricted);
298                         Assert ("IsSubsetOf(EnvironmentPermission)", p1.IsSubsetOf (ep2));
299                 }
300         }
301 }