You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

51 lines
1.6 KiB

8 years ago
  1. using Microsoft.AspNetCore.Http;
  2. using Microsoft.AspNetCore.Http.Authentication;
  3. using Microsoft.AspNetCore.Mvc;
  4. using Microsoft.eShopOnContainers.WebMVC.Controllers;
  5. using Moq;
  6. using System.Security.Claims;
  7. using Xunit;
  8. namespace UnitTest.Account
  9. {
  10. public class AccountControllerTest
  11. {
  12. private readonly Mock<HttpContext> _httpContextMock;
  13. public AccountControllerTest()
  14. {
  15. _httpContextMock = new Mock<HttpContext>();
  16. }
  17. [Fact]
  18. public void Signin_with_token_success()
  19. {
  20. //Arrange
  21. var fakeCP = GenerateFakeClaimsIdentity();
  22. var mockAuth = new Mock<AuthenticationManager>();
  23. _httpContextMock.Setup(x => x.User)
  24. .Returns(new ClaimsPrincipal(fakeCP));
  25. _httpContextMock.Setup(c => c.Authentication)
  26. .Returns(mockAuth.Object);
  27. //Act
  28. var accountController = new AccountController();
  29. accountController.ControllerContext.HttpContext = _httpContextMock.Object;
  30. var actionResult = accountController.SignIn("").Result;
  31. //Assert
  32. var redirectResult = Assert.IsType<RedirectToActionResult>(actionResult);
  33. Assert.Equal(redirectResult.ActionName, "Index");
  34. Assert.Equal(redirectResult.ControllerName, "Catalog");
  35. }
  36. private ClaimsIdentity GenerateFakeClaimsIdentity()
  37. {
  38. var ci = new ClaimsIdentity();
  39. ci.AddClaim(new Claim("access_token", "fakeToken"));
  40. return ci;
  41. }
  42. }
  43. }