mirror of
https://github.com/saltbo/zpan.git
synced 2026-09-21 04:59:47 +08:00
* ci: parallelize and isolate test suites * ci: avoid unavailable Playwright video runtime * ci: shard coverage and cache docker smoke * ci: balance Playwright shards by test * ci: smoke test the CLI container * ci: enforce merged coverage thresholds * ci: ratchet canonical coverage baseline * ci: make coverage ratchet lossless * ci: organize parallel gates by responsibility * perf(ci): reduce total runner time * perf(ci): balance runner cost and latency * perf(ci): suppress passing test logs * fix(test): make coverage sorting proof deterministic * perf(docker): exclude test-only build inputs * perf(ci): scope Docker smokes to packaging changes * refactor(test): enforce fast test boundaries * test: isolate coverage ownership * perf(test): run backend projects concurrently * perf(ci): separate test layers by runtime * perf(test): separate integration boundaries * perf(ci): prioritize test runners * docs(ci): clarify package scheduling * test: restore shared Cloudflare mocks * fix(preview): isolate Cloudflare E2E build config * fix(auth): bind preview sessions to request origin * revert: remove ineffective preview auth workaround * fix(auth): stop signing JWTs on session reads
65 lines
2.0 KiB
TypeScript
65 lines
2.0 KiB
TypeScript
import { beforeEach, describe, expect, it, vi } from 'vitest'
|
|
import { createTestApp } from '../test/setup.js'
|
|
import { reportInstanceTelemetry } from '../usecases/site/instance-telemetry'
|
|
|
|
vi.mock('../usecases/site/instance-telemetry', () => ({
|
|
INSTANCE_TELEMETRY_CRON: '0 */12 * * *',
|
|
reportInstanceTelemetry: vi.fn(),
|
|
}))
|
|
|
|
describe('POST /api/internal/instance-telemetry/report', () => {
|
|
beforeEach(() => {
|
|
vi.mocked(reportInstanceTelemetry).mockReset()
|
|
vi.mocked(reportInstanceTelemetry).mockResolvedValue({ reported: true })
|
|
})
|
|
|
|
it('returns 404 when the internal token is not configured', async () => {
|
|
const { app } = await createTestApp()
|
|
|
|
const res = await app.request('/api/internal/instance-telemetry/report', {
|
|
method: 'POST',
|
|
headers: { Authorization: 'Bearer test-token' },
|
|
})
|
|
|
|
expect(res.status).toBe(404)
|
|
expect(reportInstanceTelemetry).not.toHaveBeenCalled()
|
|
})
|
|
|
|
it('rejects requests with the wrong token', async () => {
|
|
const { app } = await createTestApp({ ZPAN_INTERNAL_API_TOKEN: 'test-token' })
|
|
|
|
const res = await app.request('/api/internal/instance-telemetry/report', {
|
|
method: 'POST',
|
|
headers: { Authorization: 'Bearer wrong-token' },
|
|
})
|
|
|
|
expect(res.status).toBe(401)
|
|
expect(reportInstanceTelemetry).not.toHaveBeenCalled()
|
|
})
|
|
|
|
it('reports telemetry with the configured internal token', async () => {
|
|
const { app, deps } = await createTestApp({
|
|
ZPAN_INTERNAL_API_TOKEN: 'test-token',
|
|
})
|
|
|
|
const res = await app.request('/api/internal/instance-telemetry/report', {
|
|
method: 'POST',
|
|
headers: { Authorization: 'Bearer test-token' },
|
|
})
|
|
|
|
expect(res.status).toBe(200)
|
|
expect(await res.json()).toEqual({ reported: true })
|
|
expect(reportInstanceTelemetry).toHaveBeenCalledWith(deps, {
|
|
config: {
|
|
allowIp: true,
|
|
},
|
|
cron: '0 */12 * * *',
|
|
trigger: 'deploy',
|
|
runtime: expect.objectContaining({
|
|
runtime: 'node',
|
|
platform: 'node',
|
|
}),
|
|
})
|
|
})
|
|
})
|