diff options
author | Max Dahlgren <83047501+maxedahlgren@users.noreply.github.com> | 2023-03-26 21:03:10 +1100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-26 10:03:10 +0000 |
commit | 701099b2a9ec64e6fad3b7ecfd78e8c7224ef83e (patch) | |
tree | 78b80f2c2eddec0a48c1be4be24a3784eec7bb8f /cli/tests/unit_node/internal/_randomFill_test.ts | |
parent | b4c61c146a50dea0c4a53d8d505a4308ea7da279 (diff) |
test(ext/node): Port crypto tests from std/node (#18382)
Diffstat (limited to 'cli/tests/unit_node/internal/_randomFill_test.ts')
-rw-r--r-- | cli/tests/unit_node/internal/_randomFill_test.ts | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/cli/tests/unit_node/internal/_randomFill_test.ts b/cli/tests/unit_node/internal/_randomFill_test.ts new file mode 100644 index 000000000..00ff029cc --- /dev/null +++ b/cli/tests/unit_node/internal/_randomFill_test.ts @@ -0,0 +1,61 @@ +// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license. +import { Buffer } from "node:buffer"; +import { randomFill, randomFillSync } from "node:crypto"; +import { + assertEquals, + assertNotEquals, + assertThrows, +} from "../../../../test_util/std/testing/asserts.ts"; + +const validateNonZero = (buf: Buffer) => { + if (!buf.some((ch) => ch > 0)) throw new Error("Error"); +}; + +const validateZero = (buf: Buffer) => { + buf.forEach((val) => assertEquals(val, 0)); +}; + +Deno.test("[node/crypto.randomFill]", () => { + const buf = Buffer.alloc(10); + const before = buf.toString("hex"); + + randomFill(buf, 5, 5, (_err, bufTwo) => { + const after = bufTwo?.toString("hex"); + assertEquals(before.slice(0, 10), after?.slice(0, 10)); + }); +}); + +Deno.test("[node/crypto.randomFillSync]", () => { + const buf = Buffer.alloc(10); + const before = buf.toString("hex"); + + const after = randomFillSync(buf, 5, 5); + + assertNotEquals(before, after.toString("hex")); +}); + +Deno.test("[node/crypto.randomFillSync] Complete fill, explicit size", () => { + const buf = Buffer.alloc(10); + randomFillSync(buf, undefined, 10); + validateNonZero(buf); +}); + +Deno.test("[randomFillSync] Complete fill", () => { + const buf = Buffer.alloc(10); + randomFillSync(buf); + validateNonZero(buf); +}); + +Deno.test("[node/crypto.randomFillSync] Fill beginning, explicit offset+size", () => { + const buf = Buffer.alloc(10); + randomFillSync(buf, 0, 5); + validateNonZero(buf); + + const untouched = buf.slice(5); + assertEquals(untouched.length, 5); + validateZero(untouched); +}); + +Deno.test("[node/crypto.randomFillSync] Invalid offst/size", () => { + assertThrows(() => randomFillSync(Buffer.alloc(10), 1, 10)); +}); |