test: refactor browser tests, enable P-521 in current webkit

This commit is contained in:
Filip Skokan 2022-03-18 10:38:30 +01:00
parent 3ffb52b19e
commit a0c89eafba
7 changed files with 32 additions and 75 deletions

View file

@ -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: "",

7
test-browser/helpers.js Normal file
View file

@ -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'

View file

@ -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),
),

View file

@ -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()

View file

@ -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()

View file

@ -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

View file

@ -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)