Skip to content

Commit 5731977

Browse files
aduh95danielleadams
authored andcommitted
test,crypto: ensure promises resolve in webcrypto tests
PR-URL: #37653 Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
1 parent 341ee31 commit 5731977

4 files changed

+85
-81
lines changed

test/parallel/test-webcrypto-digest.js

+8-8
Original file line numberDiff line numberDiff line change
@@ -66,25 +66,25 @@ const kData = (new TextEncoder()).encode('hello');
6666
}));
6767
})().then(common.mustCall());
6868

69-
[1, [], {}, null, undefined].forEach((i) => {
70-
assert.rejects(subtle.digest(i), { message: /Unrecognized name/ });
71-
});
69+
Promise.all([1, [], {}, null, undefined].map((i) =>
70+
assert.rejects(subtle.digest(i), { message: /Unrecognized name/ })
71+
)).then(common.mustCall());
7272

73-
assert.rejects(subtle.digest(''), { message: /Unrecognized name/ });
73+
assert.rejects(subtle.digest(''), { message: /Unrecognized name/ }).then(common.mustCall());
7474

75-
[1, [], {}, null, undefined].forEach((i) => {
75+
Promise.all([1, [], {}, null, undefined].map((i) =>
7676
assert.rejects(subtle.digest('SHA-256', i), {
7777
code: 'ERR_INVALID_ARG_TYPE'
78-
});
79-
});
78+
})
79+
)).then(common.mustCall());
8080

8181
// If there is a mismatch between length and the expected digest size for
8282
// the selected algorithm, we fail. The length is a Node.js specific
8383
// addition to the API, and is added as a support for future additional
8484
// hash algorithms that support variable digest output lengths.
8585
assert.rejects(subtle.digest({ name: 'SHA-512', length: 510 }, kData), {
8686
message: /Digest method not supported/
87-
});
87+
}).then(common.mustCall());
8888

8989
const kSourceData = {
9090
empty: '',

test/parallel/test-webcrypto-ed25519-ed448.js

+8-8
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ assert.rejects(
6565
['sign']),
6666
{
6767
message: /NODE-ED25519 raw keys must be exactly 32-bytes/
68-
});
68+
}).then(common.mustCall());
6969

7070
assert.rejects(
7171
subtle.importKey(
@@ -79,7 +79,7 @@ assert.rejects(
7979
['sign']),
8080
{
8181
message: /NODE-ED448 raw keys must be exactly 57-bytes/
82-
});
82+
}).then(common.mustCall());
8383

8484
const testVectors = {
8585
'NODE-ED25519': [
@@ -331,7 +331,7 @@ assert.rejects(
331331
['sign', 'verify']),
332332
{
333333
message: /Unsupported named curves for ECDSA/
334-
});
334+
}).then(common.mustCall());
335335

336336
assert.rejects(
337337
subtle.generateKey(
@@ -343,7 +343,7 @@ assert.rejects(
343343
['sign', 'verify']),
344344
{
345345
message: /Unsupported named curves for ECDSA/
346-
});
346+
}).then(common.mustCall());
347347

348348
assert.rejects(
349349
subtle.generateKey(
@@ -355,7 +355,7 @@ assert.rejects(
355355
['sign', 'verify']),
356356
{
357357
message: /Unsupported named curves for ECDSA/
358-
});
358+
}).then(common.mustCall());
359359

360360
assert.rejects(
361361
subtle.generateKey(
@@ -367,7 +367,7 @@ assert.rejects(
367367
['sign', 'verify']),
368368
{
369369
message: /Unsupported named curves for ECDSA/
370-
});
370+
}).then(common.mustCall());
371371

372372
{
373373
for (const asymmetricKeyType of ['ed25519', 'ed448']) {
@@ -398,7 +398,7 @@ assert.rejects(
398398
),
399399
{
400400
message: /Invalid algorithm name/
401-
});
401+
}).then(common.mustCall());
402402

403403
assert.rejects(
404404
subtle.importKey(
@@ -413,7 +413,7 @@ assert.rejects(
413413
),
414414
{
415415
message: /Invalid algorithm name/
416-
});
416+
}).then(common.mustCall());
417417
}
418418
}
419419
}

test/parallel/test-webcrypto-export-import.js

+65-61
Original file line numberDiff line numberDiff line change
@@ -9,70 +9,74 @@ const assert = require('assert');
99
const { subtle, getRandomValues } = require('crypto').webcrypto;
1010

