From a0c89eafbacdeca8382d8d16a10feb494b61b145 Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Fri, 18 Mar 2022 10:38:30 +0100 Subject: [PATCH] test: refactor browser tests, enable P-521 in current webkit --- karma.conf.js | 58 ++++++++++------------------------ test-browser/helpers.js | 7 ++++ test-browser/importexport.js | 14 +++----- test-browser/jwe_asymmetric.js | 7 +--- test-browser/jwe_symmetric.js | 7 +--- test-browser/jws.js | 7 +--- test-browser/keylike.js | 7 +--- 7 files changed, 32 insertions(+), 75 deletions(-) create mode 100644 test-browser/helpers.js diff --git a/karma.conf.js b/karma.conf.js index 6985bdb5..1aae6eb4 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -9,59 +9,46 @@ const browsers = { base: "BrowserStack", browser: "chrome", os: "Windows", - os_version: "10", + os_version: "11", }, chrome_lowest: { base: "BrowserStack", browser: "chrome", os: "Windows", browser_version: "63.0", - os_version: "10", + os_version: "11", }, firefox_latest: { base: "BrowserStack", browser: "firefox", os: "Windows", - os_version: "10", + os_version: "11", }, firefox_lowest: { base: "BrowserStack", browser: "firefox", os: "Windows", browser_version: "57.0", - os_version: "10", + os_version: "11", }, edge_latest: { base: "BrowserStack", browser: "edge", os: "Windows", - os_version: "10", + os_version: "11", }, edge_lowest: { base: "BrowserStack", browser: "edge", os: "Windows", browser_version: "80.0", - os_version: "10", - }, - opera_latest: { - base: "BrowserStack", - browser: "opera", - os: "Windows", - os_version: "10", - }, - opera_lowest: { - base: "BrowserStack", - browser: "opera", - os: "Windows", - browser_version: "50.0", - os_version: "10", + os_version: "11", }, safari_latest: { base: "BrowserStack", browser: "safari", os: "OS X", - os_version: "Catalina", + os_version: "Monterey", }, safari_lowest: { base: "BrowserStack", @@ -69,29 +56,18 @@ const browsers = { os: "OS X", os_version: "High Sierra", }, - ios_latest: { - base: "BrowserStack", - device: "iPhone 12 Pro", - os: "ios", - real_mobile: true, - os_version: "14", - }, - ios_lowest: { - base: "BrowserStack", - device: "iPhone XS Max", - os: "ios", - real_mobile: true, - os_version: "12", - }, - android_latest: { - base: "BrowserStack", - device: "Google Pixel 4", - os: "android", - real_mobile: true, - os_version: "11.0", - }, }; +// TODO: 15, but it doesn't get secureContext anymore >,< +for (const ios of [12, 13, 14]) { + browsers[`ios_${ios}`] = { + base: "BrowserStack", + device: "iPhone XS", + os: "ios", + os_version: `${ios}`, + } +} + module.exports = function (config) { config.set({ basePath: "", diff --git a/test-browser/helpers.js b/test-browser/helpers.js new file mode 100644 index 00000000..561cd4e8 --- /dev/null +++ b/test-browser/helpers.js @@ -0,0 +1,7 @@ +import * as Bowser from 'bowser' + +const browser = Bowser.parse(window.navigator.userAgent) + +export const p521 = browser.engine.name !== 'WebKit' || (browser.browser.name === 'Safari' && parseInt(browser.browser.version, 10) >= 15) || (browser.os.name === 'iOS' && parseInt(browser.os.version, 10) >= 15) +export const ecPkcs8 = browser.browser.name !== 'Firefox' || parseInt(browser.browser.version, 10) >= 93 +export const aes192 = browser.engine.name !== 'Blink' diff --git a/test-browser/importexport.js b/test-browser/importexport.js index af29ccc4..2423e90d 100644 --- a/test-browser/importexport.js +++ b/test-browser/importexport.js @@ -1,12 +1,6 @@ -import * as Bowser from 'bowser' - +import { p521, ecPkcs8 } from './helpers.js' import * as jose from '../dist/browser/index.js' -const browser = Bowser.parse(window.navigator.userAgent) - -const p521 = browser.engine.name !== 'WebKit' -const noPKCS8 = browser.browser.name === 'Firefox' && parseInt(browser.browser.version, 10) < 93 - const keys = { rsa: { privateKey: @@ -131,7 +125,7 @@ for (const alg of ['ES256', 'ECDH-ES', 'ECDH-ES+A128KW', 'ECDH-ES+A192KW', 'ECDH ) QUnit.test( `import PKCS8 P-256 for ${alg}`, - (noPKCS8 ? failing : (a, ...args) => a(...args)).bind( + (ecPkcs8 ? (a, ...args) => a(...args) : failing).bind( undefined, testPKCS8.bind(undefined, keys['P-256'].privateKey, alg), ), @@ -146,7 +140,7 @@ for (const alg of ['ES384', 'ECDH-ES', 'ECDH-ES+A128KW', 'ECDH-ES+A192KW', 'ECDH ) QUnit.test( `import PKCS8 P-384 for ${alg}`, - (noPKCS8 ? failing : (a, ...args) => a(...args)).bind( + (ecPkcs8 ? (a, ...args) => a(...args) : failing).bind( undefined, testPKCS8.bind(undefined, keys['P-384'].privateKey, alg), ), @@ -165,7 +159,7 @@ for (const alg of ['ES512', 'ECDH-ES', 'ECDH-ES+A128KW', 'ECDH-ES+A192KW', 'ECDH ) QUnit.test( `import PKCS8 P-521 for ${alg}`, - (noPKCS8 ? failing : (a, ...args) => a(...args)).bind( + (ecPkcs8 ? (a, ...args) => a(...args) : failing).bind( undefined, testPKCS8.bind(undefined, keys['P-521'].privateKey, alg), ), diff --git a/test-browser/jwe_asymmetric.js b/test-browser/jwe_asymmetric.js index 21e6ecdc..e0c64e1e 100644 --- a/test-browser/jwe_asymmetric.js +++ b/test-browser/jwe_asymmetric.js @@ -1,5 +1,4 @@ -import * as Bowser from 'bowser' - +import { p521 } from './helpers.js' import { generateKeyPair, FlattenedEncrypt, @@ -7,10 +6,6 @@ import { decodeProtectedHeader, } from '../dist/browser/index.js' -const browser = Bowser.parse(window.navigator.userAgent) - -const p521 = browser.engine.name !== 'WebKit' - async function test(generate, alg, assert) { const { publicKey, privateKey } = await generate() diff --git a/test-browser/jwe_symmetric.js b/test-browser/jwe_symmetric.js index cf5a4795..f69abd4e 100644 --- a/test-browser/jwe_symmetric.js +++ b/test-browser/jwe_symmetric.js @@ -1,5 +1,4 @@ -import * as Bowser from 'bowser' - +import { aes192 } from './helpers.js' import { generateSecret, FlattenedEncrypt, @@ -7,10 +6,6 @@ import { decodeProtectedHeader, } from '../dist/browser/index.js' -const browser = Bowser.parse(window.navigator.userAgent) - -const aes192 = browser.engine.name !== 'Blink' - async function test(generate, { alg, enc }, assert) { const secretKey = await generate() diff --git a/test-browser/jws.js b/test-browser/jws.js index b9cd217c..e52f9a4d 100644 --- a/test-browser/jws.js +++ b/test-browser/jws.js @@ -1,5 +1,4 @@ -import * as Bowser from 'bowser' - +import { p521 } from './helpers.js' import { generateKeyPair, generateSecret, @@ -8,10 +7,6 @@ import { decodeProtectedHeader, } from '../dist/browser/index.js' -const browser = Bowser.parse(window.navigator.userAgent) - -const p521 = browser.engine.name !== 'WebKit' - async function test(generate, alg, assert) { const generated = await generate() let privateKey diff --git a/test-browser/keylike.js b/test-browser/keylike.js index f8802e3d..72abf1da 100644 --- a/test-browser/keylike.js +++ b/test-browser/keylike.js @@ -1,11 +1,6 @@ -import * as Bowser from 'bowser' - +import { p521 } from './helpers.js' import { importJWK, exportJWK, calculateJwkThumbprint } from '../dist/browser/index.js' -const browser = Bowser.parse(window.navigator.userAgent) - -const p521 = browser.engine.name !== 'WebKit' - async function test(jwk, alg, assert) { await calculateJwkThumbprint(jwk) const keyLike = await importJWK({ ...jwk, ext: true }, alg)