1
1
import { Elysia , t } from 'elysia'
2
+ import { importJWK } from 'jose'
2
3
import { jwt } from '../src'
3
4
4
5
import { describe , expect , it } from 'bun:test'
5
6
6
- const req = ( path : string ) => new Request ( `http://localhost${ path } ` )
7
7
const post = ( path : string , body = { } ) =>
8
8
new Request ( `http://localhost${ path } ` , {
9
9
method : 'POST' ,
@@ -14,8 +14,22 @@ const post = (path: string, body = {}) =>
14
14
} )
15
15
16
16
describe ( 'Static Plugin' , ( ) => {
17
+ async function signTest ( ) {
18
+ const name = 'Shirokami'
19
+
20
+ const _sign = post ( '/sign' , { name } )
21
+ await _sign . text ( )
22
+
23
+ const _verified = post ( '/verify' , { name } )
24
+ const signed = ( await _verified . json ( ) ) as {
25
+ name : string
26
+ }
27
+
28
+ expect ( name ) . toBe ( signed . name )
29
+ }
30
+
17
31
it ( 'sign JWT' , async ( ) => {
18
- const app = new Elysia ( )
32
+ new Elysia ( )
19
33
. use (
20
34
jwt ( {
21
35
name : 'jwt' ,
@@ -31,16 +45,31 @@ describe('Static Plugin', () => {
31
45
body : t . Object ( { name : t . String ( ) } )
32
46
} )
33
47
34
- const name = 'Shirokami'
35
-
36
- const _sign = post ( '/sign' , { name } )
37
- const token = await _sign . text ( )
48
+ await signTest ( )
49
+ } )
50
+ it ( 'sign JWT (asymmetric)' , async ( ) => {
51
+ const crv = 'Ed25519'
52
+ const d = 'N3cOzsFZwiIbtNiBYQP9bcbcTIdkITC8a4iRslrbW7Q'
53
+ const x = 'RjnTe-mqZcVls6SQ5CgW0X__jRaa-Quj5HBDREzVLhc'
54
+ const kty = 'OKP'
38
55
39
- const _verified = post ( '/verify' , { name } )
40
- const signed = ( await _verified . json ( ) ) as {
41
- name : string
42
- }
56
+ new Elysia ( )
57
+ . use (
58
+ jwt ( {
59
+ name : 'jwt' ,
60
+ privateKey : await importJWK ( { crv, d, x, kty } , 'EdDSA' ) ,
61
+ publicKey : await importJWK ( { crv, x, kty } , 'EdDSA' )
62
+ } )
63
+ )
64
+ . post ( '/validate' , ( { jwt, body } ) => jwt . sign ( body ) , {
65
+ body : t . Object ( {
66
+ name : t . String ( )
67
+ } )
68
+ } )
69
+ . post ( '/validate' , ( { jwt, body : { name } } ) => jwt . verify ( name ) , {
70
+ body : t . Object ( { name : t . String ( ) } )
71
+ } )
43
72
44
- expect ( name ) . toBe ( signed . name )
45
- } )
73
+ await signTest ( )
74
+ } )
46
75
} )
0 commit comments