Initial commit
This commit is contained in:
109
server/node_modules/ssh2/test/test-shell.js
generated
vendored
Normal file
109
server/node_modules/ssh2/test/test-shell.js
generated
vendored
Normal file
@@ -0,0 +1,109 @@
|
||||
'use strict';
|
||||
|
||||
const assert = require('assert');
|
||||
const { inspect } = require('util');
|
||||
|
||||
const {
|
||||
mustCall,
|
||||
mustCallAtLeast,
|
||||
setupSimple,
|
||||
} = require('./common.js');
|
||||
|
||||
const DEBUG = false;
|
||||
|
||||
const setup = setupSimple.bind(undefined, DEBUG);
|
||||
|
||||
{
|
||||
const { client, server } = setup('Simple shell()');
|
||||
|
||||
const OUTPUT = 'shell output!\n';
|
||||
|
||||
server.on('connection', mustCall((conn) => {
|
||||
conn.on('ready', mustCall(() => {
|
||||
conn.on('session', mustCall((accept, reject) => {
|
||||
const session = accept();
|
||||
session.on('pty', mustCall((accept, reject, info) => {
|
||||
accept();
|
||||
session.on('shell', mustCall((accept, reject) => {
|
||||
let input = '';
|
||||
const stream = accept();
|
||||
stream.write(OUTPUT);
|
||||
stream.on('data', mustCallAtLeast((data) => {
|
||||
input += data;
|
||||
if (input === 'exit\n') {
|
||||
stream.end();
|
||||
conn.end();
|
||||
}
|
||||
}));
|
||||
}));
|
||||
}));
|
||||
}));
|
||||
}));
|
||||
}));
|
||||
|
||||
client.on('ready', mustCall(() => {
|
||||
let output = '';
|
||||
client.on('close', mustCall(() => {
|
||||
assert(output === OUTPUT, `Wrong shell output: ${inspect(output)}`);
|
||||
})).shell(mustCall((err, stream) => {
|
||||
assert(!err, `Unexpected shell error: ${err}`);
|
||||
stream.write('exit\n');
|
||||
stream.on('data', mustCallAtLeast((d) => {
|
||||
output += d;
|
||||
})).on('close', mustCall(() => {}));
|
||||
}));
|
||||
}));
|
||||
}
|
||||
|
||||
{
|
||||
const { client, server } = setup('Shell with environment set');
|
||||
|
||||
const OUTPUT = 'shell output!\n';
|
||||
const clientEnv = { SSH2NODETEST: 'foo' };
|
||||
|
||||
server.on('connection', mustCall((conn) => {
|
||||
conn.on('ready', mustCall(() => {
|
||||
conn.on('session', mustCall((accept, reject) => {
|
||||
let pty = false;
|
||||
let env = false;
|
||||
accept().on('pty', mustCall((accept, reject, info) => {
|
||||
accept();
|
||||
pty = true;
|
||||
})).on('env', mustCall((accept, reject, info) => {
|
||||
accept && accept();
|
||||
env = true;
|
||||
assert(info.key === Object.keys(clientEnv)[0],
|
||||
`Wrong env key: ${inspect(info.key)}`);
|
||||
assert(info.val === Object.values(clientEnv)[0],
|
||||
`Wrong env value: ${inspect(info.val)}`);
|
||||
})).on('shell', mustCall((accept, reject) => {
|
||||
assert(pty, 'Expected pty before shell');
|
||||
assert(env, 'Expected env before shell');
|
||||
let input = '';
|
||||
const stream = accept();
|
||||
stream.write(OUTPUT);
|
||||
stream.on('data', mustCallAtLeast((data) => {
|
||||
input += data;
|
||||
if (input === 'exit\n') {
|
||||
stream.end();
|
||||
conn.end();
|
||||
}
|
||||
}));
|
||||
}));
|
||||
}));
|
||||
}));
|
||||
}));
|
||||
|
||||
client.on('ready', mustCall(() => {
|
||||
let output = '';
|
||||
client.on('close', mustCall(() => {
|
||||
assert(output === OUTPUT, `Wrong shell output: ${inspect(output)}`);
|
||||
})).shell({ env: clientEnv }, mustCall((err, stream) => {
|
||||
assert(!err, `Unexpected shell error: ${err}`);
|
||||
stream.write('exit\n');
|
||||
stream.on('data', mustCallAtLeast((d) => {
|
||||
output += d;
|
||||
})).on('close', mustCall(() => {}));
|
||||
}));
|
||||
}));
|
||||
}
|
||||
Reference in New Issue
Block a user