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.

55 lines
1.8 KiB

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