|
1 | 1 | using System; |
2 | 2 | using System.Linq; |
| 3 | +using System.Net.Sockets; |
| 4 | +using System.Text; |
3 | 5 | using System.Text.RegularExpressions; |
4 | 6 | using System.Threading; |
5 | 7 |
|
6 | 8 | using Microsoft.VisualStudio.TestTools.UnitTesting; |
7 | 9 |
|
8 | 10 | using Moq; |
9 | 11 |
|
| 12 | +using Renci.SshNet.Messages.Connection; |
10 | 13 | using Renci.SshNet.Messages.Transport; |
11 | 14 |
|
12 | 15 | namespace Renci.SshNet.Tests.Classes |
@@ -59,7 +62,7 @@ public void ShouldNotIncludeStrictKexPseudoAlgorithmInSubsequentKex() |
59 | 62 |
|
60 | 63 | ServerListener.BytesReceived += ServerListener_BytesReceived; |
61 | 64 |
|
62 | | - void ServerListener_BytesReceived(byte[] bytesReceived, System.Net.Sockets.Socket socket) |
| 65 | + void ServerListener_BytesReceived(byte[] bytesReceived, Socket socket) |
63 | 66 | { |
64 | 67 | if (bytesReceived.Length > 5 && bytesReceived[5] == 20) |
65 | 68 | { |
@@ -106,6 +109,37 @@ public void SendMessageShouldSendPacketToServer() |
106 | 109 | Assert.AreEqual(1, ServerBytesReceivedRegister.Count); |
107 | 110 | } |
108 | 111 |
|
| 112 | + [TestMethod] |
| 113 | + [DataRow(true)] |
| 114 | + [DataRow(false)] |
| 115 | + public void UnknownGlobalRequestWithWantReply(bool wantReply) |
| 116 | + { |
| 117 | + Thread.Sleep(100); |
| 118 | + |
| 119 | + ServerBytesReceivedRegister.Clear(); |
| 120 | + |
| 121 | + var globalRequest = |
| 122 | + new GlobalRequestMessage(Encoding.ASCII.GetBytes("unknown-request"), wantReply).GetPacket(8, null); |
| 123 | + |
| 124 | + ServerSocket.Send(globalRequest, 4, globalRequest.Length - 4, SocketFlags.None); |
| 125 | + |
| 126 | + Thread.Sleep(100); |
| 127 | + |
| 128 | + if (wantReply) |
| 129 | + { |
| 130 | + // Should have sent a failure reply. |
| 131 | + Assert.AreEqual(1, ServerBytesReceivedRegister.Count); |
| 132 | + Assert.AreEqual(82, ServerBytesReceivedRegister[0][5], "Expected to have sent SSH_MSG_REQUEST_FAILURE(82)"); |
| 133 | + } |
| 134 | + else |
| 135 | + { |
| 136 | + // Should not have sent any reply. |
| 137 | + Assert.AreEqual(0, ServerBytesReceivedRegister.Count); |
| 138 | + } |
| 139 | + |
| 140 | + Assert.AreEqual(0, ErrorOccurredRegister.Count); |
| 141 | + } |
| 142 | + |
109 | 143 | [TestMethod] |
110 | 144 | public void SessionIdShouldReturnExchangeHashCalculatedFromKeyExchangeInitMessage() |
111 | 145 | { |
|
0 commit comments