Spaces:
Sleeping
Sleeping
Download tests/github-sync.spec.ts from tao-shen/HuggingClaw-MissionControl: direct link, hf CLI and curl.
- Browser
- Download file 2.34 kB
-
https://huggingface.co/spaces/tao-shen/HuggingClaw-MissionControl/resolve/main/tests/github-sync.spec.ts
- Command line
-
hf download hf://spaces/tao-shen/HuggingClaw-MissionControl/tests/github-sync.spec.ts
-
curl -L -o github-sync.spec.ts https://huggingface.co/spaces/tao-shen/HuggingClaw-MissionControl/resolve/main/tests/github-sync.spec.ts
2.34 kB
| import { test, expect } from '@playwright/test' | |
| import { API_KEY_HEADER } from './helpers' | |
| test.describe('GitHub Sync API', () => { | |
| // ββ GET /api/github ββββββββββββββββββββββββββββ | |
| test('GET /api/github?action=issues requires auth', async ({ request }) => { | |
| const res = await request.get('/api/github?action=issues&repo=owner/repo') | |
| expect(res.status()).toBe(401) | |
| }) | |
| test('GET /api/github?action=issues returns error without GITHUB_TOKEN', async ({ request }) => { | |
| const res = await request.get('/api/github?action=issues&repo=owner/repo', { | |
| headers: API_KEY_HEADER, | |
| }) | |
| // Either 400 (token not configured) or 500 (API error) are acceptable | |
| expect([400, 500]).toContain(res.status()) | |
| const body = await res.json() | |
| expect(body.error).toBeDefined() | |
| }) | |
| test('GET /api/github rejects invalid action', async ({ request }) => { | |
| const res = await request.get('/api/github?action=invalid', { | |
| headers: API_KEY_HEADER, | |
| }) | |
| expect(res.status()).toBe(400) | |
| const body = await res.json() | |
| expect(body.error).toContain('Unknown action') | |
| }) | |
| // ββ POST /api/github βββββββββββββββββββββββββββ | |
| test('POST /api/github with action=status returns sync history', async ({ request }) => { | |
| const res = await request.post('/api/github', { | |
| headers: API_KEY_HEADER, | |
| data: { action: 'status' }, | |
| }) | |
| expect(res.status()).toBe(200) | |
| const body = await res.json() | |
| expect(body.syncs).toBeDefined() | |
| expect(Array.isArray(body.syncs)).toBe(true) | |
| }) | |
| test('POST /api/github with action=sync requires repo param', async ({ request }) => { | |
| const res = await request.post('/api/github', { | |
| headers: API_KEY_HEADER, | |
| data: { action: 'sync' }, | |
| }) | |
| // Should fail because no repo and no GITHUB_DEFAULT_REPO | |
| expect([400, 500]).toContain(res.status()) | |
| }) | |
| test('POST /api/github rejects invalid repo format', async ({ request }) => { | |
| const res = await request.post('/api/github', { | |
| headers: API_KEY_HEADER, | |
| data: { action: 'sync', repo: 'invalid-no-slash' }, | |
| }) | |
| expect(res.status()).toBe(400) | |
| const body = await res.json() | |
| expect(body.error || body.details).toBeDefined() | |
| }) | |
| }) | |