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
ForceCommand
to 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