| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- using System;
- using System.Collections.Generic;
- using System.Globalization;
- using System.Text;
- using Microsoft.VisualStudio.TestTools.UnitTesting;
- using Renci.SshNet.Common;
- using Renci.SshNet.Messages.Connection;
- namespace Renci.SshNet.Tests.Classes.Messages.Connection
- {
- /// <summary>
- /// Represents "pty-req" type channel request information
- /// </summary>
- [TestClass]
- public class PseudoTerminalRequestInfoTest
- {
- private string _environmentVariable;
- private uint _columns;
- private uint _rows;
- private uint _width;
- private uint _height;
- private IDictionary<TerminalModes, uint> _terminalModeValues;
- private byte[] _environmentVariableBytes;
- [TestInitialize]
- public void Init()
- {
- var random = new Random();
- _environmentVariable = random.Next().ToString(CultureInfo.InvariantCulture);
- _environmentVariableBytes = Encoding.UTF8.GetBytes(_environmentVariable);
- _columns = (uint)random.Next(0, int.MaxValue);
- _rows = (uint)random.Next(0, int.MaxValue);
- _width = (uint)random.Next(0, int.MaxValue);
- _height = (uint)random.Next(0, int.MaxValue);
- _terminalModeValues = new Dictionary<TerminalModes, uint>
- {
- {TerminalModes.CS8, 433},
- {TerminalModes.ECHO, 566}
- };
- }
- [TestMethod]
- public void GetBytes()
- {
- var target = new PseudoTerminalRequestInfo(_environmentVariable, _columns, _rows, _width, _height, _terminalModeValues);
- var bytes = target.GetBytes();
- var expectedBytesLength = 1; // WantReply
- expectedBytesLength += 4; // EnvironmentVariable length
- expectedBytesLength += _environmentVariableBytes.Length; // EnvironmentVariable
- expectedBytesLength += 4; // Columns
- expectedBytesLength += 4; // Rows
- expectedBytesLength += 4; // PixelWidth
- expectedBytesLength += 4; // PixelHeight
- expectedBytesLength += 4; // Length of "encoded terminal modes"
- expectedBytesLength += (_terminalModeValues.Count * (1 + 4)) + 1; // encoded terminal modes
- Assert.AreEqual(expectedBytesLength, bytes.Length);
- var sshDataStream = new SshDataStream(bytes);
- Assert.AreEqual(1, sshDataStream.ReadByte()); // WantReply
- Assert.AreEqual(_environmentVariable, sshDataStream.ReadString(Encoding.UTF8));
- Assert.AreEqual(_columns, sshDataStream.ReadUInt32());
- Assert.AreEqual(_rows, sshDataStream.ReadUInt32());
- Assert.AreEqual(_width, sshDataStream.ReadUInt32());
- Assert.AreEqual(_height, sshDataStream.ReadUInt32());
- Assert.AreEqual((uint)((_terminalModeValues.Count * (1 + 4)) + 1), sshDataStream.ReadUInt32());
- Assert.AreEqual((int)TerminalModes.CS8, sshDataStream.ReadByte());
- Assert.AreEqual(_terminalModeValues[TerminalModes.CS8], sshDataStream.ReadUInt32());
- Assert.AreEqual((int)TerminalModes.ECHO, sshDataStream.ReadByte());
- Assert.AreEqual(_terminalModeValues[TerminalModes.ECHO], sshDataStream.ReadUInt32());
- Assert.AreEqual((int)TerminalModes.TTY_OP_END, sshDataStream.ReadByte());
- Assert.IsTrue(sshDataStream.IsEndOfData);
- }
- [TestMethod]
- public void GetBytes_TerminalModeValues_Null()
- {
- var target = new PseudoTerminalRequestInfo(_environmentVariable, _columns, _rows, _width, _height, null);
- var bytes = target.GetBytes();
- var expectedBytesLength = 1; // WantReply
- expectedBytesLength += 4; // EnvironmentVariable length
- expectedBytesLength += _environmentVariableBytes.Length; // EnvironmentVariable
- expectedBytesLength += 4; // Columns
- expectedBytesLength += 4; // Rows
- expectedBytesLength += 4; // PixelWidth
- expectedBytesLength += 4; // PixelHeight
- expectedBytesLength += 4; // Length of "encoded terminal modes"
- Assert.AreEqual(expectedBytesLength, bytes.Length);
- var sshDataStream = new SshDataStream(bytes);
- Assert.AreEqual(1, sshDataStream.ReadByte()); // WantReply
- Assert.AreEqual(_environmentVariable, sshDataStream.ReadString(Encoding.UTF8));
- Assert.AreEqual(_columns, sshDataStream.ReadUInt32());
- Assert.AreEqual(_rows, sshDataStream.ReadUInt32());
- Assert.AreEqual(_width, sshDataStream.ReadUInt32());
- Assert.AreEqual(_height, sshDataStream.ReadUInt32());
- Assert.AreEqual((uint)0, sshDataStream.ReadUInt32());
- Assert.IsTrue(sshDataStream.IsEndOfData);
- }
- [TestMethod]
- public void GetBytes_TerminalModeValues_Empty()
- {
- var target = new PseudoTerminalRequestInfo(_environmentVariable,
- _columns,
- _rows,
- _width,
- _height,
- new Dictionary<TerminalModes, uint>());
- var bytes = target.GetBytes();
- var expectedBytesLength = 1; // WantReply
- expectedBytesLength += 4; // EnvironmentVariable length
- expectedBytesLength += _environmentVariableBytes.Length; // EnvironmentVariable
- expectedBytesLength += 4; // Columns
- expectedBytesLength += 4; // Rows
- expectedBytesLength += 4; // PixelWidth
- expectedBytesLength += 4; // PixelHeight
- expectedBytesLength += 4; // Length of "encoded terminal modes"
- Assert.AreEqual(expectedBytesLength, bytes.Length);
- var sshDataStream = new SshDataStream(bytes);
- Assert.AreEqual(1, sshDataStream.ReadByte()); // WantReply
- Assert.AreEqual(_environmentVariable, sshDataStream.ReadString(Encoding.UTF8));
- Assert.AreEqual(_columns, sshDataStream.ReadUInt32());
- Assert.AreEqual(_rows, sshDataStream.ReadUInt32());
- Assert.AreEqual(_width, sshDataStream.ReadUInt32());
- Assert.AreEqual(_height, sshDataStream.ReadUInt32());
- Assert.AreEqual((uint)0, sshDataStream.ReadUInt32());
- Assert.IsTrue(sshDataStream.IsEndOfData);
- }
- [TestMethod]
- public void DefaultCtor()
- {
- var ptyReq = new PseudoTerminalRequestInfo();
- Assert.IsTrue(ptyReq.WantReply);
- Assert.AreEqual(uint.MinValue, ptyReq.Columns);
- Assert.IsNull(ptyReq.EnvironmentVariable);
- Assert.AreEqual("pty-req", ptyReq.RequestName);
- Assert.AreEqual(uint.MinValue, ptyReq.PixelHeight);
- Assert.AreEqual(uint.MinValue, ptyReq.PixelWidth);
- Assert.AreEqual(uint.MinValue, ptyReq.Rows);
- Assert.IsNull(ptyReq.TerminalModeValues);
- }
- [TestMethod]
- public void FullCtor()
- {
- var ptyReq = new PseudoTerminalRequestInfo(_environmentVariable, _columns, _rows, _width, _height, _terminalModeValues);
- Assert.IsTrue(ptyReq.WantReply);
- Assert.AreEqual(_columns, ptyReq.Columns);
- Assert.AreSame(_environmentVariable, ptyReq.EnvironmentVariable);
- Assert.AreEqual("pty-req", ptyReq.RequestName);
- Assert.AreEqual(_height, ptyReq.PixelHeight);
- Assert.AreEqual(_width, ptyReq.PixelWidth);
- Assert.AreEqual(_rows, ptyReq.Rows);
- Assert.AreSame(_terminalModeValues, ptyReq.TerminalModeValues);
- }
- }
- }
|