SftpExtendedReplyResponseTest.cs 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. using System;
  2. using Microsoft.VisualStudio.TestTools.UnitTesting;
  3. using Renci.SshNet.Common;
  4. using Renci.SshNet.Sftp;
  5. using Renci.SshNet.Sftp.Responses;
  6. namespace Renci.SshNet.Tests.Classes.Sftp.Responses
  7. {
  8. [TestClass]
  9. public class SftpExtendedReplyResponseTest
  10. {
  11. private Random _random;
  12. private uint _protocolVersion;
  13. private uint _responseId;
  14. [TestInitialize]
  15. public void Init()
  16. {
  17. _random = new Random();
  18. _protocolVersion = (uint)_random.Next(0, int.MaxValue);
  19. _responseId = (uint)_random.Next(0, int.MaxValue);
  20. }
  21. [TestMethod]
  22. public void Constructor()
  23. {
  24. var target = new SftpExtendedReplyResponse(_protocolVersion);
  25. Assert.AreEqual(_protocolVersion, target.ProtocolVersion);
  26. Assert.AreEqual((uint)0, target.ResponseId);
  27. Assert.AreEqual(SftpMessageTypes.ExtendedReply, target.SftpMessageType);
  28. }
  29. [TestMethod]
  30. public void Load()
  31. {
  32. var target = new SftpExtendedReplyResponse(_protocolVersion);
  33. var sshDataStream = new SshDataStream(4);
  34. sshDataStream.Write(_responseId);
  35. target.Load(sshDataStream.ToArray());
  36. Assert.AreEqual(_protocolVersion, target.ProtocolVersion);
  37. Assert.AreEqual(_responseId, target.ResponseId);
  38. Assert.AreEqual(SftpMessageTypes.ExtendedReply, target.SftpMessageType);
  39. }
  40. [TestMethod]
  41. public void GetReply_StatVfsReplyInfo()
  42. {
  43. var bsize = (ulong)_random.Next(0, int.MaxValue);
  44. var frsize = (ulong)_random.Next(0, int.MaxValue);
  45. var blocks = (ulong)_random.Next(0, int.MaxValue);
  46. var bfree = (ulong)_random.Next(0, int.MaxValue);
  47. var bavail = (ulong)_random.Next(0, int.MaxValue);
  48. var files = (ulong)_random.Next(0, int.MaxValue);
  49. var ffree = (ulong)_random.Next(0, int.MaxValue);
  50. var favail = (ulong)_random.Next(0, int.MaxValue);
  51. var sid = (ulong)_random.Next(0, int.MaxValue);
  52. var namemax = (ulong)_random.Next(0, int.MaxValue);
  53. var sshDataStream = new SshDataStream(4 + 1 + 4 + 88)
  54. {
  55. Position = 4 // skip 4 bytes for SSH packet length
  56. };
  57. sshDataStream.WriteByte((byte)SftpMessageTypes.Attrs);
  58. sshDataStream.Write(_responseId);
  59. sshDataStream.Write(bsize);
  60. sshDataStream.Write(frsize);
  61. sshDataStream.Write(blocks);
  62. sshDataStream.Write(bfree);
  63. sshDataStream.Write(bavail);
  64. sshDataStream.Write(files);
  65. sshDataStream.Write(ffree);
  66. sshDataStream.Write(favail);
  67. sshDataStream.Write(sid);
  68. sshDataStream.Write((ulong)0x2);
  69. sshDataStream.Write(namemax);
  70. var sshData = sshDataStream.ToArray();
  71. var target = new SftpExtendedReplyResponse(_protocolVersion);
  72. target.Load(sshData, 5, sshData.Length - 5);
  73. var reply = target.GetReply<StatVfsReplyInfo>();
  74. Assert.IsNotNull(reply);
  75. var information = reply.Information;
  76. Assert.IsNotNull(information);
  77. Assert.AreEqual(bavail, information.AvailableBlocks);
  78. Assert.AreEqual(favail, information.AvailableNodes);
  79. Assert.AreEqual(frsize, information.BlockSize);
  80. Assert.AreEqual(bsize, information.FileSystemBlockSize);
  81. Assert.AreEqual(bfree, information.FreeBlocks);
  82. Assert.AreEqual(ffree, information.FreeNodes);
  83. Assert.IsFalse(information.IsReadOnly);
  84. Assert.AreEqual(namemax, information.MaxNameLenght);
  85. Assert.AreEqual(sid, information.Sid);
  86. Assert.IsFalse(information.SupportsSetUid);
  87. Assert.AreEqual(blocks, information.TotalBlocks);
  88. Assert.AreEqual(files, information.TotalNodes);
  89. }
  90. }
  91. }