MCPcopy Create free account
hub / github.com/nodejs/node / run_test

Function run_test

test/fixtures/wpt/WebCryptoAPI/generateKey/failures.js:1–238  ·  view source on GitHub ↗
(algorithmNames)

Source from the content-addressed store, hash-verified

1function run_test(algorithmNames) {
2 var subtle = crypto.subtle; // Change to test prefixed implementations
3
4 setup({explicit_timeout: true});
5
6// These tests check that generateKey throws an error, and that
7// the error is of the right type, for a wide set of incorrect parameters.
8//
9// Error testing occurs by setting the parameter that should trigger the
10// error to an invalid value, then combining that with all valid
11// parameters that should be checked earlier by generateKey, and all
12// valid and invalid parameters that should be checked later by
13// generateKey.
14//
15// There are a lot of combinations of possible parameters for both
16// success and failure modes, resulting in a very large number of tests
17// performed.
18
19
20// Setup: define the correct behaviors that should be sought, and create
21// helper functions that generate all possible test parameters for
22// different situations.
23
24 var allTestVectors = [ // Parameters that should work for generateKey
25 {name: "AES-CTR", resultType: CryptoKey, usages: ["encrypt", "decrypt", "wrapKey", "unwrapKey"], mandatoryUsages: []},
26 {name: "AES-CBC", resultType: CryptoKey, usages: ["encrypt", "decrypt", "wrapKey", "unwrapKey"], mandatoryUsages: []},
27 {name: "AES-GCM", resultType: CryptoKey, usages: ["encrypt", "decrypt", "wrapKey", "unwrapKey"], mandatoryUsages: []},
28 {name: "AES-OCB", resultType: CryptoKey, usages: ["encrypt", "decrypt", "wrapKey", "unwrapKey"], mandatoryUsages: []},
29 {name: "ChaCha20-Poly1305", resultType: CryptoKey, usages: ["encrypt", "decrypt", "wrapKey", "unwrapKey"], mandatoryUsages: []},
30 {name: "AES-KW", resultType: CryptoKey, usages: ["wrapKey", "unwrapKey"], mandatoryUsages: []},
31 {name: "HMAC", resultType: CryptoKey, usages: ["sign", "verify"], mandatoryUsages: []},
32 {name: "RSASSA-PKCS1-v1_5", resultType: "CryptoKeyPair", usages: ["sign", "verify"], mandatoryUsages: ["sign"]},
33 {name: "RSA-PSS", resultType: "CryptoKeyPair", usages: ["sign", "verify"], mandatoryUsages: ["sign"]},
34 {name: "RSA-OAEP", resultType: "CryptoKeyPair", usages: ["encrypt", "decrypt", "wrapKey", "unwrapKey"], mandatoryUsages: ["decrypt", "unwrapKey"]},
35 {name: "ECDSA", resultType: "CryptoKeyPair", usages: ["sign", "verify"], mandatoryUsages: ["sign"]},
36 {name: "ECDH", resultType: "CryptoKeyPair", usages: ["deriveKey", "deriveBits"], mandatoryUsages: ["deriveKey", "deriveBits"]},
37 {name: "Ed25519", resultType: "CryptoKeyPair", usages: ["sign", "verify"], mandatoryUsages: ["sign"]},
38 {name: "Ed448", resultType: "CryptoKeyPair", usages: ["sign", "verify"], mandatoryUsages: ["sign"]},
39 {name: "ML-DSA-44", resultType: "CryptoKeyPair", usages: ["sign", "verify"], mandatoryUsages: ["sign"]},
40 {name: "ML-DSA-65", resultType: "CryptoKeyPair", usages: ["sign", "verify"], mandatoryUsages: ["sign"]},
41 {name: "ML-DSA-87", resultType: "CryptoKeyPair", usages: ["sign", "verify"], mandatoryUsages: ["sign"]},
42 {name: "ML-KEM-512", resultType: "CryptoKeyPair", usages: ["decapsulateBits", "decapsulateKey", "encapsulateBits", "encapsulateKey"], mandatoryUsages: ["decapsulateBits", "decapsulateKey"]},
43 {name: "ML-KEM-768", resultType: "CryptoKeyPair", usages: ["decapsulateBits", "decapsulateKey", "encapsulateBits", "encapsulateKey"], mandatoryUsages: ["decapsulateBits", "decapsulateKey"]},
44 {name: "ML-KEM-1024", resultType: "CryptoKeyPair", usages: ["decapsulateBits", "decapsulateKey", "encapsulateBits", "encapsulateKey"], mandatoryUsages: ["decapsulateBits", "decapsulateKey"]},
45 {name: "X25519", resultType: "CryptoKeyPair", usages: ["deriveKey", "deriveBits"], mandatoryUsages: ["deriveKey", "deriveBits"]},
46 {name: "X448", resultType: "CryptoKeyPair", usages: ["deriveKey", "deriveBits"], mandatoryUsages: ["deriveKey", "deriveBits"]},
47 {name: "KMAC128", resultType: CryptoKey, usages: ["sign", "verify"], mandatoryUsages: []},
48 {name: "KMAC256", resultType: CryptoKey, usages: ["sign", "verify"], mandatoryUsages: []},
49 ];
50
51 var testVectors = [];
52 if (algorithmNames && !Array.isArray(algorithmNames)) {
53 algorithmNames = [algorithmNames];
54 };
55 allTestVectors.forEach(function(vector) {
56 if (!algorithmNames || algorithmNames.includes(vector.name)) {
57 testVectors.push(vector);
58 }
59 });
60

Calls 9

allValidUsagesFunction · 0.85
includesMethod · 0.80
testErrorFunction · 0.70
invalidUsagesFunction · 0.70
forEachMethod · 0.65
setupFunction · 0.50
pushMethod · 0.45

Tested by

no test coverage detected