mirror of
https://github.com/nodejs/node.git
synced 2024-11-21 10:59:27 +00:00
4a54a80aa3
`String.prototype.substr` is deprecated, and using it will raise an error when using ESLint 9+. Co-authored-by: =?UTF-8?q?Micha=C3=ABl=20Zasso?= <targos@protonmail.com> PR-URL: https://github.com/nodejs/node/pull/53070 Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Yagiz Nizipli <yagiz.nizipli@sentry.io> Reviewed-By: Juan José Arboleda <soyjuanarbol@gmail.com> Reviewed-By: Moshe Atlow <moshe@atlow.co.il> Reviewed-By: Tierney Cyren <hello@bnb.im> Reviewed-By: Tobias Nießen <tniessen@tnie.de>
59 lines
1.5 KiB
JavaScript
59 lines
1.5 KiB
JavaScript
'use strict';
|
|
|
|
const common = require('../common');
|
|
|
|
if (!common.hasCrypto)
|
|
common.skip('missing crypto');
|
|
|
|
const assert = require('assert');
|
|
const {
|
|
randomUUID,
|
|
} = require('crypto');
|
|
|
|
const last = new Set([
|
|
'00000000-0000-0000-0000-000000000000',
|
|
]);
|
|
|
|
function testMatch(uuid) {
|
|
assert.match(
|
|
uuid,
|
|
/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/);
|
|
}
|
|
|
|
// Generate a number of UUID's to make sure we're
|
|
// not just generating the same value over and over
|
|
// and to make sure the batching changes the random
|
|
// bytes.
|
|
for (let n = 0; n < 130; n++) {
|
|
const uuid = randomUUID();
|
|
assert(!last.has(uuid));
|
|
last.add(uuid);
|
|
assert.strictEqual(typeof uuid, 'string');
|
|
assert.strictEqual(uuid.length, 36);
|
|
testMatch(uuid);
|
|
|
|
// Check that version 4 identifier was populated.
|
|
assert.strictEqual(
|
|
Buffer.from(uuid.slice(14, 16), 'hex')[0] & 0x40, 0x40);
|
|
|
|
// Check that clock_seq_hi_and_reserved was populated with reserved bits.
|
|
assert.strictEqual(
|
|
Buffer.from(uuid.slice(19, 21), 'hex')[0] & 0b1100_0000, 0b1000_0000);
|
|
}
|
|
|
|
// Test non-buffered UUID's
|
|
{
|
|
testMatch(randomUUID({ disableEntropyCache: true }));
|
|
testMatch(randomUUID({ disableEntropyCache: true }));
|
|
testMatch(randomUUID({ disableEntropyCache: true }));
|
|
testMatch(randomUUID({ disableEntropyCache: true }));
|
|
|
|
assert.throws(() => randomUUID(1), {
|
|
code: 'ERR_INVALID_ARG_TYPE'
|
|
});
|
|
|
|
assert.throws(() => randomUUID({ disableEntropyCache: '' }), {
|
|
code: 'ERR_INVALID_ARG_TYPE'
|
|
});
|
|
}
|