Test-sshd(nodejs) allows you to start a local sshd daemon that you can test against.
Because there is nothing like the real thing
Way too many code that uses ssh/sftp isn't tested because mocking and stubbing sshd servers is hard.
It starts a sshd with the correct arguments so that:
- you can login as the current user (process.env.user)
- using the test key provided (in config/keys/id_rsa)
- on a port you specify
- (mode: echo ) if login succeeds it uses
ForceCommandto echo the command in$SSH_ORIGINAL_COMMAND - (mode: exec ) if login succeeds it uses executes the command
- (mode: transfer ) if login succeeds it allows for sftp
- it does NOT do password authentication (yet)
var TestSshd = require('test-sshd');
var sshd = TestSshd({port: 4000};
var connectParams = sshd.connectParams();
sshd.on('ready', function() {
// When login is working
console.log('ready to login');
});
sshd.on('error', function(error) {
// When sshd has an error
});
sshd.on('stdout', function(data) {
// receive sshd stdout
});
sshd.on('stderr', function(data) {
// receive sshd stderr
});
sshd.on('exit', function() {
// when daemon exit
});
sshd.start();
// Make sure to stop the sshd stop when the process exits
// This prevents orphaned processes
process.on('exit', function() {
if(sshd.status === 'started') {
sshd.stop();
}
});
status: either 'started' or 'stopped'settings: contains params used to initialize the sshd
port: integer defdults to 4000mode: string default toecho(other options areexec,transfer)
ready: when the sshd is succesfully listeningexit: when the sshd exitserror: when an error occurs
This is a hash with;
host: string host to connect tousername: string username to connect withport: integer port it listens onprivateKey: string key that can be used to connect
MIT