Guest User

Untitled

a guest
Jun 14th, 2018
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.89 KB | None | 0 0
  1. public abstract class LoginContext
  2. {
  3. protected Mock<IUserRepository> userRepository;
  4. protected Mock<ILdapService> ldapService;
  5. protected Mock<IAuthenticationManager> authenticationManager;
  6. protected SessionController controller;
  7.  
  8. protected LoginContext()
  9. {
  10. userRepository = new Mock<IUserRepository>();
  11. ldapService = new Mock<ILdapService>();
  12. authenticationManager = new Mock<IAuthenticationManager>();
  13. controller = new SessionController(ldapService.Object, userRepository.Object, authenticationManager.Object);
  14. }
  15.  
  16. }
  17.  
  18. // scenario: attempting to login without a username and password.
  19.  
  20. public class WhenSigningInWithoutAUsernameAndPassword: LoginContext
  21. {
  22. private ViewResult result;
  23. public WhenSigningInWithoutAUsernameAndPassword(): base()
  24. {
  25. var model = new SessionControllerViewModel();
  26. result = controller.Index(model) as ViewResult;
  27.  
  28. }
  29.  
  30. [Fact]
  31. public void should_display_login_view()
  32. {
  33. Assert.NotNull(result);
  34. Assert.Equal("",result.ViewName);
  35. }
  36.  
  37. [Fact]
  38. public void should_contain_error_message_to_render()
  39. {
  40. var model = result.ViewData.Model as SessionControllerViewModel;
  41. Assert.NotNull(model);
  42. Assert.True(model.Errors.Any());
  43. }
  44. }
  45.  
  46.  
  47. // scenario: attempting to login with invalid credentials
  48. public class WhenSigningInWithInvalidCredentials: LoginContext
  49. {
  50. private ViewResult result;
  51.  
  52. public WhenSigningInWithInvalidCredentials()
  53. {
  54. ldapService.Setup(x => x.Authenticate(It.IsAny<string>(), It.IsAny<string>())).Returns((LdapAccount)null);
  55. var model = new SessionControllerViewModel();
  56. model.Username = "test";
  57. model.Password = "password";
  58. result = controller.Index(model) as ViewResult;
  59.  
  60. }
  61.  
  62. [Fact]
  63. public void should_display_login_view()
  64. {
  65. Assert.NotNull(result);
  66. Assert.Equal("",result.ViewName);
  67. }
  68.  
  69. [Fact]
  70. public void should_contain_error_message_to_render()
  71. {
  72. var model = result.ViewData.Model as SessionControllerViewModel;
  73. Assert.NotNull(model);
  74. Assert.True(model.Errors.Any());
  75. Assert.True(model.Errors[0].Contains("Incorrect"));
  76. }
  77. }
  78.  
  79. // scenario: attempting to login when they're not authorized
  80. public class WhenSigningInWithoutAuthorizedAccess : LoginContext
  81. {
  82. private ViewResult result;
  83.  
  84. public WhenSigningInWithoutAuthorizedAccess()
  85. {
  86. var model = new SessionControllerViewModel();
  87. model.Username = "test";
  88. model.Password = "password";
  89. var ldapAccount = new LdapAccount() {Username = model.Username};
  90.  
  91. ldapService.Setup(x => x.Authenticate(It.IsAny<string>(), It.IsAny<string>())).Returns(ldapAccount);
  92. userRepository.Setup(x => x.Get(ldapAccount.Username)).Returns((User) null);
  93.  
  94. result = controller.Index(model) as ViewResult;
  95.  
  96. }
  97.  
  98. [Fact]
  99. public void should_display_login_view()
  100. {
  101. Assert.NotNull(result);
  102. Assert.Equal("", result.ViewName);
  103. }
  104.  
  105. [Fact]
  106. public void should_contain_error_message_to_render()
  107. {
  108. var model = result.ViewData.Model as SessionControllerViewModel;
  109. Assert.NotNull(model);
  110. Assert.True(model.Errors.Any());
  111. Assert.True(model.Errors[0].Contains("access"));
  112. }
  113. }
  114.  
  115. // scenario: signing in correctly
  116. public class WhenSigningInWithCorrectAccessAndCredentials: LoginContext
  117. {
  118. private RedirectToRouteResult result;
  119. public WhenSigningInWithCorrectAccessAndCredentials()
  120. {
  121. var model = new SessionControllerViewModel();
  122. model.Username = "test";
  123. model.Password = "password";
  124. var ldapAccount = new LdapAccount() { Username = model.Username };
  125. var user = new User();
  126. user.Username = model.Username;
  127.  
  128. ldapService.Setup(x => x.Authenticate(model.Username, model.Password)).Returns(ldapAccount);
  129. userRepository.Setup(x => x.Get(ldapAccount.Username)).Returns(user);
  130. authenticationManager.Setup(x => x.SignIn(user.Username)).AtMostOnce();
  131.  
  132. result = controller.Index(model) as RedirectToRouteResult;
  133. }
  134.  
  135. [Fact]
  136. public void should_signin_the_user()
  137. {
  138. authenticationManager.VerifyAll();
  139. }
  140.  
  141. [Fact]
  142. public void should_redirect_the_user_to_the_main_page()
  143. {
  144. Assert.NotNull(result);
  145. Assert.Equal("Home",result.RouteValues["controller"]);
  146. Assert.Equal("Index",result.RouteValues["action"]);
  147. }
  148. }
Add Comment
Please, Sign In to add comment