Correspondents/__tests__/flags/image-uploads.disabled.test.ts
Nicholai dc9673005b fix: embed Morgan system prompt for Cloudflare deployment
Morgan's system prompt is now generated at build time and embedded directly
in the code, making it available in Cloudflare Worker environments where
file system access isn't available.

Changes:
- Add scripts/generate-morgan-prompt.js to generate TypeScript constant from markdown
- Generate src/lib/agents/morgan-system-prompt.ts with full Fortura Agent Bundle
- Update agent definitions to import and use the embedded constant
- Update package.json build scripts to generate prompt before building
- Remove runtime file system access (readFileSync) that failed on Cloudflare

This ensures Morgan agent has full system prompt capabilities on all deployments.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-16 14:32:51 -07:00

70 lines
2.2 KiB
TypeScript

import { describe, it, expect, beforeEach, vi } from 'vitest'
import { POST } from '@/app/api/chat/route'
import { NextRequest } from 'next/server'
import { resetFlagsCache } from '@/lib/flags'
describe('Image Uploads - Disabled Flag', () => {
beforeEach(() => {
resetFlagsCache()
vi.clearAllMocks()
process.env.IMAGE_UPLOADS_ENABLED = 'false'
process.env.OPENROUTER_API_KEY = 'test-key'
process.env.OPENROUTER_MODEL = 'openai/gpt-oss-120b'
})
it('rejects requests with images when flag is disabled', async () => {
const request = new NextRequest('http://localhost:3000/api/chat', {
method: 'POST',
body: JSON.stringify({
message: 'Here is an image',
agentId: 'agent-1',
sessionId: 'test-session',
timestamp: new Date().toISOString(),
images: ['data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg=='],
}),
})
const response = await POST(request)
const data = await response.json()
expect(response.status).toBe(403)
expect(data.error).toBe('Image uploads are not enabled')
expect(data.hint).toContain('administrator')
})
it('accepts requests without images when flag is disabled', async () => {
const request = new NextRequest('http://localhost:3000/api/chat', {
method: 'POST',
body: JSON.stringify({
message: 'Text only',
agentId: 'agent-1',
sessionId: 'test-session',
timestamp: new Date().toISOString(),
}),
})
const response = await POST(request)
// Should succeed (streaming or plain, depending on setup)
expect(response.status).toBe(200)
})
it('allows empty images array when flag is disabled', async () => {
const request = new NextRequest('http://localhost:3000/api/chat', {
method: 'POST',
body: JSON.stringify({
message: 'Text with empty images',
agentId: 'agent-1',
sessionId: 'test-session',
timestamp: new Date().toISOString(),
images: [],
}),
})
const response = await POST(request)
// Empty images array should be allowed
expect(response.status).toBe(200)
})
})