fix: resolve WebSocket failure and crypto.randomUUID crash on HTTP/LXC
- Replace crypto.randomUUID() with a polyfill (generateUUID) that falls back to crypto.getRandomValues or Math.random — fixes crash on HTTP non-secure contexts where randomUUID is unavailable - Fix WebSocket URL hardcoding port 8000 — use window.location.host so connections go through Nginx proxy in Docker/LXC instead of bypassing it - Add /api/v1/status/ws/ location block in nginx.conf with WebSocket upgrade headers (must precede /api/ to avoid missing Upgrade header)
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
import { describe, it, expect, vi, afterEach } from 'vitest'
|
||||
import { generateUUID } from '../uuid'
|
||||
|
||||
const UUID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i
|
||||
|
||||
describe('generateUUID', () => {
|
||||
afterEach(() => {
|
||||
vi.restoreAllMocks()
|
||||
})
|
||||
|
||||
it('returns a valid v4 UUID using crypto.randomUUID when available', () => {
|
||||
const id = generateUUID()
|
||||
expect(id).toMatch(UUID_REGEX)
|
||||
})
|
||||
|
||||
it('returns a valid v4 UUID using crypto.getRandomValues fallback', () => {
|
||||
vi.spyOn(crypto, 'randomUUID' as never).mockImplementation(undefined as never)
|
||||
const id = generateUUID()
|
||||
expect(id).toMatch(UUID_REGEX)
|
||||
})
|
||||
|
||||
it('generates unique IDs', () => {
|
||||
const ids = new Set(Array.from({ length: 100 }, () => generateUUID()))
|
||||
expect(ids.size).toBe(100)
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user