using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.eShopOnContainers.WebMVC.Controllers; using Microsoft.eShopOnContainers.WebMVC.Services; using Microsoft.eShopOnContainers.WebMVC.ViewModels; using Moq; using System; using System.Collections.Generic; using System.Security.Claims; using System.Text; using System.Threading.Tasks; using Xunit; namespace UnitTest.Account { public class AccountControllerTest { private readonly Mock> _identityParserMock; private readonly Mock _httpContextMock; public AccountControllerTest() { _identityParserMock = new Mock>(); _httpContextMock = new Mock(); } [Fact] public void Signin_with_token_success() { //Arrange var fakeCP = GenerateFakeClaimsIdentity(); _httpContextMock.Setup(x => x.User) .Returns(new ClaimsPrincipal(fakeCP)); //Act var accountController = new AccountController(_identityParserMock.Object); accountController.ControllerContext.HttpContext = _httpContextMock.Object; var actionResult = accountController.SignIn(""); //Assert var redirectResult = Assert.IsType(actionResult); Assert.Equal(redirectResult.ActionName, "Index"); Assert.Equal(redirectResult.ControllerName, "Catalog"); Assert.Equal(accountController.ViewData["access_token"], "fakeToken"); } private ClaimsIdentity GenerateFakeClaimsIdentity() { var ci = new ClaimsIdentity(); ci.AddClaim(new Claim("access_token", "fakeToken")); return ci; } } }