Skip to content

Commit 76e1c13

Browse files
committed
upgrade deps; restructure tests
1 parent 096a585 commit 76e1c13

File tree

3 files changed

+19
-21
lines changed

3 files changed

+19
-21
lines changed

deps.ts

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
11
export {
2-
encode as b64Encode,
32
decode as b64Decode,
4-
} from 'https://deno.land/std@0.152.0/encoding/base64.ts'
3+
encode as b64Encode,
4+
} from 'https://deno.land/std@0.181.0/encoding/base64.ts'
55

66
export {
7-
encode as safeEncode,
87
decode as safeDecode,
9-
} from 'https://esm.sh/url-safe-base64@1.2.0'
8+
encode as safeEncode,
9+
} from 'https://esm.sh/url-safe-base64@1.3.0'
1010

1111
export {
12+
type Cookie,
1213
getCookies,
1314
setCookie,
14-
type Cookie,
15-
} from 'https://deno.land/std@0.150.0/http/cookie.ts'
15+
} from 'https://deno.land/std@0.181.0/http/cookie.ts'
16+
17+
export { assertEquals } from 'https://deno.land/std@0.181.0/testing/asserts.ts'

index.ts

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { type Cookie, setCookie, getCookies } from './deps.ts'
1+
import { type Cookie, getCookies, setCookie } from './deps.ts'
22
import { createKey, sign, verify } from './utils.ts'
33

44
/**
@@ -31,15 +31,11 @@ const cookieVerify = async (input: string, secret: string) => {
3131
// get the signature and raw data
3232
try {
3333
const inputArr = input.split('.')
34-
let data, signature = ''
3534

36-
// if we have more '.'
37-
if (inputArr.length !== 3) {
38-
data = inputArr.slice(0, -2).join('.')
39-
signature = inputArr.at(-2)!
40-
} else {
41-
[data, signature] = inputArr
42-
}
35+
const data = inputArr.slice(0, -1).join('.')
36+
const signature = inputArr.at(-1)
37+
38+
if (!signature) throw Error('Invalid input: Bad data')
4339

4440
return await verify(key, signature, data)
4541
} catch (_err) {
@@ -62,7 +58,7 @@ const createSignedCookie = async (
6258
cookie_name: string,
6359
cookie_value: string,
6460
secret: string,
65-
opts: CookieOptions
61+
opts: CookieOptions = { path: '/' }
6662
) => {
6763
const value = await cookieSign(cookie_value, secret)
6864

@@ -93,7 +89,7 @@ const verifySignedCookie = async (
9389
) => {
9490
const cookie = getCookies(headers)[cookie_name]
9591

96-
if (cookie && await cookieVerify(cookie, secret)) {
92+
if (cookie && (await cookieVerify(cookie, secret))) {
9793
return cookie
9894
}
9995
return false

tests/index.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { assertEquals } from 'https://deno.land/std@0.152.0/testing/asserts.ts'
1+
import { assertEquals } from '../deps.ts'
22
import {
33
cookieSign,
44
cookieVerify,
@@ -8,9 +8,9 @@ import {
88

99
// holds all cookie operations results
1010
const cookies_res = {
11-
hello_super_secret: 'hello.gsSaKanhysk-CuNkIJhUWsHItAOcFZbrNNTa95qCfAE.',
12-
id_1_super_secret: '1.GA7yYwRpQqUvy5YbaBCGljYgC-s2VCguiN6jhjPJDNo.',
13-
id_1_extra_super_secret: 'id=1.GA7yYwRpQqUvy5YbaBCGljYgC-s2VCguiN6jhjPJDNo.; HttpOnly; Path=/',
11+
hello_super_secret: await cookieSign('hello', 'super_secret'),
12+
id_1_super_secret: await cookieSign('1', 'super_secret'),
13+
id_1_extra_super_secret: `id=${await cookieSign('1', 'super_secret')}; HttpOnly; Path=/`,
1414
}
1515

1616
Deno.test('cookie testing', async (t) => {

0 commit comments

Comments
 (0)