Browse Source

Harden tests.

drieseng 9 years ago
parent
commit
c0caf7dfa3

+ 5 - 1
src/Renci.SshNet.Tests/Classes/ForwardedPortRemoteTest_Start_PortStopped.cs

@@ -121,6 +121,7 @@ namespace Renci.SshNet.Tests.Classes
             var originatorAddress = new Random().Next().ToString(CultureInfo.InvariantCulture);
             var originatorPort = (uint)new Random().Next(0, int.MaxValue);
             var channelMock = new Mock<IChannelForwardedTcpip>(MockBehavior.Strict);
+            var channelDiposed = new ManualResetEvent(false);
 
             _sessionMock.Setup(
                 p =>
@@ -132,7 +133,7 @@ namespace Renci.SshNet.Tests.Classes
                             ep => ep.Address.Equals(_remoteEndpoint.Address) && ep.Port == _remoteEndpoint.Port),
                         _forwardedPort));
             channelMock.Setup(p => p.Close());
-            channelMock.Setup(p => p.Dispose());
+            channelMock.Setup(p => p.Dispose()).Callback(() => channelDiposed.Set());
 
             _sessionMock.Raise(p => p.ChannelOpenReceived += null,
                 new MessageEventArgs<ChannelOpenMessage>(new ChannelOpenMessage(channelNumber, initialWindowSize,
@@ -140,6 +141,9 @@ namespace Renci.SshNet.Tests.Classes
                     new ForwardedTcpipChannelInfo(_forwardedPort.BoundHost, _forwardedPort.BoundPort, originatorAddress,
                         originatorPort))));
 
+            // wait for channel to be disposed
+            channelDiposed.WaitOne(TimeSpan.FromMilliseconds(200));
+
             _sessionMock.Verify(p => p.CreateChannelForwardedTcpip(channelNumber, initialWindowSize, maximumPacketSize), Times.Once);
             channelMock.Verify(p => p.Bind(It.Is<IPEndPoint>(ep => ep.Address.Equals(_remoteEndpoint.Address) && ep.Port == _remoteEndpoint.Port), _forwardedPort), Times.Once);
             channelMock.Verify(p => p.Close(), Times.Once);

+ 5 - 1
src/Renci.SshNet.Tests/Classes/ForwardedPortRemoteTest_Started.cs

@@ -99,6 +99,7 @@ namespace Renci.SshNet.Tests.Classes
             var originatorAddress = new Random().Next().ToString(CultureInfo.InvariantCulture);
             var originatorPort = (uint) new Random().Next(0, int.MaxValue);
             var channelMock = new Mock<IChannelForwardedTcpip>(MockBehavior.Strict);
+            var channelDisposed = new ManualResetEvent(false);
 
             _sessionMock.Setup(
                 p =>
@@ -110,7 +111,7 @@ namespace Renci.SshNet.Tests.Classes
                             ep => ep.Address.Equals(_remoteEndpoint.Address) && ep.Port == _remoteEndpoint.Port),
                         _forwardedPort));
             channelMock.Setup(p => p.Close());
-            channelMock.Setup(p => p.Dispose());
+            channelMock.Setup(p => p.Dispose()).Callback(() => channelDisposed.Set());
 
             _sessionMock.Raise(p => p.ChannelOpenReceived += null,
                 new MessageEventArgs<ChannelOpenMessage>(new ChannelOpenMessage(channelNumber, initialWindowSize,
@@ -118,6 +119,9 @@ namespace Renci.SshNet.Tests.Classes
                     new ForwardedTcpipChannelInfo(_forwardedPort.BoundHost, _forwardedPort.BoundPort, originatorAddress,
                         originatorPort))));
 
+            // wait for channel to be disposed
+            channelDisposed.WaitOne(TimeSpan.FromMilliseconds(200));
+
             _sessionMock.Verify(p => p.CreateChannelForwardedTcpip(channelNumber, initialWindowSize, maximumPacketSize), Times.Once);
             channelMock.Verify(p => p.Bind(It.Is<IPEndPoint>(ep => ep.Address.Equals(_remoteEndpoint.Address) && ep.Port == _remoteEndpoint.Port), _forwardedPort), Times.Once);
             channelMock.Verify(p => p.Close(), Times.Once);