session.test.ts38 lines · main
1import { describe, expect, test } from 'bun:test';
2
3import { extractSessionHandle } from './session.js';
4
5describe('extractSessionHandle (Phase 2)', () => {
6 test('reads x-briven-session-handle header', () => {
7 const headers = new Headers({
8 'x-briven-session-handle': 'sh_abc123',
9 });
10 expect(extractSessionHandle({ headers })).toBe('sh_abc123');
11 });
12
13 test('reads sAccessToken cookie', () => {
14 const headers = new Headers({
15 cookie: 'other=1; sAccessToken=sh_from_cookie; path=x',
16 });
17 expect(extractSessionHandle({ headers })).toBe('sh_from_cookie');
18 });
19
20 test('decodes URI-encoded cookie', () => {
21 const headers = new Headers({
22 cookie: `sAccessToken=${encodeURIComponent('sh_a+b')}`,
23 });
24 expect(extractSessionHandle({ headers })).toBe('sh_a+b');
25 });
26
27 test('prefers header over cookie', () => {
28 const headers = new Headers({
29 'x-briven-session-handle': 'sh_header',
30 cookie: 'sAccessToken=sh_cookie',
31 });
32 expect(extractSessionHandle({ headers })).toBe('sh_header');
33 });
34
35 test('returns null when missing', () => {
36 expect(extractSessionHandle({ headers: new Headers() })).toBeNull();
37 });
38});