2005-01-04 Sebastien Pouliot <sebastien@ximian.com>
authorSebastien Pouliot <sebastien@ximian.com>
Tue, 4 Jan 2005 14:11:00 +0000 (14:11 -0000)
committerSebastien Pouliot <sebastien@ximian.com>
Tue, 4 Jan 2005 14:11:00 +0000 (14:11 -0000)
* GacIdentityPermissionTest.cs, IBuiltInPermissionTest.cs,
PublisherIdentityPermissionAttributeTest.cs,
PublisherIdentityPermissionTest.cs,
SiteIdentityPermissionAttributeTest.cs, SiteIdentityPermissionTest.cs,
StrongNameIdentityPermissionAttributeTest.cs,
StrongNameIdentityPermissionTest.cs,
UrlIdentityPermissionAttributeTest.cs, UrlIdentityPermissionTest.cs,
ZoneIdentityPermissionTest.cs: Adjusted unit tests so they now execute
without errors on 2.0 Dec CTP.

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

12 files changed:
mcs/class/corlib/Test/System.Security.Permissions/ChangeLog
mcs/class/corlib/Test/System.Security.Permissions/GacIdentityPermissionTest.cs
mcs/class/corlib/Test/System.Security.Permissions/IBuiltInPermissionTest.cs
mcs/class/corlib/Test/System.Security.Permissions/PublisherIdentityPermissionAttributeTest.cs
mcs/class/corlib/Test/System.Security.Permissions/PublisherIdentityPermissionTest.cs
mcs/class/corlib/Test/System.Security.Permissions/SiteIdentityPermissionAttributeTest.cs
mcs/class/corlib/Test/System.Security.Permissions/SiteIdentityPermissionTest.cs
mcs/class/corlib/Test/System.Security.Permissions/StrongNameIdentityPermissionAttributeTest.cs
mcs/class/corlib/Test/System.Security.Permissions/StrongNameIdentityPermissionTest.cs
mcs/class/corlib/Test/System.Security.Permissions/UrlIdentityPermissionAttributeTest.cs
mcs/class/corlib/Test/System.Security.Permissions/UrlIdentityPermissionTest.cs
mcs/class/corlib/Test/System.Security.Permissions/ZoneIdentityPermissionTest.cs

index 37b70a56a0fb479de24ba2dd726980e96c5714f1..5dea960139f1bf0da28a5d82e6ef576982885e93 100644 (file)
@@ -1,3 +1,15 @@
+2005-01-04  Sebastien Pouliot  <sebastien@ximian.com>
+
+       * GacIdentityPermissionTest.cs, IBuiltInPermissionTest.cs, 
+       PublisherIdentityPermissionAttributeTest.cs, 
+       PublisherIdentityPermissionTest.cs, 
+       SiteIdentityPermissionAttributeTest.cs, SiteIdentityPermissionTest.cs,
+       StrongNameIdentityPermissionAttributeTest.cs, 
+       StrongNameIdentityPermissionTest.cs, 
+       UrlIdentityPermissionAttributeTest.cs, UrlIdentityPermissionTest.cs,
+       ZoneIdentityPermissionTest.cs: Adjusted unit tests so they now execute
+       without errors on 2.0 Dec CTP.
+
 2004-10-15  Sebastien Pouliot  <sebastien@ximian.com>
 
        * PrincipalPermissionTest.cs: Added two new tests to check for nulls
index f3d64a13c9c1022247d51a0ecd187892a642902e..8d65b2af7b06f92a723b713cfd0ed00968260555 100644 (file)
@@ -53,10 +53,25 @@ namespace MonoTests.System.Security.Permissions {
                }
 
                [Test]
-               [ExpectedException (typeof (ArgumentException))]
                public void PermissionStateUnrestricted ()
                {
                        GacIdentityPermission gip = new GacIdentityPermission (PermissionState.Unrestricted);
+
+                       // FX 2.0 now supports Unrestricted for Identity Permissions
+                       // However the XML doesn't show the Unrestricted status...
+
+                       SecurityElement se = gip.ToXml ();
+                       // only class and version are present
+                       Assert.AreEqual (2, se.Attributes.Count, "Xml-Attributes");
+                       Assert.IsNull (se.Children, "Xml-Children");
+
+                       GacIdentityPermission copy = (GacIdentityPermission)gip.Copy ();
+                       Assert.IsFalse (Object.ReferenceEquals (gip, copy), "ReferenceEquals");
+
+                       // ... and because it doesn't implement IUnrestrictedPermission
+                       // there is not way to know if it's unrestricted so...
+                       Assert.IsTrue (gip.Equals (new GacIdentityPermission (PermissionState.None)), "Unrestricted==None");
+                       // there is not much difference after all ;-)
                }
 
                [Test]
