using System;
using System.Web.Mvc;
using NUnit.Framework;
using MyWebMvc.Attributes;
namespace MyWebMvc.Tests.Attributes
{
[TestFixture]
public class MyRequireSslAttributeTests
{
[Test]
[ExpectedException(typeof(ArgumentException))]
public void OnAuthorization_ThrowException_WhenFilterIsNull()
{
var attr = new MyRequireSslAttribute();
attr.OnAuthorization(null);
}
[Test]
public void OnAuthorization_IsEnableFalse_BaseValidationWasNotCalled()
{
var attr = new StubMyRequireSslAttribute {EnableSsl = false, HttpContextBool = false};
var context = new AuthorizationContext();
attr.OnAuthorization(context);
Assert.That(attr.BaseWasCalled, Is.False);
}
[Test]
public void OnAuthorization_HttpContextNullTrue_BaseValidationWasCalled()
{
var attr = new StubMyRequireSslAttribute { EnableSsl = false, HttpContextBool = true };
var context = new AuthorizationContext();
attr.OnAuthorization(context);
Assert.That(attr.BaseWasCalled, Is.True);
}
[Test]
public void OnAuthorization_HttpContextNullTrueIsEnableTrue_BaseValidationWasCalled()
{
var attr = new StubMyRequireSslAttribute { EnableSsl = true, HttpContextBool = true };
var context = new AuthorizationContext();
attr.OnAuthorization(context);
Assert.That(attr.BaseWasCalled, Is.True);
}
[Test]
public void OnAuthorization_IsEnableTrue_BaseValidationIsCalled()
{
var attr = new StubMyRequireSslAttribute { EnableSsl = true, HttpContextBool = false };
var context = new AuthorizationContext();
attr.OnAuthorization(context);
Assert.That(attr.BaseWasCalled, Is.True);
}
}
public class StubMyRequireSslAttribute : MyRequireSslAttribute
{
public bool EnableSsl { get; set; }
public bool HttpContextBool { get; set; }
public bool BaseWasCalled { get; set; }
protected override bool IsHttpContextNull(AuthorizationContext filterContext)
{
return HttpContextBool;
}
protected override bool IsEnableSsl()
{
return EnableSsl;
}
protected override void BaseOnAuthorization(AuthorizationContext filterContext)
{
BaseWasCalled = true;
}
}
}