Advertisement
Guest User

Untitled

a guest
Jul 24th, 2017
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.08 KB | None | 0 0
  1. public ActionResult Index()
  2. {
  3. IEnumerable<Colour> colours = null;
  4.  
  5. if (isUserAdmin())
  6. {
  7. colours = db.Colours;
  8. }
  9. else
  10. {
  11. string userId = User.Identity.GetUserId();
  12. IEnumerable<string> userRoleIds = db.Users.Find(userId).Roles.Select(x => x.Id);
  13. colours = db.ColourRoles.Where(x => userRoleIds.Contains(x.RoleId)).Select(y => y.Colour).Distinct();
  14. }
  15.  
  16. ViewData["Colours"] = colours;
  17. return View();
  18. }
  19.  
  20. [TestClass]
  21. public class ControllerUnitTest {
  22.  
  23. [TestMethod]
  24. public void ControllerIndexTest() {
  25. // Arrange
  26. var username = "[Test_Username_Here]";
  27. string[] roles = new[] { "FakeRoleId1", "FakeRoleId2" };
  28. var controller = new CollorsController(new FakeDbContext());
  29. controller.ControllerContext = new ControllerContext() {
  30. Controller = controller,
  31. RequestContext = new RequestContext(new MockHttpContext(username, roles), new RouteData())
  32. };
  33.  
  34. // Act
  35. var actionResult = controller.Index();
  36. var viewResult = actionResult as ViewResult;
  37.  
  38. // Assert
  39. Assert.IsNotNull(viewResult);
  40. Assert.IsTrue(viewResult.ViewData.ContainsKey("Colours"));
  41. }
  42.  
  43. private class MockHttpContext : HttpContextBase {
  44. private readonly IPrincipal user;
  45.  
  46. public MockHttpContext(string username, string[] roles = null) {
  47. var identity = new GenericIdentity(username, string.Empty);
  48. var principal = new GenericPrincipal(identity, roles ?? new string[] { });
  49. user = principal;
  50. }
  51.  
  52. public override IPrincipal User {
  53. get {
  54. return user;
  55. }
  56. set {
  57. base.User = value;
  58. }
  59. }
  60. }
  61. }
  62.  
  63. var username = "[Test_Username_Here]";
  64. string[] roles = new[] { "FakeRoleId1", "FakeRoleId2" };
  65. var fake = Isolate.Fake.AllInstances<HttpContextBase>();
  66. var user = new ClaimsPrincipal(new GenericPrincipal(username, roles ?? new string[] { }));
  67. Isolate.WhenCalled(() => fake.User).WillReturn(user);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement