using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http.Authentication; using Microsoft.AspNetCore.Mvc; using Microsoft.eShopOnContainers.WebMVC.Controllers; using Moq; using System.Security.Claims; using Xunit; namespace UnitTest.Account { public class AccountControllerTest { private readonly Mock _httpContextMock; public AccountControllerTest() { _httpContextMock = new Mock(); } /* TBD: Find a way to mock HttpContext GetTokenAsync method */ //[Fact] //public void Signin_with_token_success() //{ // //Arrange // var fakeCP = GenerateFakeClaimsIdentity(); // var mockAuth = new Mock(); // _httpContextMock.Setup(x => x.User) // .Returns(new ClaimsPrincipal(fakeCP)); // _httpContextMock.Setup(c => c.Authentication) // .Returns(mockAuth.Object); // //Act // var accountController = new AccountController(); // accountController.ControllerContext.HttpContext = _httpContextMock.Object; // var actionResult = accountController.SignIn("").Result; // //Assert // var redirectResult = Assert.IsType(actionResult); // Assert.Equal(redirectResult.ActionName, "Index"); // Assert.Equal(redirectResult.ControllerName, "Catalog"); //} private ClaimsIdentity GenerateFakeClaimsIdentity() { var ci = new ClaimsIdentity(); ci.AddClaim(new Claim("access_token", "fakeToken")); return ci; } } }