ClientAuthenticationTest_Success_MultiList_SameAllowedAuthenticationsAfterPartialSuccess.cs 3.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. using System.Collections.Generic;
  2. using Microsoft.VisualStudio.TestTools.UnitTesting;
  3. using Moq;
  4. namespace Renci.SshNet.Tests.Classes
  5. {
  6. [TestClass]
  7. public class ClientAuthenticationTest_Success_MultiList_SameAllowedAuthenticationsAfterPartialSuccess : ClientAuthenticationTestBase
  8. {
  9. protected override void SetupMocks()
  10. {
  11. var seq = new MockSequence();
  12. SessionMock.InSequence(seq).Setup(p => p.RegisterMessage("SSH_MSG_USERAUTH_FAILURE"));
  13. SessionMock.InSequence(seq).Setup(p => p.RegisterMessage("SSH_MSG_USERAUTH_SUCCESS"));
  14. SessionMock.InSequence(seq).Setup(p => p.RegisterMessage("SSH_MSG_USERAUTH_BANNER"));
  15. ConnectionInfoMock.InSequence(seq).Setup(p => p.CreateNoneAuthenticationMethod())
  16. .Returns(NoneAuthenticationMethodMock.Object);
  17. NoneAuthenticationMethodMock.InSequence(seq).Setup(p => p.Authenticate(SessionMock.Object))
  18. .Returns(AuthenticationResult.Failure);
  19. ConnectionInfoMock.InSequence(seq).Setup(p => p.AuthenticationMethods)
  20. .Returns(new List<IAuthenticationMethod>
  21. {
  22. PasswordAuthenticationMethodMock.Object,
  23. PublicKeyAuthenticationMethodMock.Object,
  24. KeyboardInteractiveAuthenticationMethodMock.Object,
  25. });
  26. NoneAuthenticationMethodMock.InSequence(seq).Setup(p => p.AllowedAuthentications).Returns(new[] { "password", "publickey" });
  27. PasswordAuthenticationMethodMock.InSequence(seq).Setup(p => p.Name).Returns("password");
  28. PublicKeyAuthenticationMethodMock.InSequence(seq).Setup(p => p.Name).Returns("publickey");
  29. KeyboardInteractiveAuthenticationMethodMock.InSequence(seq).Setup(p => p.Name).Returns("keyboard-interactive");
  30. PasswordAuthenticationMethodMock.InSequence(seq).Setup(p => p.Authenticate(SessionMock.Object))
  31. .Returns(AuthenticationResult.PartialSuccess);
  32. PasswordAuthenticationMethodMock.InSequence(seq).Setup(p => p.AllowedAuthentications)
  33. .Returns(new[] {"password", "publickey"});
  34. PasswordAuthenticationMethodMock.InSequence(seq).Setup(p => p.Name).Returns("password");
  35. PublicKeyAuthenticationMethodMock.InSequence(seq).Setup(p => p.Name).Returns("publickey");
  36. KeyboardInteractiveAuthenticationMethodMock.InSequence(seq).Setup(p => p.Name).Returns("keyboard-interactive");
  37. PublicKeyAuthenticationMethodMock.InSequence(seq).Setup(p => p.Authenticate(SessionMock.Object)).Returns(AuthenticationResult.PartialSuccess);
  38. PublicKeyAuthenticationMethodMock.InSequence(seq).Setup(p => p.AllowedAuthentications)
  39. .Returns(new[] { "password", "publickey", "keyboard-interactive" });
  40. PasswordAuthenticationMethodMock.InSequence(seq).Setup(p => p.Name).Returns("password");
  41. PublicKeyAuthenticationMethodMock.InSequence(seq).Setup(p => p.Name).Returns("publickey");
  42. KeyboardInteractiveAuthenticationMethodMock.InSequence(seq).Setup(p => p.Name).Returns("keyboard-interactive");
  43. KeyboardInteractiveAuthenticationMethodMock.InSequence(seq).Setup(p => p.Authenticate(SessionMock.Object))
  44. .Returns(AuthenticationResult.Success);
  45. SessionMock.InSequence(seq).Setup(p => p.UnRegisterMessage("SSH_MSG_USERAUTH_FAILURE"));
  46. SessionMock.InSequence(seq).Setup(p => p.UnRegisterMessage("SSH_MSG_USERAUTH_SUCCESS"));
  47. SessionMock.InSequence(seq).Setup(p => p.UnRegisterMessage("SSH_MSG_USERAUTH_BANNER"));
  48. }
  49. protected override void Act()
  50. {
  51. ClientAuthentication.Authenticate(ConnectionInfoMock.Object, SessionMock.Object);
  52. }
  53. }
  54. }