|
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