Skip to content

Commit

Permalink
feat(webapp): impl pubkey tester
Browse files Browse the repository at this point in the history
close #3
  • Loading branch information
a01sa01to committed Mar 21, 2024
1 parent 7a66273 commit c3d85c2
Show file tree
Hide file tree
Showing 4 changed files with 86 additions and 1 deletion.
44 changes: 44 additions & 0 deletions .github/workflows/validate-pubkey.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name: Validate Public Key Data

on:
workflow_dispatch:
pull_request:
branches:
- main
paths:
- 'webapp/data/pubkey.json'

jobs:
check:
name: Check
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@v3
with:
version: 8.15.5

- name: Setup node
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'pnpm'

- name: Install package deps
run: pnpm install
working-directory: ./package

- name: Build package
run: pnpm build
working-directory: ./package

- name: Install webapp deps
run: pnpm install
working-directory: ./webapp

- name: Check
run: pnpm test:pubkey
working-directory: ./webapp
1 change: 1 addition & 0 deletions pnpm-workspace.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@ packages:
- 'package'
- 'webapp'
- 'worker'
- 'checker'
3 changes: 2 additions & 1 deletion webapp/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@
"fix": "eslint --ignore-path .gitignore --cache --cache-location ./node_modules/.cache/eslint --fix .",
"start": "wrangler pages dev --compatibility-date=2023-06-21 ./public",
"typecheck": "tsc",
"test": "vitest --coverage --ui"
"test": "vitest --coverage --ui --dir test",
"test:pubkey": "vitest run test/pubkey.test.ts"
},
"dependencies": {
"@octokit/auth-app": "^6.0.4",
Expand Down
39 changes: 39 additions & 0 deletions webapp/test/pubkey.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import { importKey } from '@saitamau-maximum/auth/internal'
import { expect, it } from 'vitest'

import data from '../data/pubkey.json'

it('has the correct schema', () => {
expect(data).toBeTypeOf('object')
expect(Array.isArray(data)).toBe(true)
for (const item of data) {
expect(item).toBeTypeOf('object')
expect(item).toHaveProperty('name')
expect(item).toHaveProperty('pubkey')
expect(item.name).toBeTypeOf('string')
expect(item.pubkey).toBeTypeOf('string')
}
})

it('has the correct pubkey', async () => {
for (const item of data) {
expect(
await importKey(item.pubkey, 'publicKey')
.then(() => true)
.catch(() => false),
).toBeTruthy()
expect(
await importKey(item.pubkey, 'privateKey')
.then(() => true)
.catch(() => false),
).toBeFalsy()
expect(
await importKey(item.pubkey, 'symmetric')
.then(() => true)
.catch(() => false),
).toBeFalsy()
const key = await importKey(item.pubkey, 'publicKey')
expect(key.algorithm.name).toBe('ECDSA')
expect(key.usages).toContain('verify')
}
})

0 comments on commit c3d85c2

Please sign in to comment.