Jo Shields 3c1f479b9d Imported Upstream version 4.0.0~alpha1
Former-commit-id: 806294f5ded97629b74c85c09952f2a74fe182d9
2015-04-07 09:35:12 +01:00

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();
}
}
}