2
0

ServiceFactoryTest_CreateConnector.cs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. using Microsoft.VisualStudio.TestTools.UnitTesting;
  2. using Moq;
  3. using Renci.SshNet.Connection;
  4. using System;
  5. namespace Renci.SshNet.Tests.Classes
  6. {
  7. [TestClass]
  8. public class ServiceFactoryTest_CreateConnector
  9. {
  10. private ServiceFactory _serviceFactory;
  11. private Mock<IConnectionInfo> _connectionInfoMock;
  12. private Mock<ISocketFactory> _socketFactoryMock;
  13. [TestInitialize]
  14. public void Setup()
  15. {
  16. _serviceFactory = new ServiceFactory();
  17. _connectionInfoMock = new Mock<IConnectionInfo>(MockBehavior.Strict);
  18. _socketFactoryMock = new Mock<ISocketFactory>(MockBehavior.Strict);
  19. }
  20. [TestMethod]
  21. public void ConnectionInfoIsNull()
  22. {
  23. const IConnectionInfo connectionInfo = null;
  24. try
  25. {
  26. _serviceFactory.CreateConnector(connectionInfo, _socketFactoryMock.Object);
  27. Assert.Fail();
  28. }
  29. catch (ArgumentNullException ex)
  30. {
  31. Assert.IsNull(ex.InnerException);
  32. Assert.AreEqual("connectionInfo", ex.ParamName);
  33. }
  34. }
  35. [TestMethod]
  36. public void SocketFactoryIsNull()
  37. {
  38. const ISocketFactory socketFactory = null;
  39. try
  40. {
  41. _serviceFactory.CreateConnector(_connectionInfoMock.Object, socketFactory);
  42. Assert.Fail();
  43. }
  44. catch (ArgumentNullException ex)
  45. {
  46. Assert.IsNull(ex.InnerException);
  47. Assert.AreEqual("socketFactory", ex.ParamName);
  48. }
  49. }
  50. [TestMethod]
  51. public void ProxyType_Http()
  52. {
  53. _connectionInfoMock.Setup(p => p.ProxyType).Returns(ProxyTypes.Http);
  54. var actual = _serviceFactory.CreateConnector(_connectionInfoMock.Object, _socketFactoryMock.Object);
  55. Assert.IsNotNull(actual);
  56. Assert.AreEqual(typeof(HttpConnector), actual.GetType());
  57. var httpConnector = (HttpConnector) actual;
  58. Assert.AreSame(_socketFactoryMock.Object, httpConnector.SocketFactory);
  59. _connectionInfoMock.Verify(p => p.ProxyType, Times.Once);
  60. }
  61. [TestMethod]
  62. public void ProxyType_None()
  63. {
  64. _connectionInfoMock.Setup(p => p.ProxyType).Returns(ProxyTypes.None);
  65. var actual = _serviceFactory.CreateConnector(_connectionInfoMock.Object, _socketFactoryMock.Object);
  66. Assert.IsNotNull(actual);
  67. Assert.AreEqual(typeof(DirectConnector), actual.GetType());
  68. var directConnector = (DirectConnector) actual;
  69. Assert.AreSame(_socketFactoryMock.Object, directConnector.SocketFactory);
  70. _connectionInfoMock.Verify(p => p.ProxyType, Times.Once);
  71. }
  72. [TestMethod]
  73. public void ProxyType_Socks4()
  74. {
  75. _connectionInfoMock.Setup(p => p.ProxyType).Returns(ProxyTypes.Socks4);
  76. var actual = _serviceFactory.CreateConnector(_connectionInfoMock.Object, _socketFactoryMock.Object);
  77. Assert.IsNotNull(actual);
  78. Assert.AreEqual(typeof(Socks4Connector), actual.GetType());
  79. var socks4Connector = (Socks4Connector) actual;
  80. Assert.AreSame(_socketFactoryMock.Object, socks4Connector.SocketFactory);
  81. _connectionInfoMock.Verify(p => p.ProxyType, Times.Once);
  82. }
  83. [TestMethod]
  84. public void ProxyType_Socks5()
  85. {
  86. _connectionInfoMock.Setup(p => p.ProxyType).Returns(ProxyTypes.Socks5);
  87. var actual = _serviceFactory.CreateConnector(_connectionInfoMock.Object, _socketFactoryMock.Object);
  88. Assert.IsNotNull(actual);
  89. Assert.AreEqual(typeof(Socks5Connector), actual.GetType());
  90. var socks5Connector = (Socks5Connector) actual;
  91. Assert.AreSame(_socketFactoryMock.Object, socks5Connector.SocketFactory);
  92. _connectionInfoMock.Verify(p => p.ProxyType, Times.Once);
  93. }
  94. [TestMethod]
  95. public void ProxyType_Undefined()
  96. {
  97. _connectionInfoMock.Setup(p => p.ProxyType).Returns((ProxyTypes) 666);
  98. try
  99. {
  100. _serviceFactory.CreateConnector(_connectionInfoMock.Object, _socketFactoryMock.Object);
  101. Assert.Fail();
  102. }
  103. catch (NotSupportedException ex)
  104. {
  105. Assert.IsNull(ex.InnerException);
  106. Assert.AreEqual("ProxyTypes '666' is not supported.", ex.Message);
  107. }
  108. _connectionInfoMock.Verify(p => p.ProxyType, Times.Exactly(2));
  109. }
  110. }
  111. }