mirror of
https://github.com/sshnet/SSH.NET.git
synced 2026-09-10 17:25:51 +00:00
41053cb80f
* Initial plan * Refactor collection assertions to use CollectionAssert.AreEqual Replace Assert.IsTrue(xxx.IsEqualTo(yyy)) and Assert.IsTrue(xxx.SequenceEqual(yyy)) with CollectionAssert.AreEqual(expected, actual) across 55 test files Co-authored-by: Rob-Hague <5132141+Rob-Hague@users.noreply.github.com> * Fix argument order in CollectionAssert.AreEqual and remove unnecessary using directives - Fixed argument order in KeyExchangeDhGroupExchangeReplyTest.cs (expected first, actual second) - Fixed argument order in KeyExchangeInitMessageTest.cs (expected first, actual second) - Removed unnecessary 'using System.Linq' directives from all affected test files Co-authored-by: Rob-Hague <5132141+Rob-Hague@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Rob-Hague <5132141+Rob-Hague@users.noreply.github.com> Co-authored-by: Rob Hague <rob.hague00@gmail.com>
152 lines
5.0 KiB
C#
152 lines
5.0 KiB
C#
using System;
|
|
using System.Linq;
|
|
using System.Security.Cryptography;
|
|
|
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
|
|
|
using Renci.SshNet.Common;
|
|
using Renci.SshNet.Messages.Connection;
|
|
using Renci.SshNet.Tests.Common;
|
|
|
|
namespace Renci.SshNet.Tests.Classes.Messages.Connection
|
|
{
|
|
/// <summary>
|
|
/// This is a test class for ChannelDataMessageTest and is intended
|
|
/// to contain all ChannelDataMessageTest Unit Tests
|
|
/// </summary>
|
|
[TestClass]
|
|
public class ChannelDataMessageTest : TestBase
|
|
{
|
|
[TestMethod]
|
|
public void DefaultConstructor()
|
|
{
|
|
var target = new ChannelDataMessage();
|
|
|
|
Assert.IsNull(target.Data);
|
|
Assert.AreEqual(0, target.Offset);
|
|
Assert.AreEqual(0, target.Size);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Constructor_LocalChannelNumberAndData()
|
|
{
|
|
var random = new Random();
|
|
|
|
var localChannelNumber = (uint)random.Next(0, int.MaxValue);
|
|
var data = new byte[3];
|
|
|
|
var target = new ChannelDataMessage(localChannelNumber, data);
|
|
|
|
Assert.AreSame(data, target.Data);
|
|
Assert.AreEqual(0, target.Offset);
|
|
Assert.AreEqual(data.Length, target.Size);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Constructor_LocalChannelNumberAndData_ShouldThrowArgumentNullExceptionWhenDataIsNull()
|
|
{
|
|
var localChannelNumber = (uint)new Random().Next(0, int.MaxValue);
|
|
const byte[] data = null;
|
|
|
|
try
|
|
{
|
|
new ChannelDataMessage(localChannelNumber, data);
|
|
Assert.Fail();
|
|
}
|
|
catch (ArgumentNullException ex)
|
|
{
|
|
Assert.IsNull(ex.InnerException);
|
|
Assert.AreEqual("data", ex.ParamName);
|
|
}
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Constructor_LocalChannelNumberAndDataAndOffsetAndSize()
|
|
{
|
|
var localChannelNumber = (uint)new Random().Next(0, int.MaxValue);
|
|
var data = new byte[4];
|
|
const int offset = 2;
|
|
const int size = 1;
|
|
|
|
var target = new ChannelDataMessage(localChannelNumber, data, offset, size);
|
|
|
|
Assert.AreSame(data, target.Data);
|
|
Assert.AreEqual(offset, target.Offset);
|
|
Assert.AreEqual(size, target.Size);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Constructor_LocalChannelNumberAndDataAndOffsetAndSize_ShouldThrowArgumentNullExceptionWhenDataIsNull()
|
|
{
|
|
var localChannelNumber = (uint)new Random().Next(0, int.MaxValue);
|
|
const byte[] data = null;
|
|
const int offset = 0;
|
|
const int size = 0;
|
|
|
|
try
|
|
{
|
|
new ChannelDataMessage(localChannelNumber, data, offset, size);
|
|
Assert.Fail();
|
|
}
|
|
catch (ArgumentNullException ex)
|
|
{
|
|
Assert.IsNull(ex.InnerException);
|
|
Assert.AreEqual("data", ex.ParamName);
|
|
}
|
|
}
|
|
|
|
[TestMethod]
|
|
public void GetBytes()
|
|
{
|
|
var random = new Random();
|
|
|
|
var localChannelNumber = (uint)random.Next(0, int.MaxValue);
|
|
var data = RandomNumberGenerator.GetBytes(random.Next(10, 20));
|
|
var offset = random.Next(0, data.Length - 1);
|
|
var size = random.Next(0, data.Length - offset);
|
|
|
|
var target = new ChannelDataMessage(localChannelNumber, data, offset, size);
|
|
|
|
var bytes = target.GetBytes();
|
|
|
|
var expectedBytesLength = 1; // Type
|
|
expectedBytesLength += 4; // LocalChannelNumber
|
|
expectedBytesLength += 4; // Data length
|
|
expectedBytesLength += size; // Data
|
|
|
|
Assert.HasCount(expectedBytesLength, bytes);
|
|
|
|
var sshDataStream = new SshDataStream(bytes);
|
|
|
|
Assert.AreEqual(target.MessageNumber, sshDataStream.ReadByte());
|
|
Assert.AreEqual(localChannelNumber, sshDataStream.ReadUInt32());
|
|
Assert.AreEqual((uint)size, sshDataStream.ReadUInt32());
|
|
|
|
var actualData = new byte[size];
|
|
_ = sshDataStream.Read(actualData, 0, size);
|
|
CollectionAssert.AreEqual(data.Take(offset, size), actualData);
|
|
|
|
Assert.IsTrue(sshDataStream.IsEndOfData);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Load()
|
|
{
|
|
var random = new Random();
|
|
|
|
var localChannelNumber = (uint)random.Next(0, int.MaxValue);
|
|
var data = RandomNumberGenerator.GetBytes(random.Next(10, 20));
|
|
|
|
var offset = random.Next(0, data.Length - 1);
|
|
var size = random.Next(0, data.Length - offset);
|
|
var channelDataMessage = new ChannelDataMessage(localChannelNumber, data, offset, size);
|
|
var bytes = channelDataMessage.GetBytes();
|
|
var target = new ChannelDataMessage();
|
|
|
|
target.Load(bytes, 1, bytes.Length - 1); // skip message type
|
|
|
|
CollectionAssert.AreEqual(data.Take(offset, size), target.Data.Take(target.Offset, target.Size));
|
|
}
|
|
}
|
|
}
|