* specify constructor for assert.throws() * load additional modules only if crypto check passes * normalize some potentially confusing indentation * provided actual first and expected second in assertions PR-URL: https://github.com/nodejs/node/pull/10232 Reviewed-By: Prince John Wesley <princejohnwesley@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Michaël Zasso <targos@protonmail.com>
36 lines
1,016 B
JavaScript
36 lines
1,016 B
JavaScript
'use strict';
|
|
const common = require('../common');
|
|
|
|
if (!common.hasCrypto) {
|
|
common.skip('missing crypto');
|
|
return;
|
|
}
|
|
|
|
const assert = require('assert');
|
|
const crypto = require('crypto');
|
|
|
|
crypto.DEFAULT_ENCODING = 'buffer';
|
|
|
|
// bump, we register a lot of exit listeners
|
|
process.setMaxListeners(256);
|
|
|
|
[crypto.randomBytes, crypto.pseudoRandomBytes].forEach(function(f) {
|
|
[-1, undefined, null, false, true, {}, []].forEach(function(value) {
|
|
assert.throws(function() { f(value); }, TypeError);
|
|
assert.throws(function() { f(value, function() {}); }, TypeError);
|
|
});
|
|
|
|
[0, 1, 2, 4, 16, 256, 1024].forEach(function(len) {
|
|
f(len, common.mustCall(function(ex, buf) {
|
|
assert.strictEqual(ex, null);
|
|
assert.strictEqual(buf.length, len);
|
|
assert.ok(Buffer.isBuffer(buf));
|
|
}));
|
|
});
|
|
});
|
|
|
|
// #5126, "FATAL ERROR: v8::Object::SetIndexedPropertiesToExternalArrayData()
|
|
// length exceeds max acceptable value"
|
|
assert.throws(function() {
|
|
crypto.randomBytes((-1 >>> 0) + 1);
|
|
}, TypeError);
|