Skip to content

Commit c0caf7d

Browse files
committed
Harden tests.
1 parent 82c288b commit c0caf7d

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

src/Renci.SshNet.Tests/Classes/ForwardedPortRemoteTest_Start_PortStopped.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ public void ForwardedPortShouldAcceptNewConnections()
121121
var originatorAddress = new Random().Next().ToString(CultureInfo.InvariantCulture);
122122
var originatorPort = (uint)new Random().Next(0, int.MaxValue);
123123
var channelMock = new Mock<IChannelForwardedTcpip>(MockBehavior.Strict);
124+
var channelDiposed = new ManualResetEvent(false);
124125

125126
_sessionMock.Setup(
126127
p =>
@@ -132,14 +133,17 @@ public void ForwardedPortShouldAcceptNewConnections()
132133
ep => ep.Address.Equals(_remoteEndpoint.Address) && ep.Port == _remoteEndpoint.Port),
133134
_forwardedPort));
134135
channelMock.Setup(p => p.Close());
135-
channelMock.Setup(p => p.Dispose());
136+
channelMock.Setup(p => p.Dispose()).Callback(() => channelDiposed.Set());
136137

137138
_sessionMock.Raise(p => p.ChannelOpenReceived += null,
138139
new MessageEventArgs<ChannelOpenMessage>(new ChannelOpenMessage(channelNumber, initialWindowSize,
139140
maximumPacketSize,
140141
new ForwardedTcpipChannelInfo(_forwardedPort.BoundHost, _forwardedPort.BoundPort, originatorAddress,
141142
originatorPort))));
142143

144+
// wait for channel to be disposed
145+
channelDiposed.WaitOne(TimeSpan.FromMilliseconds(200));
146+
143147
_sessionMock.Verify(p => p.CreateChannelForwardedTcpip(channelNumber, initialWindowSize, maximumPacketSize), Times.Once);
144148
channelMock.Verify(p => p.Bind(It.Is<IPEndPoint>(ep => ep.Address.Equals(_remoteEndpoint.Address) && ep.Port == _remoteEndpoint.Port), _forwardedPort), Times.Once);
145149
channelMock.Verify(p => p.Close(), Times.Once);

src/Renci.SshNet.Tests/Classes/ForwardedPortRemoteTest_Started.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ public void ForwardedPortShouldAcceptChannelOpenMessageForBoundAddressAndBoundPo
9999
var originatorAddress = new Random().Next().ToString(CultureInfo.InvariantCulture);
100100
var originatorPort = (uint) new Random().Next(0, int.MaxValue);
101101
var channelMock = new Mock<IChannelForwardedTcpip>(MockBehavior.Strict);
102+
var channelDisposed = new ManualResetEvent(false);
102103

103104
_sessionMock.Setup(
104105
p =>
@@ -110,14 +111,17 @@ public void ForwardedPortShouldAcceptChannelOpenMessageForBoundAddressAndBoundPo
110111
ep => ep.Address.Equals(_remoteEndpoint.Address) && ep.Port == _remoteEndpoint.Port),
111112
_forwardedPort));
112113
channelMock.Setup(p => p.Close());
113-
channelMock.Setup(p => p.Dispose());
114+
channelMock.Setup(p => p.Dispose()).Callback(() => channelDisposed.Set());
114115

115116
_sessionMock.Raise(p => p.ChannelOpenReceived += null,
116117
new MessageEventArgs<ChannelOpenMessage>(new ChannelOpenMessage(channelNumber, initialWindowSize,
117118
maximumPacketSize,
118119
new ForwardedTcpipChannelInfo(_forwardedPort.BoundHost, _forwardedPort.BoundPort, originatorAddress,
119120
originatorPort))));
120121

122+
// wait for channel to be disposed
123+
channelDisposed.WaitOne(TimeSpan.FromMilliseconds(200));
124+
121125
_sessionMock.Verify(p => p.CreateChannelForwardedTcpip(channelNumber, initialWindowSize, maximumPacketSize), Times.Once);
122126
channelMock.Verify(p => p.Bind(It.Is<IPEndPoint>(ep => ep.Address.Equals(_remoteEndpoint.Address) && ep.Port == _remoteEndpoint.Port), _forwardedPort), Times.Once);
123127
channelMock.Verify(p => p.Close(), Times.Once);

0 commit comments

Comments
 (0)