jwk.pages.dev/tests/jwk.test.ts

43 lines
2.3 KiB
TypeScript

import { test, expect } from "@playwright/test";
// prettier-ignore
const properties = {
"ECDSA (ES256)": ["alg", "use", "kid", "kty", "crv", "x", "y", "d"],
"ECDSA (ES384)": ["alg", "use", "kid", "kty", "crv", "x", "y", "d"],
"ECDSA (ES512)": ["alg", "use", "kid", "kty", "crv", "x", "y", "d"],
"RSASSA-PKCS1-v1_5 (RS256)": ["alg", "use", "kid", "kty", "e", "n", "d", "p", "q", "dp", "dq", "qi"],
"RSASSA-PKCS1-v1_5 (RS384)": ["alg", "use", "kid", "kty", "e", "n", "d", "p", "q", "dp", "dq", "qi"],
"RSASSA-PKCS1-v1_5 (RS512)": ["alg", "use", "kid", "kty", "e", "n", "d", "p", "q", "dp", "dq", "qi"],
"RSASSA-PSS (PS256)": ["alg", "use", "kid", "kty", "e", "n", "d", "p", "q", "dp", "dq", "qi"],
"RSASSA-PSS (PS384)": ["alg", "use", "kid", "kty", "e", "n", "d", "p", "q", "dp", "dq", "qi"],
"RSASSA-PSS (PS512)": ["alg", "use", "kid", "kty", "e", "n", "d", "p", "q", "dp", "dq", "qi"],
"ECDH-ES": ["alg", "use", "kid", "kty", "crv", "x", "y", "d"],
"ECDH-ES+A128KW": ["alg", "use", "kid", "kty", "crv", "x", "y", "d"],
"ECDH-ES+A192KW": ["alg", "use", "kid", "kty", "crv", "x", "y", "d"],
"ECDH-ES+A256KW": ["alg", "use", "kid", "kty", "crv", "x", "y", "d"],
"RSA-OAEP": ["alg", "use", "kid", "kty", "e", "n", "d", "p", "q", "dp", "dq", "qi"],
"RSA-OAEP-256": ["alg", "use", "kid", "kty", "e", "n", "d", "p", "q", "dp", "dq", "qi"],
"RSA-OAEP-384": ["alg", "use", "kid", "kty", "e", "n", "d", "p", "q", "dp", "dq", "qi"],
"RSA-OAEP-512": ["alg", "use", "kid", "kty", "e", "n", "d", "p", "q", "dp", "dq", "qi"],
};
// prettier-ignore-end
for (const [algorithm, expected] of Object.entries(properties)) {
test(`${algorithm} has ${expected}`, async ({ page }) => {
await page.goto("/");
await page.getByLabel("Algorithm").selectOption({ label: algorithm });
await page.getByLabel("Generate").click();
const jwk = await page
.getByLabel("Private Key")
.getByText(/./)
.inputValue()
.then(JSON.parse);
for (const property of expected) {
expect(jwk).toHaveProperty(property, expect.stringMatching(/./));
}
expect(Object.keys(jwk)).toHaveLength(expected.length);
});
}