| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- using Renci.SshNet.Common;
- using Renci.SshNet.IntegrationTests.Common;
- namespace Renci.SshNet.IntegrationTests
- {
- [TestClass]
- public class SshTests_TTYDisabled : TestBase
- {
- private IConnectionInfoFactory _connectionInfoFactory;
- private IConnectionInfoFactory _adminConnectionInfoFactory;
- private RemoteSshdConfig _remoteSshdConfig;
- [TestInitialize]
- public void SetUp()
- {
- _connectionInfoFactory = new LinuxVMConnectionFactory(SshServerHostName, SshServerPort);
- _adminConnectionInfoFactory = new LinuxAdminConnectionFactory(SshServerHostName, SshServerPort);
- _remoteSshdConfig = new RemoteSshd(_adminConnectionInfoFactory).OpenConfig();
- _remoteSshdConfig.AllowTcpForwarding()
- .PermitTTY(false)
- .PrintMotd(false)
- .Update()
- .Restart();
- }
- [TestCleanup]
- public void TearDown()
- {
- _remoteSshdConfig?.Reset();
- }
- [TestMethod]
- public void Ssh_CreateShellStream()
- {
- using (var client = new SshClient(_connectionInfoFactory.Create()))
- {
- client.Connect();
- try
- {
- client.CreateShellStream("xterm", 80, 24, 800, 600, 1024, null);
- Assert.Fail("Should not be able to create ShellStream with pseudo-terminal settings when PermitTTY is no at server side.");
- }
- catch (SshException ex)
- {
- Assert.AreEqual("The pseudo-terminal request was not accepted by the server. Consult the server log for more information.", ex.Message);
- }
- }
- }
- [TestMethod]
- public void Ssh_CreateShellStreamNoTerminal()
- {
- using (var client = new SshClient(_connectionInfoFactory.Create()))
- {
- client.Connect();
- using (var shellStream = client.CreateShellStreamNoTerminal(bufferSize: 1024))
- {
- var foo = new string('a', 90);
- shellStream.WriteLine($"echo {foo}");
- var line = shellStream.ReadLine(TimeSpan.FromSeconds(1));
- Assert.IsNotNull(line);
- Assert.IsTrue(line.EndsWith(foo), line);
- }
- }
- }
- [TestMethod]
- public void Ssh_CreateShell()
- {
- using (var client = new SshClient(_connectionInfoFactory.Create()))
- {
- client.Connect();
- using (var input = new MemoryStream())
- using (var output = new MemoryStream())
- using (var extOutput = new MemoryStream())
- {
- var shell = client.CreateShell(input, output, extOutput, "xterm", 80, 24, 800, 600, null, 1024);
- try
- {
- shell.Start();
- Assert.Fail("Should not be able to create ShellStream with terminal settings when PermitTTY is no at server side.");
- }
- catch (SshException ex)
- {
- Assert.AreEqual("The pseudo-terminal request was not accepted by the server. Consult the server log for more information.", ex.Message);
- }
- }
- }
- }
- [TestMethod]
- public void Ssh_CreateShellNoTerminal()
- {
- using (var client = new SshClient(_connectionInfoFactory.Create()))
- {
- client.Connect();
- using (var input = new MemoryStream())
- using (var output = new MemoryStream())
- using (var extOutput = new MemoryStream())
- {
- var shell = client.CreateShellNoTerminal(input, output, extOutput, 1024);
- shell.Start();
- var inputWriter = new StreamWriter(input, Encoding.ASCII, 1024);
- var foo = new string('a', 90);
- inputWriter.WriteLine($"echo {foo}");
- inputWriter.Flush();
- input.Position = 0;
- Thread.Sleep(1000);
- output.Position = 0;
- var outputReader = new StreamReader(output, Encoding.ASCII, false, 1024);
- var outputString = outputReader.ReadLine();
- Assert.IsNotNull(outputString);
- Assert.IsTrue(outputString.EndsWith(foo), outputString);
- shell.Stop();
- }
- }
- }
- }
- }
|