2004-09-03 Sebastien Pouliot <sebastien@ximian.com>
authorSebastien Pouliot <sebastien@ximian.com>
Fri, 3 Sep 2004 22:43:33 +0000 (22:43 -0000)
committerSebastien Pouliot <sebastien@ximian.com>
Fri, 3 Sep 2004 22:43:33 +0000 (22:43 -0000)
* RegistryPermissionTest.cs: Added tests for subsets on keys (as this
is valid).

svn path=/trunk/mcs/; revision=33319

mcs/class/corlib/Test/System.Security.Permissions/ChangeLog
mcs/class/corlib/Test/System.Security.Permissions/RegistryPermissionTest.cs

index 2a32d5da1e963a2e362f6662f96104e95adc43fe..bb47ee7f4b74816349600cae29d812f4e2513fb9 100644 (file)
@@ -1,6 +1,7 @@
 2004-09-03  Sebastien Pouliot  <sebastien@ximian.com>
 
        * RegistryPermissionTest.cs: New. Unit tests for RegistryPermission.
+       Added tests for subsets on keys (as this is valid).
        * UrlIdentityPermissionTest.cs: Added a test for Copy an empty object
        which results in a different behaviour in Fx 1.1 and 2.0.
 
index c9f687c968d57420e25fdb3d0a25aca92365956c..017fc230846662c5892ecd9eadfd729863a6b918 100644 (file)
@@ -38,7 +38,9 @@ namespace MonoTests.System.Security.Permissions {
 
                private static string className = "System.Security.Permissions.RegistryPermission, ";
                private static string keyCurrentUser = @"HKEY_CURRENT_USER\Software\Novell iFolder\spouliot\Home";
+               private static string keyCurrentUserSubset = @"HKEY_CURRENT_USER\Software\Novell iFolder\";
                private static string keyLocalMachine = @"HKEY_LOCAL_MACHINE\SOFTWARE\Novell\Novell iFolder\1.00.000";
+               private static string keyLocalMachineSubset = @"HKEY_LOCAL_MACHINE\SOFTWARE\Novell\";
 
                [Test]
                public void PermissionStateNone ()
@@ -123,6 +125,27 @@ namespace MonoTests.System.Security.Permissions {
                        AssertEquals ("AddPathList-ToXml-Write", @"HKEY_LOCAL_MACHINE\SOFTWARE\Novell\Novell iFolder\1.00.000;HKEY_CURRENT_USER\Software\Novell iFolder\spouliot\Home", se.Attribute ("Write"));
                }
 
+               [Test]
+               public void AddPathList_Subset ()
+               {
+                       RegistryPermission ep = new RegistryPermission (PermissionState.None);
+                       ep.AddPathList (RegistryPermissionAccess.AllAccess, keyLocalMachine);
+                       ep.AddPathList (RegistryPermissionAccess.AllAccess, keyLocalMachineSubset);
+                       SecurityElement se = ep.ToXml ();
+                       AssertEquals ("AddPathList-ToXml-Create", keyLocalMachineSubset, se.Attribute ("Create"));
+                       AssertEquals ("AddPathList-ToXml-Read", keyLocalMachineSubset, se.Attribute ("Read"));
+                       AssertEquals ("AddPathList-ToXml-Write", keyLocalMachineSubset, se.Attribute ("Write"));
+
+                       ep = new RegistryPermission (PermissionState.None);
+                       ep.AddPathList (RegistryPermissionAccess.AllAccess, keyLocalMachine);
+                       ep.AddPathList (RegistryPermissionAccess.Create, keyLocalMachineSubset);
+                       ep.AddPathList (RegistryPermissionAccess.Read, keyCurrentUser);
+                       se = ep.ToXml ();
+                       AssertEquals ("AddPathList-ToXml-Create", keyLocalMachineSubset, se.Attribute ("Create"));
+                       AssertEquals ("AddPathList-ToXml-Read", keyLocalMachine + ";" + keyCurrentUser, se.Attribute ("Read"));
+                       AssertEquals ("AddPathList-ToXml-Write", keyLocalMachine, se.Attribute ("Write"));
+               }
+
                [Test]
                [ExpectedException (typeof (ArgumentException))]
                public void GetPathListAllAccess ()
@@ -266,6 +289,17 @@ namespace MonoTests.System.Security.Permissions {
                        AssertEquals ("EP1 U EP2 U EP3 == EP1+2+3", ep4.ToXml ().ToString (), ep5.ToXml ().ToString ());
                }
 
+               [Test]
+               public void Union_Subset ()
+               {
+                       RegistryPermission ep1 = new RegistryPermission (RegistryPermissionAccess.AllAccess, keyLocalMachine);
+                       RegistryPermission ep2 = new RegistryPermission (RegistryPermissionAccess.Create, keyLocalMachineSubset);
+                       RegistryPermission ep3 = (RegistryPermission)ep1.Union (ep2);
+                       AssertEquals ("Create", keyLocalMachineSubset, ep3.GetPathList (RegistryPermissionAccess.Create));
+                       AssertEquals ("Read", keyLocalMachine, ep3.GetPathList (RegistryPermissionAccess.Read));
+                       AssertEquals ("Write", keyLocalMachine, ep3.GetPathList (RegistryPermissionAccess.Write));
+               }
+
                [Test]
                [ExpectedException (typeof (ArgumentException))]
                public void UnionWithBadPermission ()
@@ -322,6 +356,17 @@ namespace MonoTests.System.Security.Permissions {
                        AssertEquals ("Intersect-AllAccess-Write", keyLocalMachine, ep3.GetPathList (RegistryPermissionAccess.Write));
                }
 
+               [Test]
+               public void Intersect_Subset ()
+               {
+                       RegistryPermission ep1 = new RegistryPermission (RegistryPermissionAccess.AllAccess, keyLocalMachine);
+                       RegistryPermission ep2 = new RegistryPermission (RegistryPermissionAccess.Create, keyLocalMachineSubset);
+                       RegistryPermission ep3 = (RegistryPermission)ep1.Intersect (ep2);
+                       AssertEquals ("Create", keyLocalMachine, ep3.GetPathList (RegistryPermissionAccess.Create));
+                       AssertNull ("Read", ep3.GetPathList (RegistryPermissionAccess.Read));
+                       AssertNull ("Write", ep3.GetPathList (RegistryPermissionAccess.Write));
+               }
+
                [Test]
                [ExpectedException (typeof (ArgumentException))]
                public void IntersectWithBadPermission ()