1 // 2 // RegistryPermissionTest.cs - NUnit Test Cases for RegistryPermission 3 // 4 // Author: 5 // Sebastien Pouliot <sebastien@ximian.com> 6 // 7 // Copyright (C) 2004 Novell, Inc (http://www.novell.com) 8 // 9 // Permission is hereby granted, free of charge, to any person obtaining 10 // a copy of this software and associated documentation files (the 11 // "Software"), to deal in the Software without restriction, including 12 // without limitation the rights to use, copy, modify, merge, publish, 13 // distribute, sublicense, and/or sell copies of the Software, and to 14 // permit persons to whom the Software is furnished to do so, subject to 15 // the following conditions: 16 // 17 // The above copyright notice and this permission notice shall be 18 // included in all copies or substantial portions of the Software. 19 // 20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 21 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 22 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 23 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 24 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 25 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 27 // 28 29 using NUnit.Framework; 30 using System; 31 using System.Security; 32 using System.Security.Permissions; 33 34 namespace MonoTests.System.Security.Permissions { 35 36 [TestFixture] 37 public class RegistryPermissionTest { 38 39 private static string className = "System.Security.Permissions.RegistryPermission, "; 40 private static string keyCurrentUser = @"HKEY_CURRENT_USER\Software\Novell iFolder\spouliot\Home"; 41 private static string keyLocalMachine = @"HKEY_LOCAL_MACHINE\SOFTWARE\Novell\Novell iFolder\1.00.000"; 42 private static string keyLocalMachineSubset = @"HKEY_LOCAL_MACHINE\SOFTWARE\Novell\"; 43 44 [Test] PermissionStateNone()45 public void PermissionStateNone () 46 { 47 RegistryPermission ep = new RegistryPermission (PermissionState.None); 48 Assert.IsNotNull (ep, "RegistryPermission(PermissionState.None)"); 49 Assert.IsTrue (!ep.IsUnrestricted (), "IsUnrestricted"); 50 RegistryPermission copy = (RegistryPermission)ep.Copy (); 51 Assert.AreEqual (ep.IsUnrestricted (), copy.IsUnrestricted (), "Copy.IsUnrestricted"); 52 SecurityElement se = ep.ToXml (); 53 Assert.IsTrue (se.Attribute ("class").StartsWith (className), "ToXml-class"); 54 Assert.AreEqual ("1", se.Attribute ("version"), "ToXml-version"); 55 } 56 57 [Test] PermissionStateUnrestricted()58 public void PermissionStateUnrestricted () 59 { 60 RegistryPermission ep = new RegistryPermission (PermissionState.Unrestricted); 61 Assert.IsNotNull (ep, "RegistryPermission(PermissionState.Unrestricted)"); 62 Assert.IsTrue (ep.IsUnrestricted (), "IsUnrestricted"); 63 RegistryPermission copy = (RegistryPermission)ep.Copy (); 64 Assert.AreEqual (ep.IsUnrestricted (), copy.IsUnrestricted (), "Copy.IsUnrestricted"); 65 SecurityElement se = ep.ToXml (); 66 Assert.AreEqual ("true", se.Attribute ("Unrestricted"), "ToXml-Unrestricted"); 67 } 68 69 [Test] 70 [ExpectedException (typeof (ArgumentNullException))] NullPathList()71 public void NullPathList () 72 { 73 RegistryPermission ep = new RegistryPermission (RegistryPermissionAccess.AllAccess, null); 74 } 75 76 [Test] AllAccess()77 public void AllAccess () 78 { 79 RegistryPermission ep = new RegistryPermission (RegistryPermissionAccess.AllAccess, keyLocalMachine); 80 Assert.IsTrue (!ep.IsUnrestricted (), "IsUnrestricted"); 81 } 82 83 [Test] NoAccess()84 public void NoAccess () 85 { 86 RegistryPermission ep = new RegistryPermission (RegistryPermissionAccess.NoAccess, keyLocalMachine); 87 Assert.IsTrue (!ep.IsUnrestricted (), "IsUnrestricted"); 88 } 89 90 [Test] CreateAccess()91 public void CreateAccess () 92 { 93 RegistryPermission ep = new RegistryPermission (RegistryPermissionAccess.Create, keyLocalMachine); 94 Assert.IsTrue (!ep.IsUnrestricted (), "IsUnrestricted"); 95 } 96 97 [Test] ReadAccess()98 public void ReadAccess () 99 { 100 RegistryPermission ep = new RegistryPermission (RegistryPermissionAccess.Read, keyLocalMachine); 101 Assert.IsTrue (!ep.IsUnrestricted (), "IsUnrestricted"); 102 } 103 104 [Test] WriteAccess()105 public void WriteAccess () 106 { 107 RegistryPermission ep = new RegistryPermission (RegistryPermissionAccess.Write, keyLocalMachine); 108 Assert.IsTrue (!ep.IsUnrestricted (), "IsUnrestricted"); 109 } 110 111 [Test] AddPathList()112 public void AddPathList () 113 { 114 RegistryPermission ep = new RegistryPermission (PermissionState.None); 115 ep.AddPathList (RegistryPermissionAccess.AllAccess, keyLocalMachine); 116 // LAMESPEC NoAccess do not remove the keyLocalMachine from AllAccess 117 ep.AddPathList (RegistryPermissionAccess.NoAccess, keyLocalMachine); 118 ep.AddPathList (RegistryPermissionAccess.Read, keyCurrentUser); 119 ep.AddPathList (RegistryPermissionAccess.Write, keyCurrentUser); 120 SecurityElement se = ep.ToXml (); 121 // Note: Debugger can mess results (try to run without stepping) 122 Assert.AreEqual (@"HKEY_LOCAL_MACHINE\SOFTWARE\Novell\Novell iFolder\1.00.000", se.Attribute ("Create"), "AddPathList-ToXml-Create"); 123 Assert.AreEqual (@"HKEY_LOCAL_MACHINE\SOFTWARE\Novell\Novell iFolder\1.00.000;HKEY_CURRENT_USER\Software\Novell iFolder\spouliot\Home", se.Attribute ("Read"), "AddPathList-ToXml-Read"); 124 Assert.AreEqual (@"HKEY_LOCAL_MACHINE\SOFTWARE\Novell\Novell iFolder\1.00.000;HKEY_CURRENT_USER\Software\Novell iFolder\spouliot\Home", se.Attribute ("Write"), "AddPathList-ToXml-Write"); 125 } 126 127 [Test] AddPathList_Subset()128 public void AddPathList_Subset () 129 { 130 RegistryPermission ep = new RegistryPermission (PermissionState.None); 131 ep.AddPathList (RegistryPermissionAccess.AllAccess, keyLocalMachine); 132 ep.AddPathList (RegistryPermissionAccess.AllAccess, keyLocalMachineSubset); 133 SecurityElement se = ep.ToXml (); 134 Assert.AreEqual (keyLocalMachineSubset, se.Attribute ("Create"), "AddPathList-ToXml-Create"); 135 Assert.AreEqual (keyLocalMachineSubset, se.Attribute ("Read"), "AddPathList-ToXml-Read"); 136 Assert.AreEqual (keyLocalMachineSubset, se.Attribute ("Write"), "AddPathList-ToXml-Write"); 137 138 ep = new RegistryPermission (PermissionState.None); 139 ep.AddPathList (RegistryPermissionAccess.AllAccess, keyLocalMachine); 140 ep.AddPathList (RegistryPermissionAccess.Create, keyLocalMachineSubset); 141 ep.AddPathList (RegistryPermissionAccess.Read, keyCurrentUser); 142 se = ep.ToXml (); 143 Assert.AreEqual (keyLocalMachineSubset, se.Attribute ("Create"), "AddPathList-ToXml-Create"); 144 Assert.AreEqual (keyLocalMachine + ";" + keyCurrentUser, se.Attribute ("Read"), "AddPathList-ToXml-Read"); 145 Assert.AreEqual (keyLocalMachine, se.Attribute ("Write"), "AddPathList-ToXml-Write"); 146 } 147 148 [Test] 149 [ExpectedException (typeof (ArgumentException))] GetPathListAllAccess()150 public void GetPathListAllAccess () 151 { 152 RegistryPermission ep = new RegistryPermission (PermissionState.None); 153 ep.GetPathList (RegistryPermissionAccess.AllAccess); 154 } 155 156 [Test] 157 [ExpectedException (typeof (ArgumentException))] GetPathListNoAccess()158 public void GetPathListNoAccess () 159 { 160 RegistryPermission ep = new RegistryPermission (PermissionState.None); 161 ep.AddPathList (RegistryPermissionAccess.Read, keyCurrentUser); 162 ep.AddPathList (RegistryPermissionAccess.Write, keyLocalMachine); 163 Assert.AreEqual (String.Empty, ep.GetPathList (RegistryPermissionAccess.NoAccess), "GetPathList-NoAccess"); 164 } 165 166 [Test] GetPathList()167 public void GetPathList () 168 { 169 RegistryPermission ep = new RegistryPermission (PermissionState.None); 170 Assert.AreEqual (String.Empty, ep.GetPathList (RegistryPermissionAccess.Create), "GetPathList-Create-Empty"); 171 Assert.AreEqual (String.Empty, ep.GetPathList (RegistryPermissionAccess.Read), "GetPathList-Read-Empty"); 172 Assert.AreEqual (String.Empty, ep.GetPathList (RegistryPermissionAccess.Write), "GetPathList-Write-Empty"); 173 174 ep.AddPathList (RegistryPermissionAccess.Create, keyLocalMachine); 175 ep.AddPathList (RegistryPermissionAccess.Create, keyCurrentUser); 176 Assert.AreEqual (keyLocalMachine + ";" + keyCurrentUser, ep.GetPathList (RegistryPermissionAccess.Create), "GetPathList-Read"); 177 178 ep.AddPathList (RegistryPermissionAccess.Read, keyLocalMachine); 179 Assert.AreEqual (keyLocalMachine, ep.GetPathList (RegistryPermissionAccess.Read), "GetPathList-Read"); 180 181 ep.AddPathList (RegistryPermissionAccess.Write, keyCurrentUser); 182 Assert.AreEqual (keyCurrentUser, ep.GetPathList (RegistryPermissionAccess.Write), "GetPathList-Write"); 183 } 184 185 [Test] SetPathList()186 public void SetPathList () 187 { 188 RegistryPermission ep = new RegistryPermission (PermissionState.None); 189 ep.SetPathList (RegistryPermissionAccess.AllAccess, keyLocalMachine); 190 // LAMESPEC NoAccess do not remove the TMP from AllAccess 191 ep.SetPathList (RegistryPermissionAccess.NoAccess, keyLocalMachine); 192 ep.SetPathList (RegistryPermissionAccess.Read, keyCurrentUser); 193 ep.SetPathList (RegistryPermissionAccess.Write, keyCurrentUser); 194 SecurityElement se = ep.ToXml (); 195 Assert.AreEqual (keyCurrentUser, se.Attribute ("Read"), "SetPathList-ToXml-Read"); 196 Assert.AreEqual (keyCurrentUser, se.Attribute ("Write"), "SetPathList-ToXml-Write"); 197 } 198 199 [Test] 200 [ExpectedException (typeof (ArgumentNullException))] FromXmlNull()201 public void FromXmlNull () 202 { 203 RegistryPermission ep = new RegistryPermission (PermissionState.None); 204 ep.FromXml (null); 205 } 206 207 [Test] 208 [ExpectedException (typeof (ArgumentException))] FromXmlInvalidPermission()209 public void FromXmlInvalidPermission () 210 { 211 RegistryPermission ep = new RegistryPermission (PermissionState.None); 212 SecurityElement se = ep.ToXml (); 213 // can't modify - so we create our own 214 SecurityElement se2 = new SecurityElement ("IInvalidPermission", se.Text); 215 se2.AddAttribute ("class", se.Attribute ("class")); 216 se2.AddAttribute ("version", se.Attribute ("version")); 217 ep.FromXml (se2); 218 } 219 220 [Test] 221 [ExpectedException (typeof (ArgumentException))] FromXmlWrongVersion()222 public void FromXmlWrongVersion () 223 { 224 RegistryPermission ep = new RegistryPermission (PermissionState.None); 225 SecurityElement se = ep.ToXml (); 226 // can't modify - so we create our own 227 SecurityElement se2 = new SecurityElement (se.Tag, se.Text); 228 se2.AddAttribute ("class", se.Attribute ("class")); 229 se2.AddAttribute ("version", "2"); 230 ep.FromXml (se2); 231 } 232 233 [Category ("NotWorking")] 234 [Test] FromXml()235 public void FromXml () 236 { 237 RegistryPermission ep = new RegistryPermission (PermissionState.None); 238 SecurityElement se = ep.ToXml (); 239 Assert.IsNotNull (se, "ToXml()"); 240 ep.FromXml (se); 241 se.AddAttribute ("Read", keyLocalMachine); 242 ep.FromXml (se); 243 Assert.AreEqual (keyLocalMachine, ep.GetPathList (RegistryPermissionAccess.Read), "FromXml-Read"); 244 se.AddAttribute ("Write", keyLocalMachine); 245 ep.FromXml (se); 246 Assert.AreEqual (keyLocalMachine, ep.GetPathList (RegistryPermissionAccess.Read), "FromXml-Read"); 247 Assert.AreEqual (keyLocalMachine, ep.GetPathList (RegistryPermissionAccess.Write), "FromXml-Write"); 248 se.AddAttribute ("Create", keyCurrentUser); 249 ep.FromXml (se); 250 Assert.AreEqual (keyLocalMachine, ep.GetPathList (RegistryPermissionAccess.Read), "FromXml-Read"); 251 Assert.AreEqual (keyLocalMachine, ep.GetPathList (RegistryPermissionAccess.Write), "FromXml-Write"); 252 Assert.AreEqual (keyCurrentUser, ep.GetPathList (RegistryPermissionAccess.Create), "FromXml-Create"); 253 } 254 255 [Test] UnionWithNull()256 public void UnionWithNull () 257 { 258 RegistryPermission ep1 = new RegistryPermission (RegistryPermissionAccess.Read, keyLocalMachine); 259 RegistryPermission ep2 = null; 260 RegistryPermission ep3 = (RegistryPermission)ep1.Union (ep2); 261 Assert.AreEqual (ep1.ToXml ().ToString (), ep3.ToXml ().ToString (), "EP1 U null == EP1"); 262 } 263 264 [Test] UnionWithUnrestricted()265 public void UnionWithUnrestricted () 266 { 267 RegistryPermission ep1 = new RegistryPermission (PermissionState.Unrestricted); 268 RegistryPermission ep2 = new RegistryPermission (RegistryPermissionAccess.Read, keyLocalMachine); 269 RegistryPermission ep3 = (RegistryPermission)ep1.Union (ep2); 270 Assert.IsTrue (ep3.IsUnrestricted (), "Unrestricted U EP2 == Unrestricted"); 271 ep3 = (RegistryPermission)ep2.Union (ep1); 272 Assert.IsTrue (ep3.IsUnrestricted (), "EP2 U Unrestricted == Unrestricted"); 273 } 274 275 [Category ("NotWorking")] 276 [Test] Union()277 public void Union () 278 { 279 RegistryPermission ep1 = new RegistryPermission (RegistryPermissionAccess.Read, keyLocalMachine); 280 RegistryPermission ep2 = new RegistryPermission (RegistryPermissionAccess.Write, keyLocalMachine); 281 RegistryPermission ep3 = new RegistryPermission (RegistryPermissionAccess.Create, keyLocalMachine); 282 RegistryPermission ep4 = (RegistryPermission)ep1.Union (ep2); 283 ep4 = (RegistryPermission)ep4.Union (ep3); 284 RegistryPermission ep5 = new RegistryPermission (RegistryPermissionAccess.AllAccess, keyLocalMachine); 285 Assert.AreEqual (ep4.ToXml ().ToString (), ep5.ToXml ().ToString (), "EP1 U EP2 U EP3 == EP1+2+3"); 286 } 287 288 [Category ("NotWorking")] 289 [Test] Union_Subset()290 public void Union_Subset () 291 { 292 RegistryPermission ep1 = new RegistryPermission (RegistryPermissionAccess.AllAccess, keyLocalMachine); 293 RegistryPermission ep2 = new RegistryPermission (RegistryPermissionAccess.Create, keyLocalMachineSubset); 294 RegistryPermission ep3 = (RegistryPermission)ep1.Union (ep2); 295 Assert.AreEqual (keyLocalMachineSubset, ep3.GetPathList (RegistryPermissionAccess.Create), "Create"); 296 Assert.AreEqual (keyLocalMachine, ep3.GetPathList (RegistryPermissionAccess.Read), "Read"); 297 Assert.AreEqual (keyLocalMachine, ep3.GetPathList (RegistryPermissionAccess.Write), "Write"); 298 } 299 300 [Test] 301 [ExpectedException (typeof (ArgumentException))] UnionWithBadPermission()302 public void UnionWithBadPermission () 303 { 304 RegistryPermission ep1 = new RegistryPermission (RegistryPermissionAccess.Read, keyLocalMachine); 305 FileDialogPermission fdp2 = new FileDialogPermission (PermissionState.Unrestricted); 306 RegistryPermission ep3 = (RegistryPermission)ep1.Union (fdp2); 307 } 308 309 [Test] IntersectWithNull()310 public void IntersectWithNull () 311 { 312 RegistryPermission ep1 = new RegistryPermission (RegistryPermissionAccess.Read, keyLocalMachine); 313 RegistryPermission ep2 = null; 314 RegistryPermission ep3 = (RegistryPermission)ep1.Intersect (ep2); 315 Assert.IsNull (ep3, "EP1 N null == null"); 316 } 317 318 [Test] IntersectWithUnrestricted()319 public void IntersectWithUnrestricted () 320 { 321 RegistryPermission ep1 = new RegistryPermission (PermissionState.Unrestricted); 322 RegistryPermission ep2 = new RegistryPermission (RegistryPermissionAccess.Read, keyLocalMachine); 323 RegistryPermission ep3 = (RegistryPermission)ep1.Intersect (ep2); 324 Assert.IsTrue (!ep3.IsUnrestricted (), "Unrestricted N EP2 == EP2"); 325 Assert.AreEqual (ep2.ToXml ().ToString (), ep3.ToXml ().ToString (), "Unrestricted N EP2 == EP2"); 326 ep3 = (RegistryPermission)ep2.Intersect (ep1); 327 Assert.IsTrue (!ep3.IsUnrestricted (), "EP2 N Unrestricted == EP2"); 328 Assert.AreEqual (ep2.ToXml ().ToString (), ep3.ToXml ().ToString (), "EP2 N Unrestricted == EP2"); 329 } 330 331 [Test] Intersect()332 public void Intersect () 333 { 334 // no intersection 335 RegistryPermission ep1 = new RegistryPermission (RegistryPermissionAccess.Write, keyCurrentUser); 336 RegistryPermission ep2 = new RegistryPermission (RegistryPermissionAccess.Read, keyLocalMachine); 337 RegistryPermission ep3 = (RegistryPermission)ep1.Intersect (ep2); 338 Assert.IsNull (ep3, "EP1 N EP2 == null"); 339 // intersection in read 340 RegistryPermission ep4 = new RegistryPermission (RegistryPermissionAccess.Read, keyLocalMachine); 341 ep3 = (RegistryPermission)ep4.Intersect (ep2); 342 Assert.AreEqual (keyLocalMachine, ep3.GetPathList (RegistryPermissionAccess.Read), "Intersect-Read"); 343 // intersection in write 344 RegistryPermission ep5 = new RegistryPermission (RegistryPermissionAccess.Write, keyCurrentUser); 345 ep3 = (RegistryPermission)ep5.Intersect (ep1); 346 Assert.AreEqual (keyCurrentUser, ep3.GetPathList (RegistryPermissionAccess.Write), "Intersect-Write"); 347 // intersection in read and write 348 RegistryPermission ep6 = new RegistryPermission (RegistryPermissionAccess.AllAccess, keyLocalMachine); 349 RegistryPermission ep7 = new RegistryPermission (RegistryPermissionAccess.AllAccess, keyLocalMachine); 350 ep3 = (RegistryPermission)ep6.Intersect (ep7); 351 Assert.AreEqual (keyLocalMachine, ep3.GetPathList (RegistryPermissionAccess.Create), "Intersect-AllAccess-Create"); 352 Assert.AreEqual (keyLocalMachine, ep3.GetPathList (RegistryPermissionAccess.Read), "Intersect-AllAccess-Read"); 353 Assert.AreEqual (keyLocalMachine, ep3.GetPathList (RegistryPermissionAccess.Write), "Intersect-AllAccess-Write"); 354 } 355 356 [Category ("NotWorking")] 357 [Test] Intersect_Subset()358 public void Intersect_Subset () 359 { 360 RegistryPermission ep1 = new RegistryPermission (RegistryPermissionAccess.AllAccess, keyLocalMachine); 361 RegistryPermission ep2 = new RegistryPermission (RegistryPermissionAccess.Create, keyLocalMachineSubset); 362 RegistryPermission ep3 = (RegistryPermission)ep1.Intersect (ep2); 363 Assert.AreEqual (keyLocalMachine, ep3.GetPathList (RegistryPermissionAccess.Create), "Create"); 364 Assert.IsNull (ep3.GetPathList (RegistryPermissionAccess.Read), "Read"); 365 Assert.IsNull (ep3.GetPathList (RegistryPermissionAccess.Write), "Write"); 366 } 367 368 [Test] 369 [ExpectedException (typeof (ArgumentException))] IntersectWithBadPermission()370 public void IntersectWithBadPermission () 371 { 372 RegistryPermission ep1 = new RegistryPermission (RegistryPermissionAccess.Read, keyLocalMachine); 373 FileDialogPermission fdp2 = new FileDialogPermission (PermissionState.Unrestricted); 374 RegistryPermission ep3 = (RegistryPermission)ep1.Intersect (fdp2); 375 } 376 377 [Test] IsSubsetOfNull()378 public void IsSubsetOfNull () 379 { 380 RegistryPermission ep1 = new RegistryPermission (RegistryPermissionAccess.Read, keyLocalMachine); 381 Assert.IsTrue (!ep1.IsSubsetOf (null), "IsSubsetOf(null)"); 382 } 383 384 [Test] IsSubsetOfUnrestricted()385 public void IsSubsetOfUnrestricted () 386 { 387 RegistryPermission ep1 = new RegistryPermission (PermissionState.Unrestricted); 388 RegistryPermission ep2 = new RegistryPermission (RegistryPermissionAccess.Read, keyLocalMachine); 389 RegistryPermission ep3 = new RegistryPermission (PermissionState.Unrestricted); 390 Assert.IsTrue (!ep1.IsSubsetOf (ep2), "Unrestricted.IsSubsetOf()"); 391 Assert.IsTrue (ep2.IsSubsetOf (ep1), "IsSubsetOf(Unrestricted)"); 392 Assert.IsTrue (ep1.IsSubsetOf (ep3), "Unrestricted.IsSubsetOf(Unrestricted)"); 393 } 394 395 [Test] IsSubsetOf()396 public void IsSubsetOf () 397 { 398 RegistryPermission ep1 = new RegistryPermission (RegistryPermissionAccess.Write, keyLocalMachine); 399 RegistryPermission ep2 = new RegistryPermission (RegistryPermissionAccess.Read, keyLocalMachine); 400 Assert.IsTrue (!ep1.IsSubsetOf (ep2), "IsSubsetOf(nosubset1)"); 401 Assert.IsTrue (!ep2.IsSubsetOf (ep1), "IsSubsetOf(nosubset2)"); 402 RegistryPermission ep3 = new RegistryPermission (RegistryPermissionAccess.AllAccess, keyLocalMachine); 403 Assert.IsTrue (ep1.IsSubsetOf (ep3), "Write.IsSubsetOf(All)"); 404 Assert.IsTrue (!ep3.IsSubsetOf (ep1), "All.IsSubsetOf(Write)"); 405 } 406 407 [Test] 408 [ExpectedException (typeof (ArgumentException))] IsSubsetOfBadPermission()409 public void IsSubsetOfBadPermission () 410 { 411 RegistryPermission ep1 = new RegistryPermission (RegistryPermissionAccess.Read, keyLocalMachine); 412 FileDialogPermission fdp2 = new FileDialogPermission (PermissionState.Unrestricted); 413 Assert.IsTrue (ep1.IsSubsetOf (fdp2), "IsSubsetOf(FileDialogPermission)"); 414 } 415 } 416 } 417