# fake-kms

> Setup a fake KMS server for testing purposes

Latest version **1.2.0** (published 2020-06-01) · 0 weekly downloads

## Install

```sh
npm install fake-kms
pnpm add fake-kms
yarn add fake-kms
bun add fake-kms
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.2.0 |
| Published | 2020-06-01 |
| First published | 2019-10-22 |
| Weekly downloads | 0 |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 20.3 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 3 |
| Author | Raynos |
| Maintainers | raynos |

## Links

- npm: https://www.npmjs.com/package/fake-kms
- Repository: https://github.com/Raynos/fake-kms
- Issues: https://github.com/Raynos/fake-kms/issues
- npm.io page: https://npm.io/package/fake-kms

## Recent versions

- 1.2.0 (latest) — 2020-06-01
- 1.1.0 — 2019-10-22

## README

# fake-kms

Setup a fake KMS server for testing purposes

## Example

```js
const AWS = require('aws-sdk')
const FakeKMS = require('fake-kms').FakeKMS

async function test() {
  const server = new FakeKMS({
    port: 0,
    encrypt: {
      'SK_LIVE': 'a secret text'
    }
  })

  await server.bootstrap()

  const secrets = server.getCiphers()

  const kms = new AWS.KMS({
    endpoint: `http://${sever.hostPort}`,
    sslEnabled: false
  })

  const data = await kms.decrypt({
    CiphertextBlob: secrets['SK_LIVE']
  })

  // Should be `a secret text`
  console.log('the text', data.Plaintext.toString())

  await server.close()
}

process.on('unhandledRejection', (err) => { throw err })
test()
```

## Features

Currently this `fake-kms` module only supports the `kms.decrypt()`
method. Aka it has enough of an implementation to support
calling `decrypt` on the `aws-sdk.KMS`.

The other functionality can be added in the future, as needed.

## Docs :

### `const server = new FakeKMS(opts)`

Creates a fake KMS server.

 - `opts.port` ; defaults to 0
 - `opts.encrypt` ; An object of key / value pairs that you
    want pre-created in the KMS.

### `await server.bootstrap()`

Starts the server.

After bootstrap returns you can read `server.hostPort` to get the
actual listening port of the server.

### `const secrets = server.getCiphers()`

This returns an object of key / value pairs for all the secrets
that have been encrypted in the KMS.

Each value is a valid CiphertextBlob as a base64 string that
can be passed to the `kms` library in `kms.decrypt()`

### `await server.close()`

Shuts down the server.

## install

```
% npm install fake-kms
```

## MIT Licensed

---
_Source: https://npm.io/package/fake-kms · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
