I have the following unit test defined to test my model binder:
[TestMethod]
public void DateTime_Works() {
    // Arrange
    var controllerContext = FakeContext.GetAuthenticatedControllerContext(new Mock<Controller>().Object, "TestAdmin");
    var values = new NameValueCollection {
        { "Foo.Date", "12/02/1964" },
        { "Foo.Hour", "12" },
        { "Foo.Minute", "00" },
        { "Foo.Second", "00" }
    };
    var bindingContext = new ModelBindingContext() { ModelName = "Foo", ValueProvider = new NameValueCollectionValueProvider(values, null) };
    var binder = new DateAndTimeModelBinder();
    // Act
    var result = (DateTime)binder.BindModel(controllerContext, bindingContext);
    // Assert
    Assert.AreEqual(DateTime.Parse("1964-12-02 12:00:00"), result);
}
Here is the FakeContext class:
public static class FakeContext {
    public static HttpContextBase GetHttpContext(string username) {
        var context = new Mock<HttpContextBase>();
        context.SetupGet(ctx => ctx.Request.IsAuthenticated).Returns(!string.IsNullOrEmpty(username));
        return context.Object;
    }
    public static ControllerContext GetControllerContext(Controller controller) {
        return GetAuthenticatedControllerContext(controller, null);
    }
    public static ControllerContext GetAuthenticatedControllerContext(Controller controller, string username) {
        var httpContext = GetHttpContext(username);
        return new ControllerContext(httpContext, new RouteData(), controller);
    }
}
Within my model binder i call a utility method which has the following line in it:
HttpContext.Current.User.Identity.IsAuthenticated
This seems to always return false even when I pass a username in. I was wondering how the GetHttpContext method can be modified to mock this out aswell.
I'd appreciate the help. Thanks