2
0
mirror of https://github.com/tenrok/axios.git synced 2026-06-05 16:42:32 +03:00

fix(utils): replace getRandomValues with crypto module (#6788)

This commit is contained in:
Willian Agostini
2025-02-18 09:36:51 -03:00
committed by GitHub
parent 32c7bcc0f2
commit 23a25af068
2 changed files with 25 additions and 2 deletions
+5 -2
View File
@@ -1,6 +1,7 @@
'use strict';
import bind from './helpers/bind.js';
import crypto from 'crypto';
// utils is a library of generic helper functions non-specific to axios
@@ -615,8 +616,10 @@ const ALPHABET = {
const generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {
let str = '';
const {length} = alphabet;
while (size--) {
str += alphabet[Math.random() * length|0]
const randomValues = new Uint32Array(size);
crypto.randomFillSync(randomValues);
for (let i = 0; i < size; i++) {
str += alphabet[randomValues[i] % length];
}
return str;
+20
View File
@@ -80,4 +80,24 @@ describe('utils', function (){
assert.strictEqual(JSON.stringify(jsonObject), JSON.stringify({x: 1, y:2, obj: {ok: 1}}))
});
});
describe('generateString', function () {
it('should generate a string of the specified length using the default alphabet', function () {
const size = 10;
const str = utils.generateString(size);
assert.strictEqual(str.length, size);
});
it('should generate a string using only characters from the default alphabet', function () {
const size = 10;
const alphabet = utils.ALPHABET.ALPHA_DIGIT;
const str = utils.generateString(size, alphabet);
for (let char of str) {
assert.ok(alphabet.includes(char), `Character ${char} is not in the alphabet`);
}
});
});
});