-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.test.ts
More file actions
71 lines (62 loc) · 2 KB
/
server.test.ts
File metadata and controls
71 lines (62 loc) · 2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import { describe, it, expect } from 'vitest'
import { createServerCallback } from '../server'
import type { ServerPayload } from '../types'
describe('createServerCallback (server entry)', () => {
const config = {
encryptionKey: 'test-key',
}
it('should round-trip data via generateUrl and parse without using window', () => {
const { parse, generateUrl } = createServerCallback(config)
const testActions: ServerPayload[] = [
{
type: 'signIn',
server: {
connectPluginVersion: '2024.05.06.1049',
connectState: 'CONNECTED',
guid: 'test-guid',
registered: false,
state: 'ENOCONN',
},
},
]
const targetUrl = 'http://test.com/c'
const sendType = 'forUpc'
const sender = 'http://sender.com'
const generatedUrl = generateUrl(targetUrl, testActions, sendType, sender)
const url = new URL(generatedUrl)
const encryptedData = url.hash.startsWith('#data=')
? url.hash.slice('#data='.length)
: url.searchParams.get('data') || ''
const decrypted = parse(encryptedData)
expect(decrypted).toEqual({
actions: testActions,
sender,
type: sendType,
})
})
it('should default sender to an empty string when generateUrl omits it', () => {
const { parse, generateUrl } = createServerCallback(config)
const testActions: ServerPayload[] = [
{
type: 'signIn',
server: {
connectPluginVersion: '2024.05.06.1049',
connectState: 'CONNECTED',
guid: 'test-guid',
registered: false,
state: 'ENOCONN',
},
},
]
const generatedUrl = generateUrl('http://test.com/c', testActions, 'forUpc')
const url = new URL(generatedUrl)
const encryptedData = url.hash.startsWith('#data=')
? url.hash.slice('#data='.length)
: url.searchParams.get('data') || ''
expect(parse(encryptedData)).toEqual({
actions: testActions,
sender: '',
type: 'forUpc',
})
})
})