mirror of
https://github.com/sshnet/SSH.NET.git
synced 2026-09-10 17:25:51 +00:00
11e7a52cb3
Add upper bounds on the number of banner lines and line length before the SSH identification string, analogous to OpenSSH. Also don't buffer all the data unnecessarily.
158 lines
5.6 KiB
C#
158 lines
5.6 KiB
C#
using System;
|
|
|
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
|
|
|
using Renci.SshNet.Tests.Common;
|
|
|
|
namespace Renci.SshNet.Tests.Classes.Common
|
|
{
|
|
[TestClass]
|
|
public class PacketDumpTest
|
|
{
|
|
[TestMethod]
|
|
public void Create_ByteArrayAndIndentLevel_DataIsNull()
|
|
{
|
|
const byte[] data = null;
|
|
|
|
try
|
|
{
|
|
_ = PacketDump.Create(data, 0);
|
|
Assert.Fail();
|
|
}
|
|
catch (ArgumentNullException ex)
|
|
{
|
|
Assert.IsNull(ex.InnerException);
|
|
Assert.AreEqual("data", ex.ParamName);
|
|
}
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Create_ByteArrayAndIndentLevel_IndentLevelLessThanZero()
|
|
{
|
|
var data = new byte[0];
|
|
|
|
try
|
|
{
|
|
_ = PacketDump.Create(data, -1);
|
|
Assert.Fail();
|
|
}
|
|
catch (ArgumentOutOfRangeException ex)
|
|
{
|
|
Assert.IsNull(ex.InnerException);
|
|
|
|
Assert.AreEqual("indentLevel", ex.ParamName);
|
|
}
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Create_ByteArrayAndIndentLevel_DataIsEmpty()
|
|
{
|
|
var data = new byte[0];
|
|
|
|
var actual = PacketDump.Create(data, 2);
|
|
|
|
Assert.AreEqual(string.Empty, actual);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Create_ByteArrayAndIndentLevel_DataIsMultipleOfLineWidth_IndentLevelTwo()
|
|
{
|
|
var data = new byte[]
|
|
{
|
|
0x07, 0x00, 0x1f, 0x65, 0x20, 0x62, 0x09, 0x44, 0x7f, 0x0d, 0x0a, 0x36, 0x80, 0x53, 0x53, 0x48,
|
|
0x2e, 0x4e, 0x45, 0x54, 0x20, 0x32, 0x30, 0x32, 0x30, 0x20, 0xf6, 0x7a, 0x32, 0x7f, 0x1f, 0x7e
|
|
};
|
|
var expected = " 00000000 07 00 1F 65 20 62 09 44 7F 0D 0A 36 80 53 53 48 ...e b.D...6.SSH" +
|
|
Environment.NewLine +
|
|
" 00000010 2E 4E 45 54 20 32 30 32 30 20 F6 7A 32 7F 1F 7E .NET 2020 .z2..~";
|
|
|
|
var actual = PacketDump.Create(data, 2);
|
|
|
|
Assert.AreEqual(expected, actual);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Create_ByteArrayAndIndentLevel_DataIsMultipleOfLineWidth_IndentLevelZero()
|
|
{
|
|
var data = new byte[]
|
|
{
|
|
0x07, 0x00, 0x1f, 0x65, 0x20, 0x62, 0x09, 0x44, 0x7f, 0x0d, 0x0a, 0x36, 0x80, 0x53, 0x53, 0x48,
|
|
0x2e, 0x4e, 0x45, 0x54, 0x20, 0x32, 0x30, 0x32, 0x30, 0x20, 0xf6, 0x7a, 0x32, 0x7f, 0x1f, 0x7e
|
|
};
|
|
var expected = "00000000 07 00 1F 65 20 62 09 44 7F 0D 0A 36 80 53 53 48 ...e b.D...6.SSH" +
|
|
Environment.NewLine +
|
|
"00000010 2E 4E 45 54 20 32 30 32 30 20 F6 7A 32 7F 1F 7E .NET 2020 .z2..~";
|
|
|
|
var actual = PacketDump.Create(data, 0);
|
|
|
|
Assert.AreEqual(expected, actual);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Create_ByteArrayAndIndentLevel_DataIsLineWith()
|
|
{
|
|
var data = new byte[]
|
|
{
|
|
0x07, 0x00, 0x1f, 0x65, 0x20, 0x62, 0x09, 0x44, 0x7f, 0x0d, 0x0a, 0x36, 0x80, 0x53, 0x53, 0x48
|
|
};
|
|
var expected = " 00000000 07 00 1F 65 20 62 09 44 7F 0D 0A 36 80 53 53 48 ...e b.D...6.SSH";
|
|
|
|
var actual = PacketDump.Create(data, 2);
|
|
|
|
Assert.AreEqual(expected, actual);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Create_ByteArrayAndIndentLevel_DataIsLessThanLineWith()
|
|
{
|
|
var data = new byte[]
|
|
{
|
|
0x07, 0x00, 0x1f, 0x65, 0x20, 0x62, 0x09, 0x44, 0x7f, 0x0d, 0x0a, 0x36, 0x80, 0x53
|
|
};
|
|
var expected = " 00000000 07 00 1F 65 20 62 09 44 7F 0D 0A 36 80 53 ...e b.D...6.S";
|
|
|
|
var actual = PacketDump.Create(data, 2);
|
|
|
|
Assert.AreEqual(expected, actual);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Create_ByteArrayAndIndentLevel_DataIsGreaterThanLineWidthButLessThanMultipleOfLineWidth()
|
|
{
|
|
var data = new byte[]
|
|
{
|
|
0x07, 0x00, 0x1f, 0x65, 0x20, 0x62, 0x09, 0x44, 0x7f, 0x0d, 0x0a, 0x36, 0x80, 0x53, 0x53, 0x48,
|
|
0x2e, 0x4e, 0x45, 0x54
|
|
};
|
|
var expected = " 00000000 07 00 1F 65 20 62 09 44 7F 0D 0A 36 80 53 53 48 ...e b.D...6.SSH" +
|
|
Environment.NewLine +
|
|
" 00000010 2E 4E 45 54 .NET";
|
|
|
|
var actual = PacketDump.Create(data, 2);
|
|
|
|
Assert.AreEqual(expected, actual);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Create_ByteArrayAndIndentLevel_DataIsGreaterThanMultipleOfLineWidth()
|
|
{
|
|
var data = new byte[]
|
|
{
|
|
0x07, 0x00, 0x1f, 0x65, 0x20, 0x62, 0x09, 0x44, 0x7f, 0x0d, 0x0a, 0x36, 0x80, 0x53, 0x53, 0x48,
|
|
0x2e, 0x4e, 0x45, 0x54, 0x20, 0x32, 0x30, 0x32, 0x30, 0x20, 0xf6, 0x7a, 0x32, 0x7f, 0x1f, 0x7e,
|
|
0x78, 0x54, 0x00, 0x52
|
|
};
|
|
var expected = " 00000000 07 00 1F 65 20 62 09 44 7F 0D 0A 36 80 53 53 48 ...e b.D...6.SSH" +
|
|
Environment.NewLine +
|
|
" 00000010 2E 4E 45 54 20 32 30 32 30 20 F6 7A 32 7F 1F 7E .NET 2020 .z2..~" +
|
|
Environment.NewLine +
|
|
" 00000020 78 54 00 52 xT.R";
|
|
|
|
var actual = PacketDump.Create(data, 2);
|
|
|
|
Assert.AreEqual(expected, actual);
|
|
|
|
}
|
|
}
|
|
}
|