1111
{
12-
const keyData = getRandomValues(new Uint8Array(32));
13-
[1, null, undefined, {}, []].forEach((format) => {
14-
assert.rejects(
15-
subtle.importKey(format, keyData, {}, false, ['wrapKey']), {
16-
code: 'ERR_INVALID_ARG_TYPE'
12+
async function test() {
13+
const keyData = getRandomValues(new Uint8Array(32));
14+
await Promise.all([1, null, undefined, {}, []].map((format) =>
15+
assert.rejects(
16+
subtle.importKey(format, keyData, {}, false, ['wrapKey']), {
17+
code: 'ERR_INVALID_ARG_TYPE'
18+
})
19+
));
20+
await assert.rejects(
21+
subtle.importKey('not valid', keyData, {}, false, ['wrapKey']), {
22+
code: 'ERR_INVALID_ARG_VALUE'
1723
});
18-
});
19-
assert.rejects(
20-
subtle.importKey('not valid', keyData, {}, false, ['wrapKey']), {
21-
code: 'ERR_INVALID_ARG_VALUE'
22-
});
23-
[1, null, undefined, {}, []].forEach((keyData) => {
24-
assert.rejects(
25-
subtle.importKey('raw', keyData, {}, false, ['deriveBits']), {
24+
await Promise.all([1, null, undefined, {}, []].map((keyData) =>
25+
assert.rejects(
26+
subtle.importKey('raw', keyData, {}, false, ['deriveBits']), {
27+
code: 'ERR_INVALID_ARG_TYPE'
28+
})
29+
));
30+
await assert.rejects(
31+
subtle.importKey('raw', keyData, {
32+
name: 'HMAC'
33+
}, false, ['sign', 'verify']), {
34+
code: 'ERR_MISSING_OPTION'
35+
});
36+
await assert.rejects(
37+
subtle.importKey('raw', keyData, {
38+
name: 'HMAC',
39+
hash: 'SHA-256'
40+
}, false, ['deriveBits']), {
41+
name: 'SyntaxError',
42+
message: 'Unsupported key usage for an HMAC key'
43+
});
44+
await assert.rejects(
45+
subtle.importKey('node.keyObject', '', {
46+
name: 'HMAC',
47+
hash: 'SHA-256'
48+
}, false, ['sign', 'verify']), {
2649
code: 'ERR_INVALID_ARG_TYPE'
2750
});
28-
});
29-
assert.rejects(
30-
subtle.importKey('raw', keyData, {
31-
name: 'HMAC'
32-
}, false, ['sign', 'verify']), {
33-
code: 'ERR_MISSING_OPTION'
34-
}).then(common.mustCall());
35-
assert.rejects(
36-
subtle.importKey('raw', keyData, {
37-
name: 'HMAC',
38-
hash: 'SHA-256'
39-
}, false, ['deriveBits']), {
40-
name: 'SyntaxError',
41-
message: 'Unsupported key usage for an HMAC key'
42-
}).then(common.mustCall());
43-
assert.rejects(
44-
subtle.importKey('node.keyObject', '', {
45-
name: 'HMAC',
46-
hash: 'SHA-256'
47-
}, false, ['sign', 'verify']), {
48-
code: 'ERR_INVALID_ARG_TYPE'
49-
}).then(common.mustCall());
50-
assert.rejects(
51-
subtle.importKey('raw', keyData, {
52-
name: 'HMAC',
53-
hash: 'SHA-256',
54-
length: 0
55-
}, false, ['sign', 'verify']), {
56-
name: 'DataError',
57-
message: 'Zero-length key is not supported'
58-
}).then(common.mustCall());
59-
assert.rejects(
60-
subtle.importKey('raw', keyData, {
61-
name: 'HMAC',
62-
hash: 'SHA-256',
63-
length: 1
64-
}, false, ['sign', 'verify']), {
65-
name: 'DataError',
66-
message: 'Invalid key length'
67-
}).then(common.mustCall());
68-
assert.rejects(
69-
subtle.importKey('jwk', null, {
70-
name: 'HMAC',
71-
hash: 'SHA-256',
72-
}, false, ['sign', 'verify']), {
73-
name: 'DataError',
74-
message: 'Invalid JWK keyData'
75-
}).then(common.mustCall());
51+
await assert.rejects(
52+
subtle.importKey('raw', keyData, {
53+
name: 'HMAC',
54+
hash: 'SHA-256',
55+
length: 0
56+
}, false, ['sign', 'verify']), {
57+
name: 'DataError',
58+
message: 'Zero-length key is not supported'
59+
});
60+
await assert.rejects(
61+
subtle.importKey('raw', keyData, {
62+
name: 'HMAC',
63+
hash: 'SHA-256',
64+
length: 1
65+
}, false, ['sign', 'verify']), {
66+
name: 'DataError',
67+
message: 'Invalid key length'
68+
});
69+
await assert.rejects(
70+
subtle.importKey('jwk', null, {
71+
name: 'HMAC',
72+
hash: 'SHA-256',
73+
}, false, ['sign', 'verify']), {
74+
name: 'DataError',
75+
message: 'Invalid JWK keyData'
76+
});
77+
}
78+
79+
test().then(common.mustCall());
7680
}
7781

7882
// Import/Export HMAC Secret Key

test/parallel/test-webcrypto-x25519-x448.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -59,10 +59,10 @@ async function importKey(namedCurve, keyData, isPublic = false) {
5959

6060
assert.rejects(importKey('NODE-X25519', Buffer.alloc(10), true), {
6161
message: /NODE-X25519 raw keys must be exactly 32-bytes/
62-
});
62+
}).then(common.mustCall());
6363
assert.rejects(importKey('NODE-X448', Buffer.alloc(10), true), {
6464
message: /NODE-X448 raw keys must be exactly 56-bytes/
65-
});
65+
}).then(common.mustCall());
6666

6767
async function test1(namedCurve) {
6868
const {
@@ -235,7 +235,7 @@ assert.rejects(
235235
['deriveBits']),
236236
{
237237
message: /Unsupported named curves for ECDH/
238-
});
238+
}).then(common.mustCall());
239239

240240
assert.rejects(
241241
subtle.generateKey(
@@ -247,7 +247,7 @@ assert.rejects(
247247
['deriveBits']),
248248
{
249249
message: /Unsupported named curves for ECDH/
250-
});
250+
}).then(common.mustCall());
251251

252252
{
253253
// Private JWK import

0 commit comments

Comments
 (0)