feat: add allowed Linear API operations to MCP config
This commit is contained in:
@@ -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')
|
||||
})
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user