feat: add allowed Linear API operations to MCP config

This commit is contained in:
Do Siki
2025-09-05 03:10:17 +02:00
parent 7e7d3fb1cc
commit b6365543ef
36 changed files with 14648 additions and 1 deletions
+85
View File
@@ -0,0 +1,85 @@
import { GET, HEAD } from './route'
import { NextRequest } from 'next/server'
// Mock the process object for tests
const mockProcess = {
uptime: jest.fn().mockReturnValue(1234),
env: {
npm_package_version: '1.0.0',
NODE_ENV: 'test',
},
}
const originalProcess = global.process
beforeEach(() => {
global.process = { ...originalProcess, ...mockProcess } as any
})
afterEach(() => {
global.process = originalProcess
})
describe('/api/health', () => {
describe('GET request', () => {
it('should return successful health status with required data', async () => {
const response = await GET()
// Check response status
expect(response.status).toBe(200)
// Get JSON data
const data = await response.json()
// Verify required fields
expect(data).toHaveProperty('status', 'ok')
expect(data).toHaveProperty('timestamp')
expect(data).toHaveProperty('uptime')
expect(data).toHaveProperty('version')
expect(data).toHaveProperty('environment')
// Verify timestamp is a valid ISO string
expect(() => new Date(data.timestamp)).not.toThrow()
expect(data.timestamp).toMatch(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/)
// Verify uptime matches mock
expect(data.uptime).toBe(1234)
// Verify version
expect(data.version).toBe('1.0.0')
})
it('should include correct Cache-Control headers', async () => {
const response = await GET()
expect(response.headers.get('Cache-Control')).toBe('no-cache, no-store, must-revalidate')
expect(response.headers.get('Pragma')).toBe('no-cache')
expect(response.headers.get('Expires')).toBe('0')
})
it('should handle errors gracefully', async () => {
// Temporarily break process.env to simulate error
global.process.env = undefined as any
const response = await GET()
expect(response.status).toBe(503)
const data = await response.json()
expect(data.status).toBe('error')
expect(data).toHaveProperty('timestamp')
expect(data).toHaveProperty('message', 'Health check failed')
// Restore process.env
global.process.env = originalProcess.env
})
})
describe('HEAD request', () => {
it('should return 200 status without body', async () => {
const response = await HEAD()
expect(response.status).toBe(200)
expect(response.headers.get('Cache-Control')).toBe('no-cache, no-store, must-revalidate')
})
})
})