SftpExtendedReplyResponseTest.cs 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  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. #if TUNING
  34. var sshDataStream = new SshDataStream(4 + 1 + 4);
  35. sshDataStream.Position = 4; // skip 4 bytes for SSH packet length
  36. #else
  37. var sshDataStream = new SshDataStream(1 + 4);
  38. #endif
  39. sshDataStream.WriteByte((byte) SftpMessageTypes.ExtendedReply);
  40. sshDataStream.Write(_responseId);
  41. target.Load(sshDataStream.ToArray());
  42. Assert.AreEqual(_protocolVersion, target.ProtocolVersion);
  43. Assert.AreEqual(_responseId, target.ResponseId);
  44. Assert.AreEqual(SftpMessageTypes.ExtendedReply, target.SftpMessageType);
  45. }
  46. [TestMethod]
  47. public void GetReply_StatVfsReplyInfo()
  48. {
  49. var bsize = (ulong) _random.Next(0, int.MaxValue);
  50. var frsize = (ulong) _random.Next(0, int.MaxValue);
  51. var blocks = (ulong) _random.Next(0, int.MaxValue);
  52. var bfree = (ulong) _random.Next(0, int.MaxValue);
  53. var bavail = (ulong) _random.Next(0, int.MaxValue);
  54. var files = (ulong) _random.Next(0, int.MaxValue);
  55. var ffree = (ulong) _random.Next(0, int.MaxValue);
  56. var favail = (ulong) _random.Next(0, int.MaxValue);
  57. var sid = (ulong) _random.Next(0, int.MaxValue);
  58. var namemax = (ulong) _random.Next(0, int.MaxValue);
  59. #if TUNING
  60. var sshDataStream = new SshDataStream(4 + 1 + 4 + 88);
  61. sshDataStream.Position = 4; // skip 4 bytes for SSH packet length
  62. #else
  63. var sshDataStream = new SshDataStream(1 + 4 + 88);
  64. #endif
  65. sshDataStream.WriteByte((byte) SftpMessageTypes.Attrs);
  66. sshDataStream.Write(_responseId);
  67. sshDataStream.Write(bsize);
  68. sshDataStream.Write(frsize);
  69. sshDataStream.Write(blocks);
  70. sshDataStream.Write(bfree);
  71. sshDataStream.Write(bavail);
  72. sshDataStream.Write(files);
  73. sshDataStream.Write(ffree);
  74. sshDataStream.Write(favail);
  75. sshDataStream.Write(sid);
  76. sshDataStream.Write((ulong) 0x2);
  77. sshDataStream.Write(namemax);
  78. var target = new SftpExtendedReplyResponse(_protocolVersion);
  79. target.Load(sshDataStream.ToArray());
  80. var reply = target.GetReply<StatVfsReplyInfo>();
  81. Assert.IsNotNull(reply);
  82. var information = reply.Information;
  83. Assert.IsNotNull(information);
  84. Assert.AreEqual(bavail, information.AvailableBlocks);
  85. Assert.AreEqual(favail, information.AvailableNodes);
  86. Assert.AreEqual(frsize, information.BlockSize);
  87. Assert.AreEqual(bsize, information.FileSystemBlockSize);
  88. Assert.AreEqual(bfree, information.FreeBlocks);
  89. Assert.AreEqual(ffree, information.FreeNodes);
  90. Assert.IsFalse(information.IsReadOnly);
  91. Assert.AreEqual(namemax, information.MaxNameLenght);
  92. Assert.AreEqual(sid, information.Sid);
  93. Assert.IsFalse(information.SupportsSetUid);
  94. Assert.AreEqual(blocks, information.TotalBlocks);
  95. Assert.AreEqual(files, information.TotalNodes);
  96. }
  97. }
  98. }