问题描述
我正在使用 Jest 来测试我的一个使用 OpenPGP.js https://openpgpjs.org/(最新版本,4.10.9)的小函数。
我看到了一些使用库 text-encoding-utf-8
的解决方法,并且我在测试中这样做了,但不幸的是,错误仍然存在。
即使有:
const textEncoding = await import("text-encoding-utf-8")
global.TextEncoder = textEncoding.TextEncoder
global.TextDecoder = textEncoding.TextDecoder
我的功能:
import * as openpgp from "openpgp"
export async function decryptMessage(privateKeyArmored,passphrase,message) {
const {
keys: [privateKey],} = await openpgp.key.readArmored(privateKeyArmored)
await privateKey.decrypt(passphrase)
const { data } = await openpgp.decrypt({
message: await openpgp.message.readArmored(message),privateKeys: [privateKey],})
return data
}
这是我的测试
import * as openpgp from "openpgp"
import { decryptMessage } from "../src/crypto"
let privateKey
let publicKey
const passphrase = "password"
const oldTextEncoder = global.TextEncoder
const oldTextDecoder = global.TextDecoder
describe("crypto test suite",() => {
beforeAll(async () => {
// workaround to openpgp works with jest
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",})
privateKey = privateKeyArmored
publicKey = publicKeyArmored
})
afterall(() => {
global.TextEncoder = oldTextEncoder
global.TextDecoder = oldTextDecoder
})
test("decrypt message",async () => {
const text = "test"
const { data } = await openpgp.encrypt({
message: openpgp.message.fromText(text),publicKeys: (await openpgp.key.readArmored(publicKey)).keys,})
const result = decryptMessage(privateKey,data)
expect(result).toBe(text)
})
})
当我跑步时,我得到:
(node:10804) UnhandledPromiseRejectionWarning: Error: concatUint8Array: Data must be in the form of a Uint8Array
(node:10804) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block,or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection,use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 25)
有什么线索吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)