index 4cbecae769152276f38bb4d080686672bed0cb3d..61864cf201d4db1cb7c6d6c53d96947c6ddde626 100755 (executable)
@@ -1,4 +1,4 @@
-//\r
+//\r
 // IBuiltInPermissionTest.cs - NUnit Test Cases for IBuiltInPermission\r
 //\r
 // Author:\r
@@ -191,13 +191,6 @@ namespace MonoTests.System.Security.Permissions {
                        IPermission p = (IPermission)new KeyContainerPermission (PermissionState.None);\r
                        Assert.AreEqual (17, GetTokenIndex (p));\r
                }\r
-\r
-               [Test]\r
-               public void DataProtection ()\r
-               {\r
-                       IPermission p = (IPermission) new DataProtectionPermission (PermissionState.None);\r
-                       Assert.AreEqual (18, GetTokenIndex (p));\r
-               }\r
 #endif\r
        }\r
 }\r
index fff753b3fee35bd65ba0d07ce8ca3c1459e17954..6b290f4aa3703bd0324047c00206e5b19034da02 100644 (file)
@@ -216,7 +216,9 @@ namespace MonoTests.System.Security.Permissions {
                }
 
                [Test]
+#if !NET_2_0
                [ExpectedException (typeof (ArgumentException))]
+#endif
                public void Unrestricted () 
                {
                        PublisherIdentityPermissionAttribute a = new PublisherIdentityPermissionAttribute (SecurityAction.Assert);
index ef880403f2fdde8e08eb1fc8840d7e18bbe2b4c1..ea614fb4289bdf65d40279d563f6d8e89b0b67bf 100644 (file)
@@ -96,11 +96,28 @@ namespace MonoTests.System.Security.Permissions {
                        AssertNotNull ("PublisherIdentityPermission(PermissionState.None)", p);
                        PublisherIdentityPermission copy = (PublisherIdentityPermission) p.Copy ();
                        SecurityElement se = p.ToXml ();
-                       Assert ("ToXml-class", (se.Attributes ["class"] as string).StartsWith (className));
-                       AssertEquals ("ToXml-version", "1", (se.Attributes ["version"] as string));
+                       Assert ("ToXml-class", se.Attribute ("class").StartsWith (className));
+                       AssertEquals ("ToXml-version", "1", se.Attribute("version"));
+                       AssertNull ("ToXml-Unrestricted", se.Attribute("Unrestricted"));
                        AssertNull ("Certificate==null", p.Certificate);
                }
-
+#if NET_2_0
+               [Test]
+               public void PermissionStateUnrestricted ()
+               {
+                       // In 2.0 Unrestricted are permitted for identity permissions
+                       PublisherIdentityPermission p = new PublisherIdentityPermission (PermissionState.Unrestricted);
+                       AssertNotNull ("PublisherIdentityPermission(PermissionState.None)", p);
+                       PublisherIdentityPermission copy = (PublisherIdentityPermission)p.Copy ();
+                       SecurityElement se = p.ToXml ();
+                       Assert ("ToXml-class", se.Attribute ("class").StartsWith (className));
+                       AssertEquals ("ToXml-version", "1", se.Attribute("version"));
+                       AssertEquals ("ToXml-Unrestricted", "true", se.Attribute("Unrestricted"));
+                       AssertNull ("Certificate==null", p.Certificate);
+                       // and they aren't equals to None
+                       Assert (!p.Equals (new PublisherIdentityPermission (PermissionState.None)));
+               }
+#else
                [Test]
                [ExpectedException (typeof (ArgumentException))]
                public void PermissionStateUnrestricted () 
@@ -108,7 +125,7 @@ namespace MonoTests.System.Security.Permissions {
                        // Unrestricted isn't permitted for identity permissions
                        PublisherIdentityPermission p = new PublisherIdentityPermission (PermissionState.Unrestricted);
                }
-
+#endif
                [Test]
                public void Certificate () 
                {
@@ -218,17 +235,26 @@ namespace MonoTests.System.Security.Permissions {
                        AssertEquals ("cert1 U cert1 == cert1", p3.ToString (), p1.ToString ());
                }
 
-#if NET_2_0
                [Test]
+#if !NET_2_0
                [ExpectedException (typeof (ArgumentException))]
+#endif
                public void Union_DifferentCertificates ()
                {
                        PublisherIdentityPermission p1 = new PublisherIdentityPermission (x509);
                        X509Certificate x2 = new X509Certificate (cert2);
                        PublisherIdentityPermission p2 = new PublisherIdentityPermission (x2);
-                       p1.Union (p2);
-               }
+                       IPermission p = p1.Union (p2);
+#if NET_2_0
+                       // new XML format is used to contain more than one X.509 certificate
+                       SecurityElement se = p.ToXml ();
+                       AssertEquals ("Childs", 2, se.Children.Count);
+                       AssertEquals ("Cert#1", (se.Children [0] as SecurityElement).Attribute ("X509v3Certificate"), p1.ToXml ().Attribute ("X509v3Certificate"));
+                       AssertEquals ("Cert#2", (se.Children [1] as SecurityElement).Attribute ("X509v3Certificate"), p2.ToXml ().Attribute ("X509v3Certificate"));
+                       // strangely it is still versioned as 'version="1"'.
+                       AssertEquals ("Version", "1", se.Attribute ("version"));
 #endif
+               }
 
                [Test]
                [ExpectedException (typeof (ArgumentException))]
index 5b52f1157ed4bad63754b2d3236dd85872181056..6f2cb7dd020687eaa22cc3ca07bc22fed5fe6953 100755 (executable)
@@ -48,7 +48,9 @@ namespace MonoTests.System.Security.Permissions {
                }
 
                [Test]
+#if !NET_2_0
                [ExpectedException (typeof (NullReferenceException))]
+#endif
                public void DefaultPermission ()
                {
                        SiteIdentityPermissionAttribute a = new SiteIdentityPermissionAttribute (SecurityAction.Assert);
@@ -57,7 +59,7 @@ namespace MonoTests.System.Security.Permissions {
                        SiteIdentityPermission perm = (SiteIdentityPermission) a.CreatePermission ();
                        // ... but this works ...
                        Assert.IsNotNull (perm, "CreatePermission(null site)");
-                       // ... but this doesn't!
+                       // ... but this doesn't! (FIXED IN 2.0 NOV CTP)
                        string site = perm.Site;
                }
 
@@ -112,7 +114,9 @@ namespace MonoTests.System.Security.Permissions {
                }
 
                [Test]
+#if !NET_2_0
                [ExpectedException (typeof (ArgumentException))]
+#endif
                public void Unrestricted () 
                {
                        SiteIdentityPermissionAttribute a = new SiteIdentityPermissionAttribute (SecurityAction.Assert);
index 5105a458183a46220f535c186e616addf5acfce5..c4e4d32f6573efd929c3b4d2da6d73cf61f99c8e 100644 (file)
@@ -53,39 +53,45 @@ namespace MonoTests.System.Security.Permissions {
                        "www.mono-project.com:80",
                        "*www.mono-project.com",
                        "*-project.com",
+                       "www.*.com",
                };
 
                [Test]
                public void PermissionState_None ()
                {
                        SiteIdentityPermission sip = new SiteIdentityPermission (PermissionState.None);
-//                     Assert.IsNull (sip.Site, "Site");
-
+                       Assert.AreEqual (String.Empty, sip.Site, "Site");
                        SecurityElement se = sip.ToXml ();
                        // only class and version are present
                        Assert.AreEqual (2, se.Attributes.Count, "Xml-Attributes");
                        Assert.IsNull (se.Children, "Xml-Children");
-
                        SiteIdentityPermission copy = (SiteIdentityPermission)sip.Copy ();
                        Assert.IsFalse (Object.ReferenceEquals (sip, copy), "ReferenceEquals");
                }
 
+#if NET_2_0
                [Test]
-// MS BUG
-               [ExpectedException (typeof (NullReferenceException))]
-               public void PermissionState_None_Site ()
+               public void PermissionStateUnrestricted ()
                {
-                       SiteIdentityPermission sip = new SiteIdentityPermission (PermissionState.None);
-                       Assert.IsNull (sip.Site, "Site");
+                       // In 2.0 Unrestricted are permitted for identity permissions
+                       SiteIdentityPermission sip = new SiteIdentityPermission (PermissionState.Unrestricted);
+                       Assert.AreEqual (String.Empty, sip.Site, "Site");
+                       SecurityElement se = sip.ToXml ();
+                       Assert.AreEqual (3, se.Attributes.Count, "Xml-Attributes");
+                       Assert.IsNull (se.Children, "Xml-Children");
+                       SiteIdentityPermission copy = (SiteIdentityPermission)sip.Copy ();
+                       Assert.IsFalse (Object.ReferenceEquals (sip, copy), "ReferenceEquals");
+                       // and they aren't equals to None
+                       Assert.IsFalse (sip.Equals (new SiteIdentityPermission (PermissionState.None)));
                }
-
+#else
                [Test]
                [ExpectedException (typeof (ArgumentException))]
                public void PermissionState_Unrestricted ()
                {
                        SiteIdentityPermission sip = new SiteIdentityPermission (PermissionState.Unrestricted);
                }
-
+#endif
                [Test]
                [ExpectedException (typeof (ArgumentException))]
                public void PermissionState_Bad ()
@@ -100,6 +106,13 @@ namespace MonoTests.System.Security.Permissions {
                        SiteIdentityPermission sip = new SiteIdentityPermission (null);
                }
 
+               [Test]
+               [ExpectedException (typeof (ArgumentException))]
+               public void SiteIdentityPermission_EmptySite ()
+               {
+                       SiteIdentityPermission sip = new SiteIdentityPermission (String.Empty);
+               }
+
                [Test]
                public void Site ()
                {
@@ -257,6 +270,15 @@ namespace MonoTests.System.Security.Permissions {
                        Assert.IsFalse (sip2.IsSubsetOf (sip1), "Novell subset Mono");
                }
 
+               [Test]
+               public void IsSubset_Wildcard ()
+               {
+                       SiteIdentityPermission sip1 = new SiteIdentityPermission (GoodSites [0]);
+                       SiteIdentityPermission sip2 = new SiteIdentityPermission ("*.mono-project.com");
+                       Assert.IsTrue (sip1.IsSubsetOf (sip2), "www.mono-project.com subset *.mono-project.com");
+                       Assert.IsFalse (sip2.IsSubsetOf (sip1), "*.mono-project.com subset www.mono-project.com");
+               }
+
                [Test]
                public void Union_Null ()
                {
@@ -295,26 +317,50 @@ namespace MonoTests.System.Security.Permissions {
                {
                        SiteIdentityPermission sip = new SiteIdentityPermission (PermissionState.None);
                        SiteIdentityPermission union = (SiteIdentityPermission)sip.Union (sip);
+#if NET_2_0
+                       Assert.IsNull (union, "None U None");
+#else
                        Assert.IsNotNull (union, "None U None"); // can't get null Site property
                        foreach (string s in GoodSites) {
                                sip.Site = s;
                                union = (SiteIdentityPermission)sip.Union (sip);
                                Assert.AreEqual (s, union.Site, s);
                        }
+#endif
                }
 
                [Test]
-#if NET_2_0
-               [ExpectedException (typeof (ArgumentException))]
-#endif
                public void Union_Different ()
                {
                        SiteIdentityPermission sip1 = new SiteIdentityPermission (GoodSites [0]);
                        SiteIdentityPermission sip2 = new SiteIdentityPermission (GoodSites [1]);
                        SiteIdentityPermission result = (SiteIdentityPermission)sip1.Union (sip2);
+#if NET_2_0
+                       Assert.IsNotNull (result, "Mono U Novell");
+                       // new XML format is used to contain more than one site
+                       SecurityElement se = result.ToXml ();
+                       Assert.AreEqual (2, se.Children.Count, "Childs");
+                       Assert.AreEqual ((se.Children [0] as SecurityElement).Attribute ("Site"), sip1.Site, "Site#1");
+                       Assert.AreEqual ((se.Children [1] as SecurityElement).Attribute ("Site"), sip2.Site, "Site#2");
+                       // strangely it is still versioned as 'version="1"'.
+                       Assert.AreEqual ("1", se.Attribute ("version"), "Version");
+#else
+                       // It's null for FX 1.0 and 1.1
                        Assert.IsNull (result, "Mono U Novell");
+#endif
                }
-
+#if NET_2_0
+               [Test]
+               [ExpectedException (typeof (NotSupportedException))]
+               public void Union_Different_Site ()
+               {
+                       SiteIdentityPermission sip1 = new SiteIdentityPermission (GoodSites [0]);
+                       SiteIdentityPermission sip2 = new SiteIdentityPermission (GoodSites [1]);
+                       SiteIdentityPermission result = (SiteIdentityPermission)sip1.Union (sip2);
+                       // it's not possible to return many sites using the Site property so it throws
+                       Assert.IsNull (result.Site);
+               }
+#endif
                [Test]
                [ExpectedException (typeof (ArgumentNullException))]
                public void FromXml_Null ()
index 8a95e6dc605d2779222fbc94edff020bcd33b62e..29e362d43643754c3ba5f22a9e0c1f8de29a986a 100755 (executable)
@@ -204,7 +204,9 @@ namespace MonoTests.System.Security.Permissions {
                }
 
                [Test]
+#if !NET_2_0
                [ExpectedException (typeof (ArgumentException))]
+#endif
                public void Unrestricted () 
                {
                        StrongNameIdentityPermissionAttribute a = new StrongNameIdentityPermissionAttribute (SecurityAction.Assert);
index 06c37ade008293b21159c0a77a77f0e0d7ad65ba..5ab02a3da4b20165f3af1c7a961c5afd71c46dd3 100644 (file)
@@ -48,24 +48,55 @@ namespace MonoTests.System.Security.Permissions {
                        Assert.AreEqual ("0.0", snip.Version.ToString (), "Version");
 
                        SecurityElement se = snip.ToXml ();
+#if NET_2_0
+                       Assert.IsNull (se.Attribute ("Name"), "Xml-Name");
+                       Assert.IsNull (se.Attribute ("AssemblyVersion"), "Xml-AssemblyVersion");
+#else
                        Assert.AreEqual (String.Empty, se.Attribute ("Name"), "Xml-Name");
-                       Assert.IsNull (se.Attribute ("PublicKeyBlob"), "Xml-PublicKeyBlob");
                        Assert.AreEqual ("0.0", se.Attribute ("AssemblyVersion"), "Xml-AssemblyVersion");
+#endif
+                       Assert.IsNull (se.Attribute ("PublicKeyBlob"), "Xml-PublicKeyBlob");
 
                        // because Name == String.Empty, which is illegal using the other constructor
                        StrongNameIdentityPermission copy = (StrongNameIdentityPermission) snip.Copy ();
                        Assert.AreEqual (String.Empty, copy.Name, "Copy-Name");
-                       Assert.IsNull (copy.PublicKey, "Copy-PublicKey");
+#if NET_2_0
+                       // Strangely once copied the Name becomes equals to String.Empty in 2.0 [FDBK19351]
+                       Assert.IsNull (se.Attribute ("AssemblyVersion"), "Copy-Version");
+#else
                        Assert.AreEqual ("0.0", copy.Version.ToString (), "Copy-Version");
+#endif
+                       Assert.IsNull (copy.PublicKey, "Copy-PublicKey");
                }
-
+#if NET_2_0
+               [Test]
+               public void PermissionStateUnrestricted ()
+               {
+                       // In 2.0 Unrestricted are permitted for identity permissions
+                       StrongNameIdentityPermission snip = new StrongNameIdentityPermission (PermissionState.Unrestricted);
+                       Assert.AreEqual (String.Empty, snip.Name, "Name");
+                       Assert.IsNull (snip.PublicKey, "PublicKey");
+                       Assert.AreEqual ("0.0", snip.Version.ToString (), "Version");
+                       SecurityElement se = snip.ToXml ();
+                       Assert.IsNull (se.Attribute ("Name"), "Xml-Name");
+                       Assert.IsNull (se.Attribute ("PublicKeyBlob"), "Xml-PublicKeyBlob");
+                       Assert.IsNull (se.Attribute ("AssemblyVersion"), "Xml-AssemblyVersion");
+                       StrongNameIdentityPermission copy = (StrongNameIdentityPermission)snip.Copy ();
+                       // Strangely once copied the Name becomes equals to String.Empty in 2.0 [FDBK19351]
+                       Assert.AreEqual (String.Empty, copy.Name, "Copy-Name");
+                       Assert.IsNull (copy.PublicKey, "Copy-PublicKey");
+                       Assert.IsNull (se.Attribute ("AssemblyVersion"), "Copy-Version");
+                       // and they aren't equals to None
+                       Assert.IsFalse (snip.Equals (new StrongNameIdentityPermission (PermissionState.None)));
+               }
+#else
                [Test]
                [ExpectedException (typeof (ArgumentException))]
                public void PermissionStateUnrestricted ()
                {
                        StrongNameIdentityPermission snip = new StrongNameIdentityPermission (PermissionState.Unrestricted);
                }
-
+#endif
                [Test]
                [ExpectedException (typeof (ArgumentException))]
                public void PermissionStateInvalid ()
@@ -201,9 +232,6 @@ namespace MonoTests.System.Security.Permissions {
                }
 
                [Test]
-#if NET_2_0
-               [ExpectedException (typeof (ArgumentException))]
-#endif
                public void Copy_NameEmpty ()
                {
                        StrongNameIdentityPermission snip = new StrongNameIdentityPermission (PermissionState.None);
@@ -213,9 +241,7 @@ namespace MonoTests.System.Security.Permissions {
                        // because Name == String.Empty, which is illegal using the other constructor
                        // but (somewhat) required to copy the teo other informations
                        StrongNameIdentityPermission copy = (StrongNameIdentityPermission)snip.Copy ();
-#if !NET_2_0
-                       // TODO
-#endif
+                       Assert.IsTrue (copy.Equals (snip), "Equals");
                }
 
                private void Compare (StrongNameIdentityPermission p1, StrongNameIdentityPermission p2, string prefix)
@@ -237,8 +263,11 @@ namespace MonoTests.System.Security.Permissions {
 
                        StrongNameIdentityPermission empty = new StrongNameIdentityPermission (PermissionState.None);
                        intersect = (StrongNameIdentityPermission)snip.Intersect (empty);
+#if NET_2_0
+                       Assert.IsNull (intersect, "snip N empty");
+#else
                        Compare (empty, intersect, "snip U empty");
-
+#endif
                        intersect = (StrongNameIdentityPermission)snip.Intersect (snip);
                        Compare (snip, intersect, "snip U snip");
 
@@ -249,6 +278,9 @@ namespace MonoTests.System.Security.Permissions {
                }
 
                [Test]
+#if NET_2_0
+               [ExpectedException (typeof (ArgumentException))]
+#endif
                public void Intersect_DifferentPermissions ()
                {
                        StrongNameIdentityPermission a = new StrongNameIdentityPermission (PermissionState.None);
@@ -296,18 +328,21 @@ namespace MonoTests.System.Security.Permissions {
 
                        StrongNameIdentityPermission samePk = new StrongNameIdentityPermission (blob, null, null);
                        union = (StrongNameIdentityPermission)snip.Union (samePk);
+#if !NET_2_0
+                       // can't compare the properties with multiple entries
                        Compare (snip, union, "snip U samePk");
+#endif
                        Assert.IsTrue (snip.IsSubsetOf (union), "snip.IsSubsetOf (union)");
 
                        union = (StrongNameIdentityPermission)samePk.Union (snip);
+#if !NET_2_0
+                       // can't compare the properties with multiple entries
                        Compare (snip, union, "samePk U snip");
+#endif
                        Assert.IsTrue (samePk.IsSubsetOf (union), "snip.IsSubsetOf (union)");
                }
 
                [Test]
-#if NET_2_0
-               [ExpectedException (typeof (ArgumentException))]
-#endif
                public void Union_DifferentPk ()
                {
                        StrongNamePublicKeyBlob blob = new StrongNamePublicKeyBlob (ecma);
@@ -315,38 +350,53 @@ namespace MonoTests.System.Security.Permissions {
                        StrongNamePublicKeyBlob blob2 = new StrongNamePublicKeyBlob (new byte [16]);
                        StrongNameIdentityPermission diffPk = new StrongNameIdentityPermission (blob2, "mono", new Version (1, 2, 3, 4));
                        StrongNameIdentityPermission result = (StrongNameIdentityPermission) snip.Union (diffPk);
-#if !NET_2_0
-                       // TODO
+#if NET_2_0
+                       Assert.IsNotNull (result, "DifferentPk");
+                       // new XML format is used to contain more than one site
+                       SecurityElement se = result.ToXml ();
+                       Assert.AreEqual (2, se.Children.Count, "Childs");
+                       Assert.AreEqual ("00000000000000000400000000000000", (se.Children [0] as SecurityElement).Attribute ("PublicKeyBlob"), "Blob#1");
+                       Assert.AreEqual ("00000000000000000000000000000000", (se.Children [1] as SecurityElement).Attribute ("PublicKeyBlob"), "Blob#2");
+                       // strangely it is still versioned as 'version="1"'.
+                       Assert.AreEqual ("1", se.Attribute ("version"), "Version");
 #endif
                }
 
                [Test]
-#if NET_2_0
-               [ExpectedException (typeof (ArgumentException))]
-#endif
                public void Union_SamePublicKey_DifferentName ()
                {
                        StrongNamePublicKeyBlob blob = new StrongNamePublicKeyBlob (ecma);
                        StrongNameIdentityPermission snip = new StrongNameIdentityPermission (blob, "mono", new Version (1, 2, 3, 4));
                        StrongNameIdentityPermission diffName = new StrongNameIdentityPermission (blob, "novell", null);
                        StrongNameIdentityPermission result = (StrongNameIdentityPermission) snip.Union (diffName);
-#if !NET_2_0
-                       // TODO
+#if NET_2_0
+                       Assert.IsNotNull (result, "DifferentName");
+                       // new XML format is used to contain more than one site
+                       SecurityElement se = result.ToXml ();
+                       Assert.AreEqual (2, se.Children.Count, "Childs");
+                       Assert.AreEqual ("mono", (se.Children [0] as SecurityElement).Attribute ("Name"), "Name#1");
+                       Assert.AreEqual ("novell", (se.Children [1] as SecurityElement).Attribute ("Name"), "Name#2");
+                       // strangely it is still versioned as 'version="1"'.
+                       Assert.AreEqual ("1", se.Attribute ("version"), "Version");
 #endif
                }
 
                [Test]
-#if NET_2_0
-               [ExpectedException (typeof (ArgumentException))]
-#endif
                public void Union_SamePublicKey_DifferentVersion ()
                {
                        StrongNamePublicKeyBlob blob = new StrongNamePublicKeyBlob (ecma);
                        StrongNameIdentityPermission snip = new StrongNameIdentityPermission (blob, "mono", new Version (1, 2, 3, 4));
                        StrongNameIdentityPermission diffVersion = new StrongNameIdentityPermission (blob, null, new Version (1, 2));
                        StrongNameIdentityPermission result = (StrongNameIdentityPermission) snip.Union (diffVersion);
-#if !NET_2_0
-                       // TODO
+#if NET_2_0
+                       Assert.IsNotNull (result, "DifferentVersion");
+                       // new XML format is used to contain more than one site
+                       SecurityElement se = result.ToXml ();
+                       Assert.AreEqual (2, se.Children.Count, "Childs");
+                       Assert.AreEqual ("1.2.3.4", (se.Children [0] as SecurityElement).Attribute ("AssemblyVersion"), "AssemblyVersion#1");
+                       Assert.AreEqual ("1.2", (se.Children [1] as SecurityElement).Attribute ("AssemblyVersion"), "AssemblyVersion#2");
+                       // strangely it is still versioned as 'version="1"'.
+                       Assert.AreEqual ("1", se.Attribute ("version"), "Version");
 #endif
                }
 
index 59bb66008a1e0f3dda9ed8c35f6f8b746f865738..142dd95ddb8c66733c7c291098f2b2e523d358e2 100755 (executable)
@@ -117,7 +117,9 @@ namespace MonoTests.System.Security.Permissions {
                }
 
                [Test]
+#if !NET_2_0
                [ExpectedException (typeof (ArgumentException))]
+#endif
                public void Unrestricted () 
                {
                        UrlIdentityPermissionAttribute a = new UrlIdentityPermissionAttribute (SecurityAction.Assert);
index d5b1cc8e573fd101e53c53666013b8a32dfa0dff..55b78ddff138618e78b24ee3bea881301d403c24 100644 (file)
@@ -62,6 +62,7 @@ namespace MonoTests.System.Security.Permissions {
                {
                        UrlIdentityPermission uip = new UrlIdentityPermission (PermissionState.None);
 #if NET_2_0
+                       // that cause a NullReferenceException before 2.0
                        Assert.AreEqual (String.Empty, uip.Url, "Url");
 #endif
                        SecurityElement se = uip.ToXml ();
@@ -69,8 +70,8 @@ namespace MonoTests.System.Security.Permissions {
                        Assert.AreEqual (2, se.Attributes.Count, "Xml-Attributes");
                        Assert.IsNull (se.Children, "Xml-Children");
 
-//                     UrlIdentityPermission copy = (UrlIdentityPermission)uip.Copy ();
-//                     Assert.IsFalse (Object.ReferenceEquals (uip, copy), "ReferenceEquals");
+                       UrlIdentityPermission copy = (UrlIdentityPermission)uip.Copy ();
+                       Assert.IsFalse (Object.ReferenceEquals (uip, copy), "ReferenceEquals");
                }
 
 #if !NET_2_0
@@ -83,13 +84,28 @@ namespace MonoTests.System.Security.Permissions {
                }
 #endif
 
+#if NET_2_0
+               [Test]
+               public void PermissionStateUnrestricted ()
+               {
+                       // In 2.0 Unrestricted are permitted for identity permissions
+                       UrlIdentityPermission uip = new UrlIdentityPermission (PermissionState.Unrestricted);
+                       Assert.AreEqual (String.Empty, uip.Url, "Url");
+                       SecurityElement se = uip.ToXml ();
+                       // only class and version are present
+                       Assert.AreEqual (3, se.Attributes.Count, "Xml-Attributes");
+                       Assert.IsNull (se.Children, "Xml-Children");
+                       // and they aren't equals to None
+                       Assert.IsFalse (uip.Equals (new UrlIdentityPermission (PermissionState.None)));
+               }
+#else
                [Test]
                [ExpectedException (typeof (ArgumentException))]
                public void PermissionState_Unrestricted ()
                {
                        UrlIdentityPermission uip = new UrlIdentityPermission (PermissionState.Unrestricted);
                }
-
+#endif
                [Test]
                [ExpectedException (typeof (ArgumentException))]
                public void PermissionState_Bad ()
@@ -120,7 +136,12 @@ namespace MonoTests.System.Security.Permissions {
                }
 
                [Test]
+#if NET_2_0
+               // this was working in beta1 but is broken in Nov CTP
+               [ExpectedException (typeof (NullReferenceException))]
+#else
                [ExpectedException (typeof (ArgumentNullException))]
+#endif
                public void Url_Null ()
                {
                        UrlIdentityPermission uip = new UrlIdentityPermission (PermissionState.None);
@@ -306,15 +327,23 @@ namespace MonoTests.System.Security.Permissions {
                }
 
                [Test]
-#if NET_2_0
-               [ExpectedException (typeof (ArgumentException))]
-#endif
                public void Union_Different ()
                {
                        UrlIdentityPermission uip1 = new UrlIdentityPermission (GoodUrls [0]);
                        UrlIdentityPermission uip2 = new UrlIdentityPermission (GoodUrls [1]);
                        UrlIdentityPermission result = (UrlIdentityPermission)uip1.Union (uip2);
+#if NET_2_0
+                       Assert.IsNotNull (result, "Mono U Novell");
+                       // new XML format is used to contain more than one site
+                       SecurityElement se = result.ToXml ();
+                       Assert.AreEqual (2, se.Children.Count, "Childs");
+                       Assert.AreEqual (GoodUrls [0], (se.Children [0] as SecurityElement).Attribute ("Url"), "Url#1");
+                       Assert.AreEqual (GoodUrls [1], (se.Children [1] as SecurityElement).Attribute ("Url"), "Url#2");
+                       // strangely it is still versioned as 'version="1"'.
+                       Assert.AreEqual ("1", se.Attribute ("version"), "Version");
+#else
                        Assert.IsNull (result, "Mono U Novell");
+#endif
                }
 
                [Test]
index 6d9f6c04cb37972dd39ab988cd437cea77251738..31a6c6fa22e43368fc209bfed8bd3365434f5bf0 100644 (file)
@@ -42,14 +42,26 @@ namespace MonoTests.System.Security.Permissions {
                        ZoneIdentityPermission zip = new ZoneIdentityPermission (PermissionState.None);
                        Assert.AreEqual (SecurityZone.NoZone, zip.SecurityZone);
                }
-
+#if NET_2_0
+               [Test]
+               public void PermissionStateUnrestricted ()
+               {
+                       // In 2.0 Unrestricted are permitted for identity permissions
+                       ZoneIdentityPermission zip = new ZoneIdentityPermission (PermissionState.Unrestricted);
+                       Assert.AreEqual (SecurityZone.NoZone, zip.SecurityZone);
+                       SecurityElement se = zip.ToXml ();
+                       Assert.AreEqual (5, se.Children.Count, "Count");
+                       // and they aren't equals to None
+                       Assert.IsFalse (zip.Equals (new ZoneIdentityPermission (PermissionState.None)));
+               }
+#else
                [Test]
                [ExpectedException (typeof (ArgumentException))]
                public void PermissionStateUnrestricted ()
                {
                        ZoneIdentityPermission zip = new ZoneIdentityPermission (PermissionState.Unrestricted);
                }
-
+#endif
                [Test]
                [ExpectedException (typeof (ArgumentException))]
                public void PermissionStateInvalid ()
@@ -204,24 +216,27 @@ namespace MonoTests.System.Security.Permissions {
                        Assert.IsTrue (Same (a, z), "NoZone+Trusted");
                        Assert.IsFalse (Object.ReferenceEquals (a, z), "!ReferenceEquals4");
                }
-#if NET_2_0
+
                [Test]
-               [ExpectedException (typeof (ArgumentException))]
                public void Union_DifferentIdentities ()
                {
                        ZoneIdentityPermission a = new ZoneIdentityPermission (SecurityZone.Trusted);
                        ZoneIdentityPermission b = new ZoneIdentityPermission (SecurityZone.Untrusted);
-                       a.Union (b);
-               }
+                       IPermission result = a.Union (b);
+#if NET_2_0
+                       Assert.IsNotNull (result, "Union");
+                       // new XML format is used to contain more than one site
+                       SecurityElement se = result.ToXml ();
+                       Assert.AreEqual (2, se.Children.Count, "Childs");
+                       Assert.AreEqual (a.SecurityZone.ToString (), (se.Children [0] as SecurityElement).Attribute ("Zone"), "Zone#1");
+                       Assert.AreEqual (b.SecurityZone.ToString (), (se.Children [1] as SecurityElement).Attribute ("Zone"), "Zone#2");
+                       // strangely it is still versioned as 'version="1"'.
+                       Assert.AreEqual ("1", se.Attribute ("version"), "Version");
 #else
-               [Test]
-               public void Union_DifferentIdentities ()
-               {
-                       ZoneIdentityPermission a = new ZoneIdentityPermission (SecurityZone.Trusted);
-                       ZoneIdentityPermission b = new ZoneIdentityPermission (SecurityZone.Untrusted);
-                       Assert.IsNull (a.Union (b));
-               }
+                       Assert.IsNull (result);
 #endif
+               }
+
                [Test]
                [ExpectedException (typeof (ArgumentException))]
                public void Union_DifferentPermissions ()