//
// NonceTest.cs - NUnit Test Cases for Nonce
//
// Author:
// Sebastien Pouliot (spouliot@motus.com)
//
// (C) 2002, 2003 Motus Technologies Inc. (http://www.motus.com)
//
using NUnit.Framework;
using Microsoft.Web.Services.Security;
using System;
using System.Xml;
namespace MonoTests.MS.Web.Services.Security {
[TestFixture]
public class NonceTest : Assertion {
private const string Sample = "GWSRuy1IC4zb2jsA+Sz/rw==";
private const string Zero = "";
// NOTE: Nonce doesn't have a public constructor in WSE1 (*) so tests can only be runned with WSE2
// (*) this is bad because we can't reuse Nonce inside other security protocols
#if !WSE1
[Test]
public void ConstructorInt ()
{
Nonce n = new Nonce (16);
}
[Test]
public void ConstructorIntZero ()
{
Nonce n = new Nonce (0);
AssertEquals ("Nonce(0).Value", String.Empty, n.Value);
AssertNotNull ("Nonce(0).GetValueBytes()", n.GetValueBytes ());
XmlDocument doc = new XmlDocument ();
XmlElement xel = n.GetXml (doc);
AssertEquals ("Nonce(0).GetXml", Zero, xel.OuterXml);
}
[Test]
[ExpectedException (typeof (OverflowException))]
public void ConstructorNegativeInt ()
{
Nonce n = new Nonce (-1);
}
[Test]
public void ConstructorXmlElement ()
{
XmlDocument doc = new XmlDocument ();
doc.LoadXml (Sample);
Nonce n = new Nonce (doc.DocumentElement);
// roundtrip
XmlElement xel = n.GetXml (doc);
AssertEquals ("ConstructorXmlElement", Sample, xel.OuterXml);
}
[Test]
[ExpectedException (typeof (ArgumentNullException))]
public void ConstructorXmlElementNull ()
{
Nonce n = new Nonce (null);
}
[Test]
public void Value ()
{
Nonce n = new Nonce (16);
AssertNotNull ("Value", n.Value);
byte[] v = n.GetValueBytes ();
AssertNotNull ("GetValueBytes", v);
AssertEquals ("Value==base64(GetValueBytes)", n.Value, Convert.ToBase64String (v));
}
[Test]
public void GetXml ()
{
Nonce n = new Nonce (16);
XmlDocument doc = new XmlDocument ();
XmlElement xel = n.GetXml (doc);
Assert ("GetXml.StartsWith", xel.OuterXml.StartsWith (""));
Assert ("GetXml.EndsWith", xel.OuterXml.EndsWith ("=="));
}
[Test]
[ExpectedException (typeof (ArgumentNullException))]
public void GetXmlNull ()
{
Nonce n = new Nonce (16);
n.GetXml (null);
}
[Test]
public void LoadXml ()
{
Nonce n = new Nonce (16);
XmlDocument doc = new XmlDocument ();
doc.LoadXml (Sample);
n.LoadXml (doc.DocumentElement);
// roundtrip
XmlElement xel = n.GetXml (doc);
AssertEquals ("LoadXml", Sample, xel.OuterXml);
}
[Test]
[ExpectedException (typeof (ArgumentException))]
public void LoadXml_BadLocalName ()
{
Nonce n = new Nonce (16);
XmlDocument doc = new XmlDocument ();
doc.LoadXml ("");
n.LoadXml (doc.DocumentElement);
}
[Test]
[ExpectedException (typeof (ArgumentException))]
public void LoadXml_BadNamespace ()
{
Nonce n = new Nonce (16);
XmlDocument doc = new XmlDocument ();
doc.LoadXml ("");
n.LoadXml (doc.DocumentElement);
}
[Test]
[ExpectedException (typeof (ArgumentNullException))]
public void LoadXmlNull ()
{
Nonce n = new Nonce (16);
n.LoadXml (null);
}
#endif
}
}