diff options
author | 2023-04-21 07:25:51 -0700 | |
---|---|---|
committer | 2023-04-21 07:25:51 -0700 | |
commit | dc55e11714ada5bbae823c218efe3d6c58fe30bb (patch) | |
tree | a1777a21d6af4b3bda8079f623868a85e240ebe9 /test/js/node/crypto/node-crypto.test.js | |
parent | 613bb4822ee8f4fbfd78aef391e2db8f07659a6f (diff) | |
download | bun-dc55e11714ada5bbae823c218efe3d6c58fe30bb.tar.gz bun-dc55e11714ada5bbae823c218efe3d6c58fe30bb.tar.zst bun-dc55e11714ada5bbae823c218efe3d6c58fe30bb.zip |
Keep the node crypt otest
Diffstat (limited to 'test/js/node/crypto/node-crypto.test.js')
-rw-r--r-- | test/js/node/crypto/node-crypto.test.js | 73 |
1 files changed, 67 insertions, 6 deletions
diff --git a/test/js/node/crypto/node-crypto.test.js b/test/js/node/crypto/node-crypto.test.js index 324a2790f..bf5414196 100644 --- a/test/js/node/crypto/node-crypto.test.js +++ b/test/js/node/crypto/node-crypto.test.js @@ -1,6 +1,7 @@ -import { it, expect } from "bun:test"; +import { it, expect, describe } from "bun:test"; import crypto from "node:crypto"; +import { PassThrough, Readable } from "node:stream"; it("crypto.randomBytes should return a Buffer", () => { expect(crypto.randomBytes(1) instanceof Buffer).toBe(true); @@ -8,12 +9,72 @@ it("crypto.randomBytes should return a Buffer", () => { }); // https://github.com/oven-sh/bun/issues/1839 -it("crypto.createHash ", () => { - function fn() { - crypto.createHash("sha1").update(Math.random(), "ascii").digest("base64"); - } +describe("createHash", () => { + it("update & digest", () => { + const hash = crypto.createHash("sha256"); + hash.update("some data to hash"); + expect(hash.digest("hex")).toBe("6a2da20943931e9834fc12cfe5bb47bbd9ae43489a30726962b576f4e3993e50"); + }); - for (let i = 0; i < 10; i++) fn(); + it("stream (sync)", () => { + const hash = crypto.createHash("sha256"); + hash.write("some data to hash"); + hash.end(); + expect(hash.read().toString("hex")).toBe("6a2da20943931e9834fc12cfe5bb47bbd9ae43489a30726962b576f4e3993e50"); + }); + + it("stream (async)", done => { + const hash = crypto.createHash("sha256"); + hash.on("readable", () => { + const data = hash.read(); + if (data) { + expect(data.toString("hex")).toBe("6a2da20943931e9834fc12cfe5bb47bbd9ae43489a30726962b576f4e3993e50"); + done(); + } + }); + hash.write("some data to hash"); + hash.end(); + }); + + it("stream multiple chunks", done => { + const hash = crypto.createHash("sha256"); + hash.write("some data to hash"); + hash.on("readable", () => { + const data = hash.read(); + if (data) { + expect(data.toString("hex")).toBe("43cc4cdc6bd7799b13da2d7c94bba96f3768bf7c4eba7038e0c393e4474fc9e5"); + done(); + } + }); + hash.write("some data to hash"); + hash.write("some data to hash"); + hash.end(); + }); + + it("stream with pipe", done => { + const hash = crypto.createHash("sha256"); + const s = new PassThrough(); + + hash.on("readable", () => { + const data = hash.read(); + if (data) { + expect(data.toString("hex")).toBe("0e1076315962f2e639ba2eea46223a813dafea530425613948c4b21635abd8fc"); + done(); + } + }); + s.write("Hello world"); + s.pipe(hash); + s.write("Bun!"); + s.end(); + }); + + it("repeated calls doesnt segfault", () => { + function fn() { + crypto.createHash("sha1").update(Math.random(), "ascii").digest("base64"); + } + + for (let i = 0; i < 10; i++) fn(); + }); }); it("crypto.createHmac", () => { |