Przeglądaj źródła

Added test for:
https://github.com/sshnet/SSH.NET/issues/8

drieseng 9 lat temu
rodzic
commit
1e94070b23

+ 6 - 1
src/Renci.SshNet.Tests/Classes/SessionTest_ConnectedBase.cs

@@ -105,7 +105,7 @@ namespace Renci.SshNet.Tests.Classes
             _keyExchangeMock.Setup(p => p.CreateCompressor()).Returns((Compressor) null);
             _keyExchangeMock.Setup(p => p.CreateDecompressor()).Returns((Compressor) null);
             _keyExchangeMock.Setup(p => p.Dispose());
-            _serviceFactoryMock.Setup(p => p.CreateClientAuthentication()).Returns(_clientAuthenticationMock.Object);
+            _serviceFactoryMock.Setup(p => p.CreateClientAuthentication()).Callback(ClientAuthentication_Callback).Returns(_clientAuthenticationMock.Object);
             _clientAuthenticationMock.Setup(p => p.Authenticate(ConnectionInfo, Session));
 
             ServerListener = new AsyncSocketListener(_serverEndPoint);
@@ -119,6 +119,7 @@ namespace Renci.SshNet.Tests.Classes
                 };
 
             var counter = 0;
+
             ServerListener.BytesReceived += (received, socket) =>
                 {
                     ServerBytesReceivedRegister.Add(received);
@@ -155,6 +156,10 @@ namespace Renci.SshNet.Tests.Classes
             Session.Connect();
         }
 
+        protected virtual void ClientAuthentication_Callback()
+        {
+        }
+
         protected abstract void Act();
 
         private class ServiceAcceptMessageBuilder

+ 32 - 0
src/Renci.SshNet.Tests/Classes/SessionTest_Connected_GlobalRequestMessageAfterAuthenticationRace.cs

@@ -0,0 +1,32 @@
+using System;
+using System.Net.Sockets;
+using System.Threading;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using Renci.SshNet.Messages.Connection;
+
+namespace Renci.SshNet.Tests.Classes
+{
+    /// <summary>
+    /// Test for https://github.com/sshnet/SSH.NET/pull/9.
+    /// </summary>
+    [TestClass]
+    public class SessionTest_Connected_GlobalRequestMessageAfterAuthenticationRace : SessionTest_ConnectedBase
+    {
+        protected override void Act()
+        {
+        }
+
+        protected override void ClientAuthentication_Callback()
+        {
+            var globalRequestMessage = new GlobalRequestMessage(GlobalRequestName.TcpIpForward, false, "address", 70);
+            var globalRequest = globalRequestMessage.GetPacket(8, null);
+            ServerSocket.Send(globalRequest, 4, globalRequest.Length - 4, SocketFlags.None);
+        }
+
+        [TestMethod]
+        public void ErrorOccurredShouldNotBeRaised()
+        {
+            Assert.AreEqual(0, ErrorOccurredRegister.Count);
+        }
+    }
+}

+ 2 - 0
src/Renci.SshNet.Tests/Renci.SshNet.Tests.csproj

@@ -132,6 +132,7 @@
     <Compile Include="Classes\Common\ExtensionsTest_IsEqualTo_ByteArray.cs" />
     <Compile Include="Classes\Common\ExtensionsTest_Take_Count.cs" />
     <Compile Include="Classes\Common\ExtensionsTest_Take_OffsetAndCount.cs" />
+    <Compile Include="Classes\Common\ExtensionsTest_ToGlobalRequestName.cs" />
     <Compile Include="Classes\Common\ExtensionsTest_TrimLeadingZeros.cs" />
     <Compile Include="Classes\ConnectionInfoTest_Authenticate_Failure.cs" />
     <Compile Include="Classes\ConnectionInfoTest_Authenticate_Success.cs" />
@@ -236,6 +237,7 @@
     <Compile Include="Classes\SessionTest_ConnectedBase.cs" />
     <Compile Include="Classes\SessionTest_Connected_ConnectionReset.cs" />
     <Compile Include="Classes\SessionTest_Connected_Disconnect.cs" />
+    <Compile Include="Classes\SessionTest_Connected_GlobalRequestMessageAfterAuthenticationRace.cs" />
     <Compile Include="Classes\SessionTest_Connected_ServerSendsDisconnectMessage.cs" />
     <Compile Include="Classes\SessionTest_Connected_ServerSendsBadPacket.cs" />
     <Compile Include="Classes\SessionTest_Connected_ServerSendsDisconnectMessageAndShutsDownSocket.cs" />