ghostguild-org/tests/server/api/upload-image.test.js
Jennie Robinson Faber 1e30ba23cd
Some checks are pending
Test / vitest (push) Waiting to run
Test / playwright (push) Blocked by required conditions
Test / visual (push) Blocked by required conditions
feat: add testing infrastructure — Vitest, Playwright, CI, git hooks
Add comprehensive testing covering 420 unit/handler tests across 24 Vitest
files, 9 Playwright E2E specs, accessibility scans, and visual regression.
Includes GitHub Actions CI, Husky pre-push hook, and TESTING.md docs.
2026-04-04 16:07:21 +01:00

38 lines
1.1 KiB
JavaScript

import { describe, it, expect } from 'vitest'
import { readFileSync } from 'node:fs'
import { resolve } from 'node:path'
const source = readFileSync(
resolve(import.meta.dirname, '../../../server/api/upload/image.post.js'),
'utf-8'
)
describe('upload/image.post.js source inspection', () => {
it('requires auth', () => {
expect(source).toContain('requireAuth(event)')
})
it('calls requireAuth before file processing', () => {
const authIndex = source.indexOf('requireAuth(event)')
const multipartIndex = source.indexOf('readMultipartFormData(event)')
expect(authIndex).toBeGreaterThan(-1)
expect(multipartIndex).toBeGreaterThan(-1)
expect(authIndex).toBeLessThan(multipartIndex)
})
it('validates file type is an image', () => {
expect(source).toContain("startsWith('image/')")
})
it('validates file size with a 10MB limit', () => {
expect(source).toMatch(/10\s*\*\s*1024\s*\*\s*1024/)
})
it('only allows specific image formats', () => {
expect(source).toContain('allowed_formats')
for (const fmt of ['jpg', 'png', 'webp', 'gif']) {
expect(source).toContain(fmt)
}
})
})