mirror of
https://github.com/OpenSquawk/OpenSquawk
synced 2026-08-08 02:25:36 +08:00
test: expand coverage for core backend features
This commit is contained in:
85
tests/server/bridgeTelemetry.test.ts
Normal file
85
tests/server/bridgeTelemetry.test.ts
Normal file
@@ -0,0 +1,85 @@
|
||||
import { describe, it } from 'node:test'
|
||||
import assert from 'node:assert/strict'
|
||||
|
||||
import { getBridgeLog, logBridgeEvent } from '~~/server/utils/bridgeLog'
|
||||
import { getBridgeTokenFromHeader, normalizeBridgeToken } from '~~/server/utils/bridge'
|
||||
import { flightlabTelemetryStore } from '~~/server/utils/flightlabTelemetry'
|
||||
|
||||
describe('bridge token handling', () => {
|
||||
it('normalizes valid tokens and rejects invalid inputs', () => {
|
||||
assert.equal(normalizeBridgeToken(' bridge-token-123 '), 'bridge-token-123')
|
||||
assert.equal(normalizeBridgeToken('abc'), null)
|
||||
assert.equal(normalizeBridgeToken(' '.repeat(10)), null)
|
||||
assert.equal(normalizeBridgeToken(1234), null)
|
||||
assert.equal(normalizeBridgeToken('x'.repeat(257)), null)
|
||||
})
|
||||
|
||||
it('reads and normalizes x-bridge-token from request headers', () => {
|
||||
const event = {
|
||||
node: {
|
||||
req: {
|
||||
headers: {
|
||||
'x-bridge-token': ' live-bridge-token ',
|
||||
},
|
||||
},
|
||||
},
|
||||
} as any
|
||||
|
||||
assert.equal(getBridgeTokenFromHeader(event), 'live-bridge-token')
|
||||
})
|
||||
})
|
||||
|
||||
describe('bridge log store', () => {
|
||||
it('keeps only the latest 200 entries and supports since filtering', () => {
|
||||
const token = `tok-${Date.now()}-${Math.random().toString(36).slice(2)}`
|
||||
|
||||
for (let i = 0; i < 205; i++) {
|
||||
logBridgeEvent(token, {
|
||||
endpoint: '/api/bridge/data',
|
||||
method: 'POST',
|
||||
statusCode: 200,
|
||||
color: 'green',
|
||||
summary: `entry-${i}`,
|
||||
})
|
||||
}
|
||||
|
||||
const all = getBridgeLog(token)
|
||||
assert.equal(all.length, 200)
|
||||
assert.equal(all[0]!.summary, 'entry-5')
|
||||
assert.equal(all[199]!.summary, 'entry-204')
|
||||
assert.equal(all[0]!.id < all[199]!.id, true)
|
||||
|
||||
const sinceId = all[149]!.id
|
||||
const sinceEntries = getBridgeLog(token, sinceId)
|
||||
assert.equal(sinceEntries.length, 50)
|
||||
assert.equal(sinceEntries.every((entry) => entry.id > sinceId), true)
|
||||
})
|
||||
})
|
||||
|
||||
describe('flightlab telemetry store', () => {
|
||||
it('stores latest telemetry and notifies listeners', () => {
|
||||
const userId = `user-${Date.now()}`
|
||||
const received: any[] = []
|
||||
|
||||
const unsubscribe = flightlabTelemetryStore.subscribe((incomingUserId, data) => {
|
||||
if (incomingUserId === userId) {
|
||||
received.push(data)
|
||||
}
|
||||
})
|
||||
|
||||
flightlabTelemetryStore.update(userId, { IAS: 121, ALT: 4500 })
|
||||
const latest = flightlabTelemetryStore.get(userId)
|
||||
|
||||
assert.equal(latest?.IAS, 121)
|
||||
assert.equal(latest?.ALT, 4500)
|
||||
assert.equal(typeof latest?.timestamp, 'number')
|
||||
assert.equal(received.length, 1)
|
||||
|
||||
const callsBeforeUnsubscribe = received.length
|
||||
unsubscribe()
|
||||
flightlabTelemetryStore.update(userId, { IAS: 130 })
|
||||
|
||||
assert.equal(flightlabTelemetryStore.get(userId)?.IAS, 130)
|
||||
assert.equal(received.length, callsBeforeUnsubscribe)
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user