2 // UIPermissionTest.cs - NUnit Test Cases for UIPermission
\r
5 // Sebastien Pouliot <sebastien@ximian.com>
\r
7 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
\r
9 // Permission is hereby granted, free of charge, to any person obtaining
\r
10 // a copy of this software and associated documentation files (the
\r
11 // "Software"), to deal in the Software without restriction, including
\r
12 // without limitation the rights to use, copy, modify, merge, publish,
\r
13 // distribute, sublicense, and/or sell copies of the Software, and to
\r
14 // permit persons to whom the Software is furnished to do so, subject to
\r
15 // the following conditions:
\r
17 // The above copyright notice and this permission notice shall be
\r
18 // included in all copies or substantial portions of the Software.
\r
20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
\r
21 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
\r
22 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
\r
23 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
\r
24 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
\r
25 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
\r
26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\r
29 using NUnit.Framework;
\r
31 using System.Security;
\r
32 using System.Security.Permissions;
\r
34 namespace MonoTests.System.Security.Permissions {
\r
37 public class UIPermissionTest {
\r
40 public void PermissionStateNone ()
\r
42 UIPermission uip = new UIPermission (PermissionState.None);
\r
43 Assert.AreEqual (UIPermissionClipboard.NoClipboard, uip.Clipboard, "Clipboard");
\r
44 Assert.AreEqual (UIPermissionWindow.NoWindows, uip.Window, "Window");
\r
45 Assert.IsFalse (uip.IsUnrestricted (), "IsUnrestricted");
\r
47 SecurityElement se = uip.ToXml ();
\r
48 Assert.IsNull (se.Attribute ("Unrestricted"), "Xml-Unrestricted");
\r
50 UIPermission copy = (UIPermission)uip.Copy ();
\r
51 Assert.AreEqual (UIPermissionClipboard.NoClipboard, uip.Clipboard, "Copy-Clipboard");
\r
52 Assert.AreEqual (UIPermissionWindow.NoWindows, uip.Window, "Copy-Window");
\r
53 Assert.IsFalse (uip.IsUnrestricted (), "Copy-IsUnrestricted");
\r
57 public void PermissionStateUnrestricted ()
\r
59 UIPermission uip = new UIPermission (PermissionState.Unrestricted);
\r
60 Assert.AreEqual (UIPermissionClipboard.AllClipboard, uip.Clipboard, "Clipboard");
\r
61 Assert.AreEqual (UIPermissionWindow.AllWindows, uip.Window, "Window");
\r
62 Assert.IsTrue (uip.IsUnrestricted (), "IsUnrestricted");
\r
64 SecurityElement se = uip.ToXml ();
\r
65 Assert.AreEqual ("true", se.Attribute ("Unrestricted"), "Xml-Unrestricted");
\r
67 UIPermission copy = (UIPermission)uip.Copy ();
\r
68 Assert.AreEqual (UIPermissionClipboard.AllClipboard, uip.Clipboard, "Copy-Clipboard");
\r
69 Assert.AreEqual (UIPermissionWindow.AllWindows, uip.Window, "Copy-Window");
\r
70 Assert.IsTrue (uip.IsUnrestricted (), "Copy-IsUnrestricted");
\r
74 [ExpectedException (typeof (ArgumentException))]
\r
75 public void PermissionStateInvalid ()
\r
77 UIPermission uip = new UIPermission ((PermissionState)2);
\r
81 public void UIPermission_Clipboard_All ()
\r
83 UIPermission uip = new UIPermission (UIPermissionClipboard.AllClipboard);
\r
84 Assert.AreEqual (UIPermissionClipboard.AllClipboard, uip.Clipboard, "Clipboard");
\r
85 Assert.AreEqual (UIPermissionWindow.NoWindows, uip.Window, "Window");
\r
86 Assert.IsFalse (uip.IsUnrestricted (), "IsUnrestricted");
\r
90 public void UIPermission_Clipboard_Own ()
\r
92 UIPermission uip = new UIPermission (UIPermissionClipboard.OwnClipboard);
\r
93 Assert.AreEqual (UIPermissionClipboard.OwnClipboard, uip.Clipboard, "Clipboard");
\r
94 Assert.AreEqual (UIPermissionWindow.NoWindows, uip.Window, "Window");
\r
95 Assert.IsFalse (uip.IsUnrestricted (), "IsUnrestricted");
\r
99 public void UIPermission_Clipboard_No ()
\r
101 UIPermission uip = new UIPermission (UIPermissionClipboard.NoClipboard);
\r
102 Assert.AreEqual (UIPermissionClipboard.NoClipboard, uip.Clipboard, "Clipboard");
\r
103 Assert.AreEqual (UIPermissionWindow.NoWindows, uip.Window, "Window");
\r
104 Assert.IsFalse (uip.IsUnrestricted (), "IsUnrestricted");
\r
108 [ExpectedException (typeof (ArgumentException))]
\r
109 public void UIPermission_Clipboard_Bad ()
\r
111 UIPermission uip = new UIPermission ((UIPermissionClipboard)128);
\r
115 public void UIPermission_Windows_All ()
\r
117 UIPermission uip = new UIPermission (UIPermissionWindow.AllWindows);
\r
118 Assert.AreEqual (UIPermissionClipboard.NoClipboard, uip.Clipboard, "Clipboard");
\r
119 Assert.AreEqual (UIPermissionWindow.AllWindows, uip.Window, "Window");
\r
120 Assert.IsFalse (uip.IsUnrestricted (), "IsUnrestricted");
\r
124 public void UIPermission_Windows_SafeSubWindows ()
\r
126 UIPermission uip = new UIPermission (UIPermissionWindow.SafeSubWindows);
\r
127 Assert.AreEqual (UIPermissionClipboard.NoClipboard, uip.Clipboard, "Clipboard");
\r
128 Assert.AreEqual (UIPermissionWindow.SafeSubWindows, uip.Window, "Window");
\r
129 Assert.IsFalse (uip.IsUnrestricted (), "IsUnrestricted");
\r
133 public void UIPermission_Windows_SafeTopLevelWindows ()
\r
135 UIPermission uip = new UIPermission (UIPermissionWindow.SafeTopLevelWindows);
\r
136 Assert.AreEqual (UIPermissionClipboard.NoClipboard, uip.Clipboard, "Clipboard");
\r
137 Assert.AreEqual (UIPermissionWindow.SafeTopLevelWindows, uip.Window, "Window");
\r
138 Assert.IsFalse (uip.IsUnrestricted (), "IsUnrestricted");
\r
142 public void UIPermission_Windows_No ()
\r
144 UIPermission uip = new UIPermission (UIPermissionWindow.NoWindows);
\r
145 Assert.AreEqual (UIPermissionClipboard.NoClipboard, uip.Clipboard, "Clipboard");
\r
146 Assert.AreEqual (UIPermissionWindow.NoWindows, uip.Window, "Window");
\r
147 Assert.IsFalse (uip.IsUnrestricted (), "IsUnrestricted");
\r
151 [ExpectedException (typeof (ArgumentException))]
\r
152 public void UIPermission_Windows_Bad ()
\r
154 UIPermission uip = new UIPermission ((UIPermissionWindow)128);
\r
158 [ExpectedException (typeof (ArgumentException))]
\r
159 public void Clipboard_Bad ()
\r
161 UIPermission uip = new UIPermission (PermissionState.None);
\r
162 uip.Clipboard = (UIPermissionClipboard) 128;
\r
166 [ExpectedException (typeof (ArgumentException))]
\r
167 public void Window_Bad ()
\r
169 UIPermission uip = new UIPermission (PermissionState.None);
\r
170 uip.Window = (UIPermissionWindow) 128;
\r
174 public void Unrestricted ()
\r
176 UIPermission uip = new UIPermission (PermissionState.None);
\r
177 SecurityElement se = uip.ToXml ();
\r
178 // attribute value is not case-sensitive
\r
179 se.AddAttribute ("Unrestricted", "TRUE");
\r
181 Assert.IsTrue (uip.IsUnrestricted (), "IsUnrestricted-TRUE");
\r
183 uip = new UIPermission (PermissionState.None);
\r
184 // attribute name is not case-sensitive either!!!
\r
185 se.AddAttribute ("UNRESTRICTED", "TRUE");
\r
187 Assert.IsTrue (uip.IsUnrestricted (), "IsUnrestricted-UPPER");
\r
190 private void Compare (UIPermission uip1, UIPermission uip2, string prefix)
\r
192 Assert.AreEqual (uip1.Clipboard, uip2.Clipboard, prefix + ".Clipboard");
\r
193 Assert.AreEqual (uip1.Window, uip2.Window, prefix + ".Window");
\r
194 Assert.AreEqual (uip1.IsUnrestricted (), uip2.IsUnrestricted (), prefix + ".IsUnrestricted ()");
\r
198 public void Intersect ()
\r
200 UIPermission clip_all = new UIPermission (UIPermissionClipboard.AllClipboard);
\r
201 UIPermission clip_own = new UIPermission (UIPermissionClipboard.OwnClipboard);
\r
202 UIPermission intersect = (UIPermission)clip_all.Intersect (clip_own);
\r
203 Compare (clip_own, intersect, "clip_all N clip_own");
\r
204 Assert.IsFalse (Object.ReferenceEquals (clip_own, intersect), "!ReferenceEquals1");
\r
205 Assert.IsTrue (intersect.IsSubsetOf (clip_all), "intersect.IsSubsetOf (clip_all)");
\r
206 Assert.IsTrue (intersect.IsSubsetOf (clip_own), "intersect.IsSubsetOf (clip_own)");
\r
208 UIPermission win_all = new UIPermission (UIPermissionWindow.AllWindows);
\r
209 UIPermission win_safe = new UIPermission (UIPermissionWindow.SafeSubWindows);
\r
210 intersect = (UIPermission) win_all.Intersect (win_safe);
\r
211 Compare (win_safe, intersect, "win_all N win_safe");
\r
212 Assert.IsFalse (Object.ReferenceEquals (win_safe, intersect), "!ReferenceEquals2");
\r
213 Assert.IsTrue (intersect.IsSubsetOf (win_all), "intersect.IsSubsetOf (win_all)");
\r
214 Assert.IsTrue (intersect.IsSubsetOf (win_safe), "intersect.IsSubsetOf (win_safe)");
\r
216 intersect = (UIPermission)win_all.Intersect (clip_all);
\r
217 Assert.IsNull (intersect, "win_all N clip_all");
\r
219 intersect = (UIPermission)win_all.Intersect (null);
\r
220 Assert.IsNull (intersect, "win_all N null");
\r
222 intersect = (UIPermission)clip_all.Intersect (null);
\r
223 Assert.IsNull (intersect, "clip_all N null");
\r
225 UIPermission empty = new UIPermission (PermissionState.None);
\r
226 intersect = (UIPermission)clip_all.Intersect (empty);
\r
227 Assert.IsNull (intersect, "clip_all N null");
\r
229 UIPermission unrestricted = new UIPermission (PermissionState.Unrestricted);
\r
230 intersect = (UIPermission)clip_all.Intersect (unrestricted);
\r
231 Compare (clip_all, intersect, "clip_all N unrestricted");
\r
232 Assert.IsFalse (Object.ReferenceEquals (clip_all, intersect), "!ReferenceEquals4");
\r
233 Assert.IsTrue (intersect.IsSubsetOf (clip_all), "intersect.IsSubsetOf (clip_all)");
\r
234 Assert.IsTrue (intersect.IsSubsetOf (unrestricted), "intersect.IsSubsetOf (unrestricted)");
\r
238 [ExpectedException (typeof (ArgumentException))]
\r
239 public void Intersect_DifferentPermissions ()
\r
241 UIPermission a = new UIPermission (PermissionState.None);
\r
242 SecurityPermission b = new SecurityPermission (PermissionState.None);
\r
247 public void IsSubsetOf ()
\r
249 UIPermission unrestricted = new UIPermission (PermissionState.Unrestricted);
\r
250 UIPermission empty = new UIPermission (PermissionState.None);
\r
252 Assert.IsFalse (unrestricted.IsSubsetOf (empty), "unrestricted.IsSubsetOf (empty)");
\r
253 Assert.IsTrue (empty.IsSubsetOf (unrestricted), "empty.IsSubsetOf (unrestricted)");
\r
254 Assert.IsTrue (empty.IsSubsetOf (null), "empty.IsSubsetOf (null)");
\r
255 Assert.IsFalse (unrestricted.IsSubsetOf (null), "unrestricted.IsSubsetOf (null)");
\r
259 [ExpectedException (typeof (ArgumentException))]
\r
260 public void IsSubsetOf_DifferentPermissions ()
\r
262 UIPermission a = new UIPermission (PermissionState.None);
\r
263 SecurityPermission b = new SecurityPermission (PermissionState.None);
\r
268 public void Union ()
\r
270 UIPermission none = new UIPermission (PermissionState.None);
\r
271 UIPermission union = (UIPermission)none.Union (null);
\r
272 Compare (none, union, "none U null");
\r
273 Assert.IsFalse (Object.ReferenceEquals (none, union), "!ReferenceEquals1");
\r
274 Assert.IsTrue (none.IsSubsetOf (union), "none.IsSubsetOf (union)");
\r
276 union = (UIPermission)none.Union (new UIPermission (PermissionState.None));
\r
277 Assert.IsNull (union, "none U none");
\r
278 Assert.IsTrue (none.IsSubsetOf (null), "none.IsSubsetOf (null)");
\r
280 UIPermission unrestricted = new UIPermission (PermissionState.Unrestricted);
\r
281 union = (UIPermission)none.Union (unrestricted);
\r
282 Compare (unrestricted, union, "none U unrestricted");
\r
283 Assert.IsTrue (union.IsUnrestricted (), "IsUnrestricted-1");
\r
284 Assert.IsFalse (Object.ReferenceEquals (unrestricted, union), "!ReferenceEquals2");
\r
285 Assert.IsTrue (none.IsSubsetOf (union), "none.IsSubsetOf (union)");
\r
286 Assert.IsTrue (unrestricted.IsSubsetOf (union), "unrestricted.IsSubsetOf (union)");
\r
288 union = (UIPermission)unrestricted.Union (unrestricted);
\r
289 Compare (unrestricted, union, "unrestricted U unrestricted");
\r
290 Assert.IsTrue (union.IsUnrestricted (), "IsUnrestricted-2");
\r
291 Assert.IsFalse (Object.ReferenceEquals (unrestricted, union), "!ReferenceEquals3");
\r
292 Assert.IsTrue (unrestricted.IsSubsetOf (union), "unrestricted.IsSubsetOf (union)");
\r
294 UIPermission clip_all = new UIPermission (UIPermissionClipboard.AllClipboard);
\r
295 UIPermission win_all = new UIPermission (UIPermissionWindow.AllWindows);
\r
296 union = (UIPermission)clip_all.Union (win_all);
\r
297 Compare (unrestricted, union, "clip_all U win_all");
\r
298 Assert.IsTrue (union.IsUnrestricted (), "IsUnrestricted-3");
\r
299 Assert.IsTrue (clip_all.IsSubsetOf (union), "clip_all.IsSubsetOf (union)");
\r
300 Assert.IsTrue (win_all.IsSubsetOf (union), "win_all.IsSubsetOf (union)");
\r
304 [ExpectedException (typeof (ArgumentException))]
\r
305 public void Union_DifferentPermissions ()
\r
307 UIPermission a = new UIPermission (PermissionState.None);
\r
308 SecurityPermission b = new SecurityPermission (PermissionState.None);
\r
313 [ExpectedException (typeof (ArgumentNullException))]
\r
314 public void FromXml_Null ()
\r
316 UIPermission uip = new UIPermission (PermissionState.None);
\r
317 uip.FromXml (null);
\r
321 [ExpectedException (typeof (ArgumentException))]
\r
322 public void FromXml_WrongTag ()
\r
324 UIPermission uip = new UIPermission (PermissionState.None);
\r
325 SecurityElement se = uip.ToXml ();
\r
326 se.Tag = "IMono"; // instead of IPermission
\r
331 [ExpectedException (typeof (ArgumentException))]
\r
332 public void FromXml_WrongTagCase ()
\r
334 UIPermission uip = new UIPermission (PermissionState.None);
\r
335 SecurityElement se = uip.ToXml ();
\r
336 se.Tag = "IPERMISSION"; // instead of IPermission
\r
341 public void FromXml_WrongClass ()
\r
343 UIPermission uip = new UIPermission (PermissionState.None);
\r
344 SecurityElement se = uip.ToXml ();
\r
346 SecurityElement w = new SecurityElement (se.Tag);
\r
347 w.AddAttribute ("class", "Wrong" + se.Attribute ("class"));
\r
348 w.AddAttribute ("version", se.Attribute ("version"));
\r
350 // doesn't care of the class name at that stage
\r
351 // anyway the class has already be created so...
\r
355 public void FromXml_NoClass ()
\r
357 UIPermission uip = new UIPermission (PermissionState.None);
\r
358 SecurityElement se = uip.ToXml ();
\r
360 SecurityElement w = new SecurityElement (se.Tag);
\r
361 w.AddAttribute ("version", se.Attribute ("version"));
\r
363 // doesn't even care of the class attribute presence
\r
367 [ExpectedException (typeof (ArgumentException))]
\r
368 public void FromXml_WrongVersion ()
\r
370 UIPermission uip = new UIPermission (PermissionState.None);
\r
371 SecurityElement se = uip.ToXml ();
\r
373 SecurityElement w = new SecurityElement (se.Tag);
\r
374 w.AddAttribute ("class", se.Attribute ("class"));
\r
375 w.AddAttribute ("version", "2");
\r
380 public void FromXml_NoVersion ()
\r
382 UIPermission uip = new UIPermission (PermissionState.None);
\r
383 SecurityElement se = uip.ToXml ();
\r
385 SecurityElement w = new SecurityElement (se.Tag);
\r
386 w.AddAttribute ("class", se.Attribute ("class"));
\r