This is probably not exactly what you need, but look, maybe you will understand this idea.
AccountController.cs
[HttpGet]
[Route("register")]
[AllowAnonymous]
public ActionResult Register()
{
if (IsUserAuthenticated)
{
return RedirectToAction("Index", "Home");
}
return View();
}
public bool IsUserAuthenticated
{
get
{
return
System.Web.HttpContext.Current.User.Identity.IsAuthenticated;
}
}
AccountControllerTests.cs
[Test]
public void GET__Register_UserLoggedIn_RedirectsToHomeIndex()
{
HttpContext.Current = CreateHttpContext(userLoggedIn: true);
var userStore = new Mock<IUserStore<ApplicationUser>>();
var userManager = new Mock<ApplicationUserManager>(userStore.Object);
var authenticationManager = new Mock<IAuthenticationManager>();
var signInManager = new Mock<ApplicationSignInManager>(userManager.Object, authenticationManager.Object);
var accountController = new AccountController(
userManager.Object, signInManager.Object, authenticationManager.Object);
var result = accountController.Register();
Assert.That(result, Is.TypeOf<RedirectToRouteResult>());
}
[Test]
public void GET__Register_UserLoggedOut_ReturnsView()
{
HttpContext.Current = CreateHttpContext(userLoggedIn: false);
var userStore = new Mock<IUserStore<ApplicationUser>>();
var userManager = new Mock<ApplicationUserManager>(userStore.Object);
var authenticationManager = new Mock<IAuthenticationManager>();
var signInManager = new Mock<ApplicationSignInManager>(userManager.Object, authenticationManager.Object);
var accountController = new AccountController(
userManager.Object, signInManager.Object, authenticationManager.Object);
var result = accountController.Register();
Assert.That(result, Is.TypeOf<ViewResult>());
}
private static HttpContext CreateHttpContext(bool userLoggedIn)
{
var httpContext = new HttpContext(
new HttpRequest(string.Empty, "http://sample.com", string.Empty),
new HttpResponse(new StringWriter())
)
{
User = userLoggedIn
? new GenericPrincipal(new GenericIdentity("userName"), new string[0])
: new GenericPrincipal(new GenericIdentity(string.Empty), new string[0])
};
return httpContext;
}
user2673195
source
share