Package detail

ssh2-they

adaltas22MIT2.2.1

Extends Mocha with the function they to transparently run tests in local and ssh mode

ssh, ssh2, sftp, secure

readme

Node.js ssh2-they

Extends [Mocha][mocha] with a new they function replacing it. The goal is to execute the same test in multiple environments. This package was originally written to test ssh2-fs, ssh2-exec and Nikita. For example, in those packages, each test is run twice: the first time on a local environment and the second time over SSH.

If no environment is provided, the default behaviour of this package is to attempt to open a passwordless ssh connection on localhost with the current running user. Thus, it expects correct deployment of your ssh public key inside your own authorized_key file.

Additionally, you can call the configure function with multiple environment parameters. Refer to the "ssh2-connect" and "ssh2" packages for a complete list of supported options.

Installation

This is OSS and licensed under the new BSD license.

npm install ssh2-fs

Examples

The below examples found inspiration in the exists test of the ssh2-fs module.

This test will connect to localhost with the current working user:

const should = require('should')
const fs = require('ssh2-fs')
const they = require('ssh2-they')

describe('exists', function(){
  they('on file', function({ssh}, next){
    fs.exists( ssh, "#{__filename}", function(err, exists){
      exists.should.be.true()
      next()
    })
  })
})

This test will attempt a remote connection using the root user:

const should = require('should')
const fs = require('ssh2-fs')
const they = require('ssh2-they').configure([
  null,
  {
    debug: true,
    ssh: null
  }, {
    debug: true,
    ssh: {
      host: 'localhost',
      port: 22,
      username: 'root',
      privateKey: require('fs').readFileSync('/here/is/my/key')
    }
  }
])

describe('exists', function(){
  they('on file', function({debug, ssh}, next){
    fs.exists( ssh, "#{__filename}", function(err, exists){
      exists.should.be.true()
      next()
    })
  })
})

Travis integration

You can make it work with Travis by adding the following lines to your ".travis.yml" file:

before_script:

  • "ssh-keygen -t rsa -f ~/.ssh/id_rsa -N ''"
  • "cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys"

Contributors

changelog

Changelog

Version 2.2.1

  • feat: re-introduce callback support

Version 2.2.0

  • package: use ssh2-connect async API

Version 2.1.0

  • promise: fix support for returned objects
  • configure: support arrays and splats
  • package: rename coffee command to build
  • package: add coffee lint

Version 2.0.4

  • package: update adaltas url

Version 2.0.3

  • readme: typos

Version 2.0.2

  • config: clone properties
  • ssh: isolate in its own property
  • api: dissociate ssh from environments

Version 2.0.1

  • project: remove console.log

Version 2.0.0

  • api: handle multiple environments
  • project: MIT license
  • project: remove package lock

Version 1.3.1

  • project: latest dependencies
  • project: ignore yarn lock and log files

Version 1.3.0

  • configure: new function to handle user configuration

Version 1.2.1

  • dependencies: ssh2-connect version 2.0.2

Version 1.2.0

  • package: npm release commands
  • package: latest depedencies
  • package: upgrade to CoffeeScript 2

Version 1.0.4

  • src: handle non promise return in promise remote

Version 1.0.3

  • mocha: fix regression by passing context

Version 1.0.2

  • package: move ownership
  • package: latest dependencies

Version 1.0.1

  • package: latest dependencies

Version 1.0.0

  • catch connect err in only and skip