aboutsummaryrefslogtreecommitdiff
path: root/test/js/node/crypto/node-crypto.test.js
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2023-04-21 07:25:51 -0700
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2023-04-21 07:25:51 -0700
commitdc55e11714ada5bbae823c218efe3d6c58fe30bb (patch)
treea1777a21d6af4b3bda8079f623868a85e240ebe9 /test/js/node/crypto/node-crypto.test.js
parent613bb4822ee8f4fbfd78aef391e2db8f07659a6f (diff)
downloadbun-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.js73
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", () => {