cli: test for signed-integrity gen-keypair action (ref. #66)

merge-requests/23/head
Michał 'rysiek' Woźniak 2022-12-15 17:29:36 +00:00
rodzic a6985e8521
commit 7858687e5b
1 zmienionych plików z 62 dodań i 1 usunięć

Wyświetl plik

@ -3,7 +3,8 @@ import {
assertThrows,
assertRejects,
assertEquals,
assertStringIncludes
assertStringIncludes,
assertObjectMatch
} from "https://deno.land/std@0.167.0/testing/asserts.ts";
// this needs to be the same as the pubkey in:
@ -271,3 +272,63 @@ Deno.test("gen-integrity signs the data correctly", async () => {
jwt['./__denotests__/mocks/hello.txt'],
pubkey))
})
Deno.test("get-pubkey works correctly", async () => {
const bi = await import('../../plugins/signed-integrity/cli.js')
const gp = bi.actions["get-pubkey"]
assertRejects(gp.run, Error, "No keyfile provided.")
assertRejects(async ()=>{
await gp.run('no-such-file')
}, Error, "No such file or directory")
assertRejects(async ()=>{
await gp.run(['no-such-file'])
}, Error, "No such file or directory")
assertEquals(
await gp.run('./__denotests__/mocks/keyfile.json'),
'{"kty":"EC","crv":"P-384","alg":"ES384","x":"rrFawYTuFo8ZjoDxaztUU-c_RAwjw1Y9Tp3j4nH4WsY2Zlizf40Mvz_0BUkVVZCw","y":"HaFct6PVK2CQ7ZT2SHClnN-knmGfjY_DFwc6qrAu1s0DFZ8fEUuNdmkTlj9T4NQw","key_ops":["verify"],"ext":true}'
)
assertEquals(
await gp.run(['./__denotests__/mocks/keyfile.json', 'irrelevant']),
'{"kty":"EC","crv":"P-384","alg":"ES384","x":"rrFawYTuFo8ZjoDxaztUU-c_RAwjw1Y9Tp3j4nH4WsY2Zlizf40Mvz_0BUkVVZCw","y":"HaFct6PVK2CQ7ZT2SHClnN-knmGfjY_DFwc6qrAu1s0DFZ8fEUuNdmkTlj9T4NQw","key_ops":["verify"],"ext":true}'
)
});
Deno.test("gen-keypair works correctly", async () => {
const bi = await import('../../plugins/signed-integrity/cli.js')
const gk = bi.actions["gen-keypair"]
const keypair = JSON.parse(await gk.run())
assert('privateKey' in keypair)
assert('x' in keypair.privateKey)
assert('y' in keypair.privateKey)
assert('d' in keypair.privateKey)
assertObjectMatch(
keypair.privateKey,
{
kty: "EC",
crv: "P-384",
alg: "ES384",
key_ops: [
"sign"
],
ext: true
}
)
assert('publicKey' in keypair)
assert('x' in keypair.publicKey)
assert('y' in keypair.publicKey)
assert(!('d' in keypair.publicKey))
assertObjectMatch(
keypair.publicKey,
{
kty: "EC",
crv: "P-384",
alg: "ES384",
key_ops: [
"verify"
],
ext: true
}
)
assert((keypair.privateKey.x == keypair.publicKey.x))
assert((keypair.privateKey.y == keypair.publicKey.y))
});