|
3 | 3 | var common = require('../common'); |
4 | 4 | var assert = common.assert; |
5 | 5 | var FormData = require(common.dir.lib + '/form_data'); |
6 | | -var predictV8Randomness = require('predict-v8-randomness'); |
| 6 | +var satisfies = require('semver').satisfies; |
| 7 | +var predictV8Randomness = satisfies(process.version, '^17 - ^23') && require('predict-v8-randomness'); // eslint-disable-line global-require |
7 | 8 |
|
8 | 9 | var initialSequence = [ |
9 | 10 | Math.random(), |
10 | 11 | Math.random(), |
11 | 12 | Math.random(), |
12 | 13 | Math.random(), |
13 | 14 | ]; |
14 | | -var predictor = new predictV8Randomness.Predictor(initialSequence); |
| 15 | +var predictor = predictV8Randomness && new predictV8Randomness.Predictor(initialSequence); |
15 | 16 |
|
16 | | -predictor.predictNext(24).then(function (next24RandomOutputs) { |
17 | | - var predictedBoundary = next24RandomOutputs |
18 | | - .map(function (v) { |
19 | | - return Math.floor(v * 10).toString(16); |
20 | | - }) |
21 | | - .join(''); |
| 17 | +if (predictor) { |
| 18 | + predictor.predictNext(24).then(function (next24RandomOutputs) { |
| 19 | + var predictedBoundary = next24RandomOutputs |
| 20 | + .map(function (v) { |
| 21 | + return Math.floor(v * 10).toString(16); |
| 22 | + }) |
| 23 | + .join(''); |
22 | 24 |
|
23 | | - var boundaryIntro = '----------------------------'; |
| 25 | + var boundaryIntro = '----------------------------'; |
24 | 26 |
|
25 | | - var payload = 'zzz\r\n' + boundaryIntro + predictedBoundary + '\r\nContent-Disposition: form-data; name="is_admin"\r\n\r\ntrue\r\n' + boundaryIntro + predictedBoundary + '--\r\n'; |
| 27 | + var payload = 'zzz\r\n' + boundaryIntro + predictedBoundary + '\r\nContent-Disposition: form-data; name="is_admin"\r\n\r\ntrue\r\n' + boundaryIntro + predictedBoundary + '--\r\n'; |
26 | 28 |
|
27 | | - var FIELDS = { |
28 | | - my_field: { |
29 | | - value: payload, |
30 | | - }, |
31 | | - }; |
| 29 | + var FIELDS = { |
| 30 | + my_field: { |
| 31 | + value: payload, |
| 32 | + }, |
| 33 | + }; |
32 | 34 |
|
33 | | - // count total |
34 | | - var fieldsPassed = Object.keys(FIELDS).length; |
| 35 | + // count total |
| 36 | + var fieldsPassed = Object.keys(FIELDS).length; |
35 | 37 |
|
36 | | - // prepare form-receiving http server |
37 | | - var server = common.testFields(FIELDS, function (fields) { |
38 | | - fieldsPassed = fields; |
39 | | - }); |
| 38 | + // prepare form-receiving http server |
| 39 | + var server = common.testFields(FIELDS, function (fields) { |
| 40 | + fieldsPassed = fields; |
| 41 | + }); |
40 | 42 |
|
41 | | - server.listen(common.port, function () { |
42 | | - var form = new FormData(); |
| 43 | + server.listen(common.port, function () { |
| 44 | + var form = new FormData(); |
43 | 45 |
|
44 | | - common.actions.populateFields(form, FIELDS); |
| 46 | + common.actions.populateFields(form, FIELDS); |
45 | 47 |
|
46 | | - common.actions.submit(form, server); |
47 | | - }); |
| 48 | + common.actions.submit(form, server); |
| 49 | + }); |
48 | 50 |
|
49 | | - process.on('exit', function () { |
50 | | - assert.strictEqual(fieldsPassed, 0); |
| 51 | + process.on('exit', function () { |
| 52 | + assert.strictEqual(fieldsPassed, 0); |
| 53 | + }); |
51 | 54 | }); |
52 | | -}); |
| 55 | +} |
0 commit comments