From 037798ae078b300a99b173ec90e2fbf65ea15628 Mon Sep 17 00:00:00 2001 From: Dmitry Volyntsev Date: Mon, 1 Nov 2021 15:53:30 +0000 Subject: [PATCH] Tests: allowing to define own test function per test suite. --- test/webcrypto/aes.js | 8 +++++--- test/webcrypto/aes_decoding.js | 8 +++++--- test/webcrypto/derive.js | 8 +++++--- test/webcrypto/digest.js | 8 +++++--- test/webcrypto/rsa.js | 8 +++++--- test/webcrypto/rsa_decoding.js | 8 +++++--- test/webcrypto/sign.js | 14 +++++++++++--- test/webcrypto/verify.js | 14 +++++++++++--- 8 files changed, 52 insertions(+), 24 deletions(-) diff --git a/test/webcrypto/aes.js b/test/webcrypto/aes.js index 1b8219f5..85577fc9 100644 --- a/test/webcrypto/aes.js +++ b/test/webcrypto/aes.js @@ -2,7 +2,7 @@ if (typeof crypto == 'undefined') { crypto = require('crypto').webcrypto; } -async function run(tlist, T, prepare_args) { +async function run(tlist) { function validate(t, r, i) { if (r.status == "fulfilled" && !t[i].exception) { return r.value === "SUCCESS"; @@ -22,7 +22,7 @@ async function run(tlist, T, prepare_args) { for (let k = 0; k < tlist.length; k++) { let ts = tlist[k]; - let results = await Promise.allSettled(ts.tests.map(t => T(prepare_args(t, ts.opts)))); + let results = await Promise.allSettled(ts.tests.map(t => ts.T(ts.prepare_args(t, ts.opts)))); let r = results.map((r, i) => validate(ts.tests, r, i)); console.log(`${ts.name} ${r.every(v=>v == true) ? "SUCCESS" : "FAILED"}`); @@ -77,6 +77,8 @@ async function test(params) { let aes_tsuite = { name: "AES encoding/decoding", + T: test, + prepare_args: p, opts: { iv: "44556677445566774455667744556677", key: "00112233001122330011223300112233", @@ -120,4 +122,4 @@ let aes_tsuite = { { name: "AES-CBC", data: "aabbccdd".repeat(5), iv: "ffffffffffffffffffffffffffffffff" }, ]}; -run([aes_tsuite], test, p); +run([aes_tsuite]); diff --git a/test/webcrypto/aes_decoding.js b/test/webcrypto/aes_decoding.js index 3b4dfe78..d518856a 100644 --- a/test/webcrypto/aes_decoding.js +++ b/test/webcrypto/aes_decoding.js @@ -4,7 +4,7 @@ if (typeof crypto == 'undefined') { crypto = require('crypto').webcrypto; } -async function run(tlist, T, prepare_args) { +async function run(tlist) { function validate(t, r, i) { if (r.status == "fulfilled" && !t[i].exception) { return r.value === "SUCCESS"; @@ -24,7 +24,7 @@ async function run(tlist, T, prepare_args) { for (let k = 0; k < tlist.length; k++) { let ts = tlist[k]; - let results = await Promise.allSettled(ts.tests.map(t => T(prepare_args(t, ts.opts)))); + let results = await Promise.allSettled(ts.tests.map(t => ts.T(ts.prepare_args(t, ts.opts)))); let r = results.map((r, i) => validate(ts.tests, r, i)); console.log(`${ts.name} ${r.every(v=>v == true) ? "SUCCESS" : "FAILED"}`); @@ -79,6 +79,8 @@ async function test(params) { let aes_tsuite = { name: "AES decoding", + T: test, + prepare_args: p, opts: { key: "00112233001122330011223300112233", iv: "44556677445566774455667744556677", @@ -113,4 +115,4 @@ let aes_tsuite = { expected: "AES-CBC-256-SECRET-TEXT" }, ]}; -run([aes_tsuite], test, p); +run([aes_tsuite]); diff --git a/test/webcrypto/derive.js b/test/webcrypto/derive.js index e2f6917d..8c87c013 100644 --- a/test/webcrypto/derive.js +++ b/test/webcrypto/derive.js @@ -2,7 +2,7 @@ if (typeof crypto == 'undefined') { crypto = require('crypto').webcrypto; } -async function run(tlist, T, prepare_args) { +async function run(tlist) { function validate(t, r, i) { if (r.status == "fulfilled" && !t[i].exception) { return r.value === "SUCCESS"; @@ -26,7 +26,7 @@ async function run(tlist, T, prepare_args) { for (let k = 0; k < tlist.length; k++) { let ts = tlist[k]; - let results = await Promise.allSettled(ts.tests.map(t => T(prepare_args(t, ts.opts)))); + let results = await Promise.allSettled(ts.tests.map(t => ts.T(ts.prepare_args(t, ts.opts)))); let r = results.map((r, i) => validate(ts.tests, r, i)); console.log(`${ts.name} ${r.every(v=>v == true) ? "SUCCESS" : "FAILED"}`); @@ -96,6 +96,8 @@ async function test(params) { let derive_tsuite = { name: "derive", + T: test, + prepare_args: p, opts: { text: "secReT", pass: "passW0rd", @@ -146,4 +148,4 @@ let derive_tsuite = { expected: "e089c7491711306c69e077aa19fae6bfd2d4a6d240b0d37317d50472d7291a3e" }, ]}; -run([derive_tsuite], test, p); +run([derive_tsuite]); diff --git a/test/webcrypto/digest.js b/test/webcrypto/digest.js index 4eed191b..77d6ad14 100644 --- a/test/webcrypto/digest.js +++ b/test/webcrypto/digest.js @@ -2,7 +2,7 @@ if (typeof crypto == 'undefined') { crypto = require('crypto').webcrypto; } -async function run(tlist, T, prepare_args) { +async function run(tlist) { function validate(t, r, i) { if (r.status == "fulfilled" && !t[i].exception) { return r.value === "SUCCESS"; @@ -22,7 +22,7 @@ async function run(tlist, T, prepare_args) { for (let k = 0; k < tlist.length; k++) { let ts = tlist[k]; - let results = await Promise.allSettled(ts.tests.map(t => T(prepare_args(t, ts.opts)))); + let results = await Promise.allSettled(ts.tests.map(t => ts.T(ts.prepare_args(t, ts.opts)))); let r = results.map((r, i) => validate(ts.tests, r, i)); console.log(`${ts.name} ${r.every(v=>v == true) ? "SUCCESS" : "FAILED"}`); @@ -54,6 +54,8 @@ async function test(params) { let digest_tsuite = { name: "SHA digest", + T: test, + prepare_args: p, opts: { }, tests: [ @@ -85,4 +87,4 @@ let digest_tsuite = { expected: "cdea58919606ea9ae078f7595b192b84446f2189" }, ]}; -run([digest_tsuite], test, p); +run([digest_tsuite]); diff --git a/test/webcrypto/rsa.js b/test/webcrypto/rsa.js index 36744d84..42d68d02 100644 --- a/test/webcrypto/rsa.js +++ b/test/webcrypto/rsa.js @@ -4,7 +4,7 @@ if (typeof crypto == 'undefined') { crypto = require('crypto').webcrypto; } -async function run(tlist, T, prepare_args) { +async function run(tlist) { function validate(t, r, i) { if (r.status == "fulfilled" && !t[i].exception) { return r.value === "SUCCESS"; @@ -24,7 +24,7 @@ async function run(tlist, T, prepare_args) { for (let k = 0; k < tlist.length; k++) { let ts = tlist[k]; - let results = await Promise.allSettled(ts.tests.map(t => T(prepare_args(t, ts.opts)))); + let results = await Promise.allSettled(ts.tests.map(t => ts.T(ts.prepare_args(t, ts.opts)))); let r = results.map((r, i) => validate(ts.tests, r, i)); console.log(`${ts.name} ${r.every(v=>v == true) ? "SUCCESS" : "FAILED"}`); @@ -79,6 +79,8 @@ async function test(params) { let rsa_tsuite = { name: "RSA-OAEP encoding/decoding", + T: test, + prepare_args: p, opts: { spki: "rsa.spki", spki_hash: "SHA-256", @@ -103,4 +105,4 @@ let rsa_tsuite = { { data: "aabbcc", spki: "rsa2.spki", exception: "Error: EVP_PKEY_decrypt() failed" }, ]}; -run([rsa_tsuite], test, p); +run([rsa_tsuite]); diff --git a/test/webcrypto/rsa_decoding.js b/test/webcrypto/rsa_decoding.js index c5e0f654..4ebdd0fc 100644 --- a/test/webcrypto/rsa_decoding.js +++ b/test/webcrypto/rsa_decoding.js @@ -4,7 +4,7 @@ if (typeof crypto == 'undefined') { crypto = require('crypto').webcrypto; } -async function run(tlist, T, prepare_args) { +async function run(tlist) { function validate(t, r, i) { if (r.status == "fulfilled" && !t[i].exception) { return r.value === "SUCCESS"; @@ -24,7 +24,7 @@ async function run(tlist, T, prepare_args) { for (let k = 0; k < tlist.length; k++) { let ts = tlist[k]; - let results = await Promise.allSettled(ts.tests.map(t => T(prepare_args(t, ts.opts)))); + let results = await Promise.allSettled(ts.tests.map(t => ts.T(ts.prepare_args(t, ts.opts)))); let r = results.map((r, i) => validate(ts.tests, r, i)); console.log(`${ts.name} ${r.every(v=>v == true) ? "SUCCESS" : "FAILED"}`); @@ -70,6 +70,8 @@ async function test(params) { let rsa_tsuite = { name: "RSA-OAEP decoding", + T: test, + prepare_args: (v) => v, opts: { }, tests: [ @@ -78,4 +80,4 @@ let rsa_tsuite = { { pem: "rsa.pkcs8.broken", src: "text.base64.rsa-oaep.enc", exception: "Error: d2i_PKCS8_PRIV_KEY_INFO_bio() failed" }, ]}; -run([rsa_tsuite], test, (v) => v); +run([rsa_tsuite]); diff --git a/test/webcrypto/sign.js b/test/webcrypto/sign.js index 0473d2ac..60f5fa77 100644 --- a/test/webcrypto/sign.js +++ b/test/webcrypto/sign.js @@ -3,7 +3,7 @@ if (typeof crypto == 'undefined') { crypto = require('crypto').webcrypto; } -async function run(tlist, T, prepare_args) { +async function run(tlist) { function validate(t, r, i) { if (r.status == "fulfilled" && !t[i].exception) { return r.value === "SUCCESS"; @@ -23,7 +23,7 @@ async function run(tlist, T, prepare_args) { for (let k = 0; k < tlist.length; k++) { let ts = tlist[k]; - let results = await Promise.allSettled(ts.tests.map(t => T(prepare_args(t, ts.opts)))); + let results = await Promise.allSettled(ts.tests.map(t => ts.T(ts.prepare_args(t, ts.opts)))); let r = results.map((r, i) => validate(ts.tests, r, i)); console.log(`${ts.name} ${r.every(v=>v == true) ? "SUCCESS" : "FAILED"}`); @@ -160,6 +160,8 @@ async function test(params) { let hmac_tsuite = { name: "HMAC sign", + T: test, + prepare_args: p, opts: { text: "TExt-T0-SiGN", sign_key: { key: "secretKEY", fmt: "raw" }, @@ -193,6 +195,8 @@ let hmac_tsuite = { let rsassa_pkcs1_v1_5_tsuite = { name: "RSASSA-PKCS1-v1_5 sign", + T: test, + prepare_args: p, opts: { text: "TExt-T0-SiGN", sign_key: { key: "rsa.pkcs8", fmt: "pkcs8" }, @@ -221,6 +225,8 @@ let rsassa_pkcs1_v1_5_tsuite = { let rsa_pss_tsuite = { name: "RSA-PSS sign", + T: test, + prepare_args: p, opts: { text: "TExt-T0-SiGN", sign_key: { key: "rsa.pkcs8", fmt: "pkcs8" }, @@ -250,6 +256,8 @@ let rsa_pss_tsuite = { let ecdsa_tsuite = { name: "ECDSA sign", + T: test, + prepare_args: p, opts: { text: "TExt-T0-SiGN", sign_key: { key: "ec.pkcs8", fmt: "pkcs8" }, @@ -279,4 +287,4 @@ run([ rsassa_pkcs1_v1_5_tsuite, rsa_pss_tsuite, ecdsa_tsuite -], test, p); +]); diff --git a/test/webcrypto/verify.js b/test/webcrypto/verify.js index a969e3ba..6ae24d02 100644 --- a/test/webcrypto/verify.js +++ b/test/webcrypto/verify.js @@ -4,7 +4,7 @@ if (typeof crypto == 'undefined') { crypto = require('crypto').webcrypto; } -async function run(tlist, T, prepare_args) { +async function run(tlist) { function validate(t, r, i) { if (r.status == "fulfilled" && !t[i].exception) { return r.value === "SUCCESS"; @@ -24,7 +24,7 @@ async function run(tlist, T, prepare_args) { for (let k = 0; k < tlist.length; k++) { let ts = tlist[k]; - let results = await Promise.allSettled(ts.tests.map(t => T(prepare_args(t, ts.opts)))); + let results = await Promise.allSettled(ts.tests.map(t => ts.T(ts.prepare_args(t, ts.opts)))); let r = results.map((r, i) => validate(ts.tests, r, i)); console.log(`${ts.name} ${r.every(v=>v == true) ? "SUCCESS" : "FAILED"}`); @@ -108,6 +108,8 @@ async function test(params) { let hmac_tsuite = { name: "HMAC verify", + T: test, + prepare_args: p, opts: { text: "SigneD-TExt", key: { fmt: "raw", file: "aabbcc" }, @@ -130,6 +132,8 @@ let hmac_tsuite = { let rsassa_pkcs1_v1_5_tsuite = { name: "RSASSA-PKCS1-v1_5 verify", + T: test, + prepare_args: p, opts: { text: "SigneD-TExt", key: { fmt: "spki", file: "rsa.spki" }, @@ -152,6 +156,8 @@ let rsassa_pkcs1_v1_5_tsuite = { let rsa_pss_tsuite = { name: "RSA-PSS verify", + T: test, + prepare_args: p, opts: { text: "SigneD-TExt", key: { fmt: "spki", file: "rsa.spki" }, @@ -179,6 +185,8 @@ let rsa_pss_tsuite = { let ecdsa_tsuite = { name: "ECDSA verify", + T: test, + prepare_args: p, opts: { text: "SigneD-TExt", key: { fmt: "spki", file: "ec.spki" }, @@ -204,4 +212,4 @@ run([ rsassa_pkcs1_v1_5_tsuite, rsa_pss_tsuite, ecdsa_tsuite, -], test, p); +]); -- 2.47.3