Skip to content

Implementation of a sftp mock server to use with ssh2-sftp-client

License

Notifications You must be signed in to change notification settings

MollardMichael/sftp-mock-server

Repository files navigation

sftp-mock-server

license codecov Build Status

This repository is aimed to provide you with the means to setup and interact with a small sftp server that you can use to run end to end tests in an application using ssh2-sftp-client or another node based sftp client. The package is mostly tested against ssh2-sftp-client.

You can check out the API reference here

Why should I use this library?

  • Written in typescript (fully typed) for seamless integration in typescript based applications and libraries
  • Will allow you to run e2e tests using your favorite test framework without the need to setup a real sftp server in your local and CI infrastructure

Use cases

Mostly e2e tests but you could also run the server as a standalone service in a dev cluster. Just know that the files will be kept in memory so try not to go overboard

Installation

Using NPM

npm install --save-dev @micham/sftp-mock-server

Using Yarn

yarn add -D @micham/sftp-mock-server

API

Usage

Create a new SFTP server

const mockServer = await createSftpMockServer({
  port: '9999',
  hostname: '127.0.0.1',
  debug: (msg: string) => logger.debug(msg),
});

Connect using a private key

const mockServer = await createSftpMockServer({
  port: '9999',
  hostname: '127.0.0.1',
  debug: (msg: string) => logger.debug(msg),
  users: {
    alice: {
      publicKey: clientPublicKey,
    },
  },
});

await data.client.connect({
  host: '127.0.0.1',
  port: 9999,
  username: 'test',
  privateKey: clientPrivateKey,
});

Write/Read a file to the SFTP server

import Client from 'ssh2-sftp-client';

const mockServer = await createSftpMockServer({
  port: '9999',
  hostname: '127.0.0.1',
  debug: (msg: string) => logger.debug(msg),
  users: {
    alice: {
      password: 'password',
      publicKey: clientPublicKey,
    },
  },
});

const client = new Client();
await client.connect({
  host: '127.0.0.1',
  port: 9999,
  username: 'test',
  password: 'test',
});

await client.put(Buffer.from('File content'), 'tmp/data.txt');
const content = await client.get('tmp/data.txt');

About

Implementation of a sftp mock server to use with ssh2-sftp-client

Resources

License

Stars

Watchers

Forks

Packages

No packages published