| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 | using Microsoft.VisualStudio.TestTools.UnitTesting;using Moq;using Renci.SshNet.Tests.Common;namespace Renci.SshNet.Tests.Classes{    [TestClass]    public abstract class ClientAuthenticationTestBase : TestBase    {        internal Mock<IConnectionInfoInternal> ConnectionInfoMock { get; private set; }        internal Mock<ISession> SessionMock { get; private set; }        internal Mock<IAuthenticationMethod> NoneAuthenticationMethodMock { get; private set; }        internal Mock<IAuthenticationMethod> PasswordAuthenticationMethodMock { get; private set; }        internal Mock<IAuthenticationMethod> PublicKeyAuthenticationMethodMock { get; private set; }        internal Mock<IAuthenticationMethod> KeyboardInteractiveAuthenticationMethodMock { get; private set; }        protected abstract void SetupData();        protected void CreateMocks()        {            ConnectionInfoMock = new Mock<IConnectionInfoInternal>(MockBehavior.Strict);            SessionMock = new Mock<ISession>(MockBehavior.Strict);            NoneAuthenticationMethodMock = new Mock<IAuthenticationMethod>(MockBehavior.Strict);            PasswordAuthenticationMethodMock = new Mock<IAuthenticationMethod>(MockBehavior.Strict);            PublicKeyAuthenticationMethodMock = new Mock<IAuthenticationMethod>(MockBehavior.Strict);            KeyboardInteractiveAuthenticationMethodMock = new Mock<IAuthenticationMethod>(MockBehavior.Strict);        }        protected abstract void SetupMocks();        protected virtual void Arrange()        {            SetupData();            CreateMocks();            SetupMocks();        }        protected abstract void Act();        protected sealed override void OnInit()        {            base.OnInit();            Arrange();            Act();        }        [TestMethod]        public void RegisterMessageWithUserAuthFailureShouldBeInvokedOnce()        {            SessionMock.Verify(p => p.RegisterMessage("SSH_MSG_USERAUTH_FAILURE"), Times.Once);        }        [TestMethod]        public void RegisterMessageWithUserAuthSuccessShouldBeInvokedOnce()        {            SessionMock.Verify(p => p.RegisterMessage("SSH_MSG_USERAUTH_SUCCESS"), Times.Once);        }        [TestMethod]        public void RegisterMessageWithUserAuthBannerShouldBeInvokedOnce()        {            SessionMock.Verify(p => p.RegisterMessage("SSH_MSG_USERAUTH_BANNER"), Times.Once);        }        [TestMethod]        public void UnRegisterMessageWithUserAuthFailureShouldBeInvokedOnce()        {            SessionMock.Verify(p => p.UnRegisterMessage("SSH_MSG_USERAUTH_FAILURE"), Times.Once);        }        [TestMethod]        public void UnRegisterMessageWithUserAuthSuccessShouldBeInvokedOnce()        {            SessionMock.Verify(p => p.UnRegisterMessage("SSH_MSG_USERAUTH_SUCCESS"), Times.Once);        }        [TestMethod]        public void UnRegisterMessageWithUserAuthBannerShouldBeInvokedOnce()        {            SessionMock.Verify(p => p.UnRegisterMessage("SSH_MSG_USERAUTH_BANNER"), Times.Once);        }    }}
 |