aws KMS насмешливый node js - PullRequest
0 голосов
/ 12 марта 2020

Я пытаюсь смоделировать KMS в node js, используя aws sdk mock, но для меня это совсем не издевательство. Он вызывает настоящий KMS и получает зашифрованный ключ.

const AWS = require('aws-sdk-mock');
const params = {
    CiphertextBlob: Buffer.from(someEncryptedKey, 'base64')
};
AWS.mock('KMS', 'decrypt', function (params, callback) {
    callback(null, new Buffer('116')[37, 80, 68, 56, 78, 87]);
});

Я не уверен, что не так в моем коде. Я не смог найти хороших примеров издевательства над KMS. Я могу попробовать Sinon, но я не хочу, потому что это в идеале должно сделать магию c насмешки. Любая помощь будет оценена.

1 Ответ

0 голосов
/ 16 марта 2020

Здесь нет ничего плохого в тесте. Проблема заключается в том, что когда вы пытаетесь имитировать, и ваша версия API глобально объявлена ​​в вашем коде, вы видите эту проблему.

Я только что переместил объявление версии в фактический код внутри функции. У меня нет ответа, почему это происходит, но после перемещения версии API внутри функции заработал mocking.

Мне никогда не нравилось менять код для модульного теста, но с AWS SDK mock мне пришлось это сделать .

const encryptDecrypt = asyn c key => {

// это должно быть внутри функции //, если это объявлено глобально, и вы пытаетесь написать для него модульный тест, никогда не работает. const kms = new AWS .KMS ({apiVersion: '2014-11-01'});

// шифровать

// decrypr};

...