[bcl] Remove more NET_2_0 checks from class libs
[mono.git] / mcs / class / corlib / Test / System.Security.Permissions / PublisherIdentityPermissionTest.cs
index 3c874e8f627c0cc3fb61ddba5477a27aad48601d..54209efcb3c3096d80224e1062a9f50c2706fda2 100644 (file)
@@ -1,10 +1,31 @@
 //
-// PublisherIdentityPermissionTest.cs - NUnit Test Cases for PublisherIdentityPermission
+// PublisherIdentityPermissionTest.cs - 
+//     NUnit Test Cases for PublisherIdentityPermission
 //
 // Author:
-//     Sebastien Pouliot (spouliot@motus.com)
+//     Sebastien Pouliot  <sebastien@ximian.com>
 //
 // (C) 2003 Motus Technologies Inc. (http://www.motus.com)
+// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
 using NUnit.Framework;
@@ -16,7 +37,7 @@ using System.Security.Cryptography.X509Certificates;
 namespace MonoTests.System.Security.Permissions {
 
        [TestFixture]
-       public class PublisherIdentityPermissionTest : Assertion {
+       public class PublisherIdentityPermissionTest {
 
                private static string className = "System.Security.Permissions.PublisherIdentityPermission, ";
 
@@ -72,22 +93,30 @@ namespace MonoTests.System.Security.Permissions {
                public void PermissionStateNone () 
                {
                        PublisherIdentityPermission p = new PublisherIdentityPermission (PermissionState.None);
-                       AssertNotNull ("PublisherIdentityPermission(PermissionState.None)", p);
+                       Assert.IsNotNull (p, "PublisherIdentityPermission(PermissionState.None)");
                        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));
-                       AssertNull ("Certificate==null", p.Certificate);
+                       Assert.IsTrue (se.Attribute ("class").StartsWith (className), "ToXml-class");
+                       Assert.AreEqual ("1", se.Attribute("version"), "ToXml-version");
+                       Assert.IsNull (se.Attribute("Unrestricted"), "ToXml-Unrestricted");
+                       Assert.IsNull (p.Certificate, "Certificate==null");
                }
-
                [Test]
-               [ExpectedException (typeof (ArgumentException))]
-               public void PermissionStateUnrestricted () 
+               [Category ("NotWorking")]
+               public void PermissionStateUnrestricted ()
                {
-                       // Unrestricted isn't permitted for identity permissions
+                       // In 2.0 Unrestricted are permitted for identity permissions
                        PublisherIdentityPermission p = new PublisherIdentityPermission (PermissionState.Unrestricted);
+                       Assert.IsNotNull (p, "PublisherIdentityPermission(PermissionState.None)");
+                       PublisherIdentityPermission copy = (PublisherIdentityPermission)p.Copy ();
+                       SecurityElement se = p.ToXml ();
+                       Assert.IsTrue (se.Attribute ("class").StartsWith (className), "ToXml-class");
+                       Assert.AreEqual ("1", se.Attribute("version"), "ToXml-version");
+                       Assert.AreEqual ("true", se.Attribute("Unrestricted"), "ToXml-Unrestricted");
+                       Assert.IsNull (p.Certificate, "Certificate==null");
+                       // and they aren't equals to None
+                       Assert.IsTrue (!p.Equals (new PublisherIdentityPermission (PermissionState.None)));
                }
-
                [Test]
                public void Certificate () 
                {
@@ -96,7 +125,7 @@ namespace MonoTests.System.Security.Permissions {
                        PublisherIdentityPermission p2 = new PublisherIdentityPermission (PermissionState.None);
                        p2.Certificate = x509;
 
-                       AssertEquals ("Certificate", p1.ToXml ().ToString (), p2.ToXml ().ToString ());
+                       Assert.AreEqual (p1.ToXml ().ToString (), p2.ToXml ().ToString (), "Certificate");
                }
 
                [Test]
@@ -153,12 +182,12 @@ namespace MonoTests.System.Security.Permissions {
                {
                        PublisherIdentityPermission p = new PublisherIdentityPermission (PermissionState.None);
                        SecurityElement se = p.ToXml ();
-                       AssertNotNull ("ToXml()", se);
+                       Assert.IsNotNull (se, "ToXml()");
                        p.FromXml (se);
 
                        se.AddAttribute ("X509v3Certificate", x509.GetRawCertDataString ());
                        p.FromXml (se);
-                       AssertEquals ("CertificateHash", x509.GetCertHashString (), p.Certificate.GetCertHashString ());
+                       Assert.AreEqual (x509.GetCertHashString (), p.Certificate.GetCertHashString (), "CertificateHash");
                }
 
                [Test]
@@ -167,7 +196,7 @@ namespace MonoTests.System.Security.Permissions {
                        PublisherIdentityPermission p1 = new PublisherIdentityPermission (x509);
                        PublisherIdentityPermission p2 = null;
                        PublisherIdentityPermission p3 = (PublisherIdentityPermission) p1.Union (p2);
-                       AssertEquals ("P1 U null == P1", p1.ToXml ().ToString (), p3.ToXml ().ToString ());
+                       Assert.AreEqual (p1.ToXml ().ToString (), p3.ToXml ().ToString (), "P1 U null == P1");
                }
 
                [Test]
@@ -177,22 +206,35 @@ namespace MonoTests.System.Security.Permissions {
                        PublisherIdentityPermission p1 = new PublisherIdentityPermission (PermissionState.None);
                        PublisherIdentityPermission p2 = new PublisherIdentityPermission (PermissionState.None);
                        PublisherIdentityPermission p3 = (PublisherIdentityPermission) p1.Union (p2);
-                       AssertNull ("None U None == null", p3);
+                       Assert.IsNull (p3, "None U None == null");
                        // with 1 certificate
                        p1 = new PublisherIdentityPermission (x509);
                        p2 = new PublisherIdentityPermission (PermissionState.None);
                        p3 = (PublisherIdentityPermission) p1.Union (p2);
-                       AssertEquals ("cert U None == cert", p3.ToXml ().ToString (), p1.ToXml ().ToString ());
-                       // 2 different certificates
+                       Assert.AreEqual (p3.ToXml ().ToString (), p1.ToXml ().ToString (), "cert U None == cert");
                        X509Certificate x2 = new X509Certificate (cert2);
-                       p2 = new PublisherIdentityPermission (x2);
-                       p3 = (PublisherIdentityPermission) p1.Union (p2);
-                       AssertNull ("cert1 U cert2 == null", p3);
                        // 2 certificates (same)
                        x2 = new X509Certificate (cert);
                        p2 = new PublisherIdentityPermission (x2);
                        p3 = (PublisherIdentityPermission) p1.Union (p2);
-                       AssertEquals ("cert1 U cert1 == cert1", p3.ToString (), p1.ToString ());
+                       Assert.AreEqual (p3.ToString (), p1.ToString (), "cert1 U cert1 == cert1");
+               }
+
+               [Test]
+               [Category ("NotWorking")]
+               public void Union_DifferentCertificates ()
+               {
+                       PublisherIdentityPermission p1 = new PublisherIdentityPermission (x509);
+                       X509Certificate x2 = new X509Certificate (cert2);
+                       PublisherIdentityPermission p2 = new PublisherIdentityPermission (x2);
+                       IPermission p = p1.Union (p2);
+                       // new XML format is used to contain more than one X.509 certificate
+                       SecurityElement se = p.ToXml ();
+                       Assert.AreEqual (2, se.Children.Count, "Childs");
+                       Assert.AreEqual ((se.Children [0] as SecurityElement).Attribute ("X509v3Certificate"), p1.ToXml ().Attribute ("X509v3Certificate"), "Cert#1");
+                       Assert.AreEqual ((se.Children [1] as SecurityElement).Attribute ("X509v3Certificate"), p2.ToXml ().Attribute ("X509v3Certificate"), "Cert#2");
+                       // strangely it is still versioned as 'version="1"'.
+                       Assert.AreEqual ("1", se.Attribute ("version"), "Version");
                }
 
                [Test]
@@ -210,7 +252,7 @@ namespace MonoTests.System.Security.Permissions {
                        PublisherIdentityPermission p1 = new PublisherIdentityPermission (x509);
                        PublisherIdentityPermission p2 = null;
                        PublisherIdentityPermission p3 = (PublisherIdentityPermission) p1.Intersect (p2);
-                       AssertNull ("P1 N null == null", p3);
+                       Assert.IsNull (p3, "P1 N null == null");
                }
 
                [Test]
@@ -220,22 +262,22 @@ namespace MonoTests.System.Security.Permissions {
                        PublisherIdentityPermission p1 = new PublisherIdentityPermission (PermissionState.None);
                        PublisherIdentityPermission p2 = new PublisherIdentityPermission (PermissionState.None);
                        PublisherIdentityPermission p3 = (PublisherIdentityPermission) p1.Intersect (p2);
-                       AssertNull ("None N None == null", p3);
+                       Assert.IsNull (p3, "None N None == null");
                        // with 1 certificate
                        p1 = new PublisherIdentityPermission (x509);
                        p2 = new PublisherIdentityPermission (PermissionState.None);
                        p3 = (PublisherIdentityPermission) p1.Intersect (p2);
-                       AssertNull ("cert N None == None", p3);
+                       Assert.IsNull (p3, "cert N None == None");
                        // 2 different certificates
                        X509Certificate x2 = new X509Certificate (cert2);
                        p2 = new PublisherIdentityPermission (x2);
                        p3 = (PublisherIdentityPermission) p1.Intersect (p2);
-                       AssertNull ("cert1 N cert2 == null", p3);
+                       Assert.IsNull (p3, "cert1 N cert2 == null");
                        // 2 certificates (same)
                        x2 = new X509Certificate (cert);
                        p2 = new PublisherIdentityPermission (x2);
                        p3 = (PublisherIdentityPermission) p1.Intersect (p2);
-                       AssertEquals ("cert1 N cert1 == cert1", p3.ToString (), p1.ToString ());
+                       Assert.AreEqual (p3.ToString (), p1.ToString (), "cert1 N cert1 == cert1");
                }
 
                [Test]
@@ -251,7 +293,7 @@ namespace MonoTests.System.Security.Permissions {
                public void IsSubsetOfNull () 
                {
                        PublisherIdentityPermission p1 = new PublisherIdentityPermission (x509);
-                       Assert ("IsSubsetOf(null)", !p1.IsSubsetOf (null));
+                       Assert.IsTrue (!p1.IsSubsetOf (null), "IsSubsetOf(null)");
                }
 
                [Test]
@@ -259,16 +301,16 @@ namespace MonoTests.System.Security.Permissions {
                {
                        PublisherIdentityPermission p1 = new PublisherIdentityPermission (PermissionState.None);
                        PublisherIdentityPermission p2 = new PublisherIdentityPermission (PermissionState.None);
-                       Assert ("None.IsSubsetOf(None)", p1.IsSubsetOf (p2));
+                       Assert.IsTrue (p1.IsSubsetOf (p2), "None.IsSubsetOf(None)");
                        PublisherIdentityPermission p3 = new PublisherIdentityPermission (x509);
-                       Assert ("Cert.IsSubsetOf(None)", !p3.IsSubsetOf (p2));
-                       Assert ("None.IsSubsetOf(Cert)", p2.IsSubsetOf (p3));
+                       Assert.IsTrue (!p3.IsSubsetOf (p2), "Cert.IsSubsetOf(None)");
+                       Assert.IsTrue (p2.IsSubsetOf (p3), "None.IsSubsetOf(Cert)");
                        PublisherIdentityPermission p4 = new PublisherIdentityPermission (x509);
-                       Assert ("Cert.IsSubsetOf(Cert)", p3.IsSubsetOf (p4));
+                       Assert.IsTrue (p3.IsSubsetOf (p4), "Cert.IsSubsetOf(Cert)");
                        X509Certificate x2 = new X509Certificate (cert2);
                        PublisherIdentityPermission p5 = new PublisherIdentityPermission (x2);
-                       Assert ("Cert2.IsSubsetOf(Cert)", !p5.IsSubsetOf (p3));
-                       Assert ("Cert.IsSubsetOf(Cert2)", !p3.IsSubsetOf (p5));
+                       Assert.IsTrue (!p5.IsSubsetOf (p3), "Cert2.IsSubsetOf(Cert)");
+                       Assert.IsTrue (!p3.IsSubsetOf (p5), "Cert.IsSubsetOf(Cert2)");
                }
 
                [Test]
@@ -277,7 +319,7 @@ namespace MonoTests.System.Security.Permissions {
                {
                        PublisherIdentityPermission p1 = new PublisherIdentityPermission (x509);
                        FileDialogPermission fdp2 = new FileDialogPermission (PermissionState.Unrestricted);
-                       Assert ("IsSubsetOf(PublisherIdentityPermission)", p1.IsSubsetOf (fdp2));
+                       Assert.IsTrue (p1.IsSubsetOf (fdp2), "IsSubsetOf(PublisherIdentityPermission)");
                }
        }
 }