using System; using System.Net; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using Renci.SshNet.Connection; using Renci.SshNet.Tests.Common; namespace Renci.SshNet.Tests.Classes { /// /// Provides functionality to connect and interact with SSH server. /// [TestClass] public partial class SessionTest : TestBase { private Mock _serviceFactoryMock; private Mock _socketFactoryMock; protected override void OnInit() { base.OnInit(); _serviceFactoryMock = new Mock(MockBehavior.Strict); _socketFactoryMock = new Mock(MockBehavior.Strict); } [TestMethod] public void ConstructorShouldThrowArgumentNullExceptionWhenConnectionInfoIsNull() { const ConnectionInfo connectionInfo = null; try { _ = new Session(connectionInfo, _serviceFactoryMock.Object, _socketFactoryMock.Object); Assert.Fail(); } catch (ArgumentNullException ex) { Assert.IsNull(ex.InnerException); Assert.AreEqual("connectionInfo", ex.ParamName); } } [TestMethod] public void ConstructorShouldThrowArgumentNullExceptionWhenServiceFactoryIsNull() { var serverEndPoint = new IPEndPoint(IPAddress.Loopback, 8122); var connectionInfo = CreateConnectionInfo(serverEndPoint, TimeSpan.FromSeconds(5)); IServiceFactory serviceFactory = null; try { _ = new Session(connectionInfo, serviceFactory, _socketFactoryMock.Object); Assert.Fail(); } catch (ArgumentNullException ex) { Assert.IsNull(ex.InnerException); Assert.AreEqual("serviceFactory", ex.ParamName); } } [TestMethod] public void ConstructorShouldThrowArgumentNullExceptionWhenSocketFactoryIsNull() { var serverEndPoint = new IPEndPoint(IPAddress.Loopback, 8122); var connectionInfo = CreateConnectionInfo(serverEndPoint, TimeSpan.FromSeconds(5)); const ISocketFactory socketFactory = null; try { _ = new Session(connectionInfo, _serviceFactoryMock.Object, socketFactory); Assert.Fail(); } catch (ArgumentNullException ex) { Assert.IsNull(ex.InnerException); Assert.AreEqual("socketFactory", ex.ParamName); } } private static ConnectionInfo CreateConnectionInfo(IPEndPoint serverEndPoint, TimeSpan timeout) { return new ConnectionInfo(serverEndPoint.Address.ToString(), serverEndPoint.Port, "eric", new NoneAuthenticationMethod("eric")) { Timeout = timeout }; } } }