147 lines
4.7 KiB
C#
147 lines
4.7 KiB
C#
|
//
|
||
|
// FormsAuthenticationTest.cs - NUnit Test Cases for FormsAuthentication
|
||
|
//
|
||
|
// Author:
|
||
|
// Sebastien Pouliot (sebastien@ximian.com)
|
||
|
//
|
||
|
// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
|
||
|
//
|
||
|
|
||
|
using System;
|
||
|
using System.Security.Cryptography;
|
||
|
using System.Text;
|
||
|
using System.Web;
|
||
|
using System.Web.Security;
|
||
|
|
||
|
using NUnit.Framework;
|
||
|
using MonoTests.SystemWeb.Framework;
|
||
|
|
||
|
namespace MonoTests.System.Web.Security
|
||
|
{
|
||
|
[TestFixture]
|
||
|
public class FormsAuthenticationTest
|
||
|
{
|
||
|
[Test]
|
||
|
[Category ("NotDotNet")] // Dot.net url must include Namespace name
|
||
|
[Category("NunitWeb")]
|
||
|
public void DefaultValues ()
|
||
|
{
|
||
|
new WebTest(new HandlerInvoker (new HandlerDelegate(DefaultValues_delegate))).Run ();
|
||
|
}
|
||
|
|
||
|
static public void DefaultValues_delegate ()
|
||
|
{
|
||
|
// MS use ".ASPXAUTH" while Mono use ".MONOAUTH"
|
||
|
string str = FormsAuthentication.FormsCookieName;
|
||
|
Assert.IsTrue ((str.Length == 9 && str [0] == '.' && str.EndsWith ("AUTH")), "FormsCookieName");
|
||
|
Assert.AreEqual ("/", FormsAuthentication.FormsCookiePath, "FormsCookiePath");
|
||
|
Assert.IsFalse (FormsAuthentication.RequireSSL, "RequireSSL");
|
||
|
Assert.IsTrue (FormsAuthentication.SlidingExpiration, "SlidingExpiration");
|
||
|
// MSDN: The default is an empty string ("") but null.
|
||
|
Assert.AreEqual ("", FormsAuthentication.CookieDomain, "CookieDomain");
|
||
|
Assert.AreEqual (HttpCookieMode.UseDeviceProfile, FormsAuthentication.CookieMode, "CookieMode");
|
||
|
Assert.IsTrue (FormsAuthentication.CookiesSupported, "CookiesSupported");
|
||
|
Assert.AreEqual ("/NunitWeb/default.aspx", FormsAuthentication.DefaultUrl);
|
||
|
Assert.IsFalse (FormsAuthentication.EnableCrossAppRedirects, "EnableCrossAppRedirects");
|
||
|
Assert.AreEqual ("/NunitWeb/login.aspx", FormsAuthentication.LoginUrl, "LoginUrl");
|
||
|
}
|
||
|
|
||
|
[Test]
|
||
|
[Category ("NotDotNet")] // Dot.net url must include Namespace name
|
||
|
[Category("NunitWeb")]
|
||
|
public void Initialize ()
|
||
|
{
|
||
|
new WebTest(new HandlerInvoker (new HandlerDelegate(Initialize_delegate))).Run ();
|
||
|
}
|
||
|
|
||
|
static public void Initialize_delegate ()
|
||
|
{
|
||
|
// calling Initialize without an HttpContext
|
||
|
FormsAuthentication.Initialize ();
|
||
|
// and that doesn't change the default values
|
||
|
DefaultValues_delegate ();
|
||
|
}
|
||
|
|
||
|
[Test]
|
||
|
[ExpectedException (typeof (ArgumentNullException))]
|
||
|
public void HashPasswordForStoringInConfigFile_NullPassword ()
|
||
|
{
|
||
|
FormsAuthentication.HashPasswordForStoringInConfigFile (null, "MD5");
|
||
|
}
|
||
|
|
||
|
[Test]
|
||
|
[ExpectedException (typeof (ArgumentNullException))]
|
||
|
public void HashPasswordForStoringInConfigFile_NullPasswordFormat ()
|
||
|
{
|
||
|
FormsAuthentication.HashPasswordForStoringInConfigFile ("Mono", null);
|
||
|
}
|
||
|
|
||
|
[Test]
|
||
|
public void HashPasswordForStoringInConfigFile_MD5 ()
|
||
|
{
|
||
|
// § (C2-A7)
|
||
|
string s = Encoding.UTF8.GetString (new byte [2] { 0xC2, 0xA7 });
|
||
|
Assert.AreEqual ("BD9A4C255DEEC8944D99E01A64C1E322", FormsAuthentication.HashPasswordForStoringInConfigFile (s, "MD5"));
|
||
|
|
||
|
// ä (C3-A4)
|
||
|
s = Encoding.UTF8.GetString (new byte [2] { 0xC3, 0xA4 });
|
||
|
Assert.AreEqual ("8419B71C87A225A2C70B50486FBEE545", FormsAuthentication.HashPasswordForStoringInConfigFile (s, "md5"));
|
||
|
}
|
||
|
|
||
|
[Test]
|
||
|
public void HashPasswordForStoringInConfigFile_SHA1 ()
|
||
|
{
|
||
|
// § (C2-A7)
|
||
|
string s = Encoding.UTF8.GetString (new byte [2] { 0xC2, 0xA7 });
|
||
|
Assert.AreEqual ("EB2CB244889599F736B6CDD633C5E324F521D1BB", FormsAuthentication.HashPasswordForStoringInConfigFile (s, "SHA1"));
|
||
|
|
||
|
// ä (C3-A4)
|
||
|
s = Encoding.UTF8.GetString (new byte [2] { 0xC3, 0xA4 });
|
||
|
Assert.AreEqual ("961FA22F61A56E19F3F5F8867901AC8CF5E6D11F", FormsAuthentication.HashPasswordForStoringInConfigFile (s, "sha1"));
|
||
|
}
|
||
|
|
||
|
[Test]
|
||
|
[ExpectedException (typeof (ArgumentException))]
|
||
|
public void HashPasswordForStoringInConfigFile_SHA256 ()
|
||
|
{
|
||
|
FormsAuthentication.HashPasswordForStoringInConfigFile ("mono", "SHA256");
|
||
|
}
|
||
|
[Test]
|
||
|
[ExpectedException (typeof (NullReferenceException))]
|
||
|
public void RedirectToLoginPage ()
|
||
|
{
|
||
|
FormsAuthentication.RedirectToLoginPage ();
|
||
|
}
|
||
|
|
||
|
[Test]
|
||
|
[ExpectedException (typeof (NullReferenceException))]
|
||
|
public void RedirectToLoginPage_XtraQuery_Null ()
|
||
|
{
|
||
|
FormsAuthentication.RedirectToLoginPage (null);
|
||
|
}
|
||
|
|
||
|
[Test]
|
||
|
[ExpectedException (typeof (NullReferenceException))]
|
||
|
public void RedirectToLoginPage_XtraQuery_Empty ()
|
||
|
{
|
||
|
FormsAuthentication.RedirectToLoginPage (String.Empty);
|
||
|
}
|
||
|
|
||
|
[Test]
|
||
|
[Category ("NotWorking")] // works on .net
|
||
|
public void Authenticate ()
|
||
|
{
|
||
|
Assert.IsFalse (FormsAuthentication.Authenticate (null, "password"), "null,string");
|
||
|
Assert.IsFalse (FormsAuthentication.Authenticate ("user", null), "string,null");
|
||
|
// not throwing
|
||
|
Assert.IsFalse (FormsAuthentication.Authenticate ("user", "password"), "string,string");
|
||
|
}
|
||
|
|
||
|
[TestFixtureTearDown]
|
||
|
public void TestFixtureTearDown()
|
||
|
{
|
||
|
WebTest.Unload();
|
||
|
}
|
||
|
}
|
||
|
}
|