New test.
[mono.git] / mcs / class / corlib / Test / System.Security.Cryptography / DSASignatureFormatterTest.cs
index 74e09d06df44589905ddd9b30243d36875f48c34..14e060bc9e99e451b7ad6e5b37b0c246340a73ec 100644 (file)
@@ -2,9 +2,29 @@
 // DSASignatureFormatterTest.cs - NUnit Test Cases for DSASignatureFormatter
 //
 // Author:
-//     Sebastien Pouliot (spouliot@motus.com)
+//     Sebastien Pouliot  <sebastien@ximian.com>
 //
 // (C) 2002 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;
@@ -14,167 +34,140 @@ using System.Security.Cryptography;
 
 namespace MonoTests.System.Security.Cryptography {
 
-public class DSASignatureFormatterTest : TestCase {
-
-       public DSASignatureFormatterTest () : base ("System.Security.Cryptography.DSASignatureFormatter testsuite") {}
-       public DSASignatureFormatterTest (string name) : base (name) {}
-
+[TestFixture]
+public class DSASignatureFormatterTest {
        protected DSASignatureFormatter fmt;
        protected static DSA dsa;
        protected static RSA rsa;
 
-       protected override void SetUp () 
+       [TestFixtureSetUp]
+       public void FixtureSetUp () 
        {
-               fmt = new DSASignatureFormatter ();
                // key generation is VERY long so one time is enough
-               if (dsa == null)
-                       dsa = DSA.Create ();
-               if (rsa == null)
-                       rsa = RSA.Create ();
+               dsa = DSA.Create ();
+               rsa = RSA.Create ();
        }
 
-       protected override void TearDown () {}
-
-       public static ITest Suite {
-               get { 
-                       return new TestSuite (typeof (DSASignatureFormatterTest)); 
-               }
+       [SetUp]
+       public void SetUp () 
+       {
+               fmt = new DSASignatureFormatter ();
        }
 
-       public void TestConstructors () 
+       [Test]
+       public void Constructor_Empty () 
        {
-               // empty constructor
                DSASignatureFormatter fmt = new DSASignatureFormatter ();
-               AssertNotNull ("DSASignatureFormatter()", fmt);
-               // AsymmetricAlgorithm constructor (with null)
-               fmt = new DSASignatureFormatter (null);
-               AssertNotNull ("DSASignatureFormatter(null)", fmt);
-               // AsymmetricAlgorithm constructor (with DSA)
-               fmt = new DSASignatureFormatter (dsa);
-               AssertNotNull ("DSASignatureFormatter(dsa)", fmt);
-               // AsymmetricAlgorithm constructor (with RSA)
-               try {
-                       fmt = new DSASignatureFormatter (rsa);
-                       Fail ("Expected InvalidCastException but got none");
-               }
-               catch (InvalidCastException) {
-                       // this is expected
-               }
-               catch (Exception e) {
-                       Fail ("Expected InvalidCastException but got " + e.ToString ());
-               }
-       }
-
-       public void TestSetHash () 
-       {
-               // null is ok
-               try {
-                       fmt.SetHashAlgorithm (null);
-               }
-               catch (ArgumentNullException) {
-                       // do nothing, this is what we expect
-               }
-               catch (Exception e) {
-                       Fail ("Expected ArgumentNullException but got " + e.ToString ());
-               }
-               // SHA1
-               try {
-                       fmt.SetHashAlgorithm ("SHA1");
-               }
-               catch (Exception e) {
-                       Fail ("Unexpected exception: " + e.ToString ());
-               }
-               // MD5 (bad)
-               try {
-                       fmt.SetHashAlgorithm ("MD5");
-               }
-               catch (CryptographicUnexpectedOperationException) {
-                       // do nothing, this is what we expect
-               }
-               catch (Exception e) {
-                       Fail ("Expected CryptographicUnexpectedOperationException but got " + e.ToString ());
-               }
-       }
-
-       public void TestSetKey () {
-               // here null is ok 
-               try {
-                       fmt.SetKey (null);
-               }
-               catch (Exception e) {
-                       Fail ("Unexpected exception: " + e.ToString ());
-               }
-               // RSA (bad)
-               try {
-                       fmt.SetKey (rsa);
-                       Fail ("Expected InvalidCastException but got none");
-               }
-               catch (InvalidCastException) {
-                       // do nothing, this is what we expect 
-               }
-               catch (Exception e) {
-                       Fail ("Expected InvalidCastException but got: " + e.ToString ());
-               }
-               // DSA
-               try {
-                       fmt.SetKey (dsa);
-               }
-               catch (Exception e) {
-                       Fail ("Unexpected exception: " + e.ToString ());
-               }
+               Assert.IsNotNull (fmt);
+       }
+
+       [Test]
+       public void Constructor_DSA ()
+       {
+               DSASignatureFormatter fmt = new DSASignatureFormatter (dsa);
+               Assert.IsNotNull (fmt);
+       }
+
+       [Test]
+#if NET_2_0
+       [ExpectedException (typeof (ArgumentNullException))]
+#endif
+       public void Constructor_Null () 
+       {
+               DSASignatureFormatter fmt = new DSASignatureFormatter (null);
+               Assert.IsNotNull (fmt);
+       }
+
+       [Test]
+       [ExpectedException (typeof (InvalidCastException))]
+       public void Constructor_RSA ()
+       {
+               DSASignatureFormatter fmt = new DSASignatureFormatter (rsa);
+       }
+
+       [Test]
+       [ExpectedException (typeof (ArgumentNullException))]
+       public void SetHash_Null ()
+       {
+               fmt.SetHashAlgorithm (null);
+       }
+
+       [Test]
+       public void SetHash_SHA1 ()
+       {
+               fmt.SetHashAlgorithm ("SHA1");
+       }
+
+       [Test]
+       [ExpectedException (typeof (CryptographicUnexpectedOperationException))]
+       public void SetHash_MD5 ()
+       {
+               fmt.SetHashAlgorithm ("MD5");
+       }
+
+       [Test]
+#if NET_2_0
+       [ExpectedException (typeof (ArgumentNullException))]
+#endif
+       public void SetKey_Null ()
+       {
+               fmt.SetKey (null);
+       }
+
+       [Test]
+       [ExpectedException (typeof (InvalidCastException))]
+       public void SetKey_RSA ()
+       {
+               fmt.SetKey (rsa);
+       }
+
+       [Test]
+       public void SetKey_DSA ()
+       {
+               fmt.SetKey (dsa);
        }
 
        // note: There's a bug in MS Framework where you can't re-import a key into
        // the same object
-       public void TestSignature () 
+
+       [Test]
+       [ExpectedException (typeof (CryptographicUnexpectedOperationException))]
+       public void Signature_NoKeyPair ()
+       {
+               byte[] hash = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13 };
+               byte[] sign = fmt.CreateSignature (hash);
+       }
+
+       [Test]
+       [ExpectedException (typeof (CryptographicException))]
+       public void Signature_OnlyPublicKey ()
        {
                byte[] hash = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13 };
-               byte[] sign = null;
-               // no keypair
-               try {
-                       sign = fmt.CreateSignature (hash);
-               }
-               catch (CryptographicUnexpectedOperationException) {
-                       // do nothing, this is what we expect 
-               }
-               catch (Exception e) {
-                       Fail ("Expected CryptographicUnexpectedOperationException but got " + e.ToString ());
-               }
-
-               // try a keypair without the private key
                dsa.ImportParameters (AllTests.GetKey (false));
                fmt.SetKey (dsa);
-               try {
-                       sign = fmt.CreateSignature (hash);
-                       Fail ("Expected CryptographicException but got none");
-               }
-               catch (CryptographicException) {
-                       // do nothing, this is what we expect 
-               }
-               catch (Exception e) {
-                       Fail ("Expected CryptographicException but got " + e.ToString ());
-               }
-
-               // complete keypair
+               byte[] sign = fmt.CreateSignature (hash);
+       }
+
+       [Test]
+       public void Signature ()
+       {
+               byte[] hash = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13 };
+               dsa.ImportParameters (AllTests.GetKey (true));
+               fmt.SetKey (dsa);
+               byte[] sign = fmt.CreateSignature (hash);
+               Assert.IsTrue (dsa.VerifySignature (hash, sign));
+       }
+
+       [Test]
+       [ExpectedException (typeof (ArgumentNullException))]
+       public void Signature_NullHash ()
+       {
+               byte[] hash = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13 };
                dsa.ImportParameters (AllTests.GetKey (true));
                fmt.SetKey (dsa);
 
-               // null hash
-               try {
-                       byte[] h = null; // overloaded method
-                       sign = fmt.CreateSignature (h); 
-                       Fail ("Expected ArgumentNullException but got none");
-               }
-               catch (ArgumentNullException) {
-                       // do nothing, this is what we expect 
-               }
-               catch (Exception e) {
-                       Fail ("Expected ArgumentNullException but got " + e.ToString ());
-               }
-
-               // valid
-               sign = fmt.CreateSignature (hash);
-               Assert ("verified signature", dsa.VerifySignature (hash, sign));
+               byte[] h = null; // overloaded method
+               byte[] sign = fmt.CreateSignature (h); 
        }
 }