如何解决openpgp.decrypt 在 jest 上运行时返回空字符串
我有以下功能,我使用的是 TypeScript 和 OpenPGP JS 库
import * as openpgp from "openpgp";
export async function decryptMessage(
privateKeyArmored: string,passphrase: string,encrypted: string
) {
const {
keys: [privateKey]
} = await openpgp.key.readArmored(privateKeyArmored);
await privateKey.decrypt(passphrase);
const { data: decrypted } = await openpgp.decrypt({
message: await openpgp.message.readArmored(encrypted),privateKeys: [privateKey]
});
return decrypted;
}
还有我的单元测试:
import * as openpgp from "openpgp";
import { decryptMessage } from "../src/crypto";
const oldTextEncoder = global.TextEncoder;
const oldTextDecoder = global.TextDecoder;
describe("crypto",() => {
const passphrase = "test";
let privateKey: string;
let publicKey: string;
beforeAll(async () => {
const textEncoding = await import("text-encoding-utf-8");
global.TextEncoder = textEncoding.TextEncoder;
global.TextDecoder = textEncoding.TextDecoder;
const { privateKeyArmored,publicKeyArmored } = await openpgp.generateKey({
userIds: [{ name: "username" }],curve: "ed25519",passphrase
});
privateKey = privateKeyArmored;
publicKey = publicKeyArmored;
});
afterall(() => {
global.TextEncoder = oldTextEncoder;
global.TextDecoder = oldTextDecoder;
});
test("decrypt message",async () => {
const text = "test"
const { data: encrypted } = await openpgp.encrypt({
message: openpgp.message.fromText(text),publicKeys: (await openpgp.key.readArmored(publicKey)).keys,});
const result = await decryptMessage(privateKey,passphrase,encrypted);
expect(result).toBe(text);
});
});
在行 expect(result).toBe(text);
我收到一个空字符串并且我的测试失败
expect(received).toBe(expected) // Object.is equality
Expected: "test"
Received: ""
该函数在生产环境中有效,但在 jest
下运行没有警告,只返回一个空字符串。
如果我更改密码,我得到了一个异常,所以代码没问题,jest
环境下有什么东西。
我错过了什么吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。