mission-control/tests/tenant-workspaces.spec.ts

46 lines
2.0 KiB
TypeScript

import { test, expect } from '@playwright/test'
import { API_KEY_HEADER } from './helpers'
test.describe('Tenant Workspace Mapping', () => {
test('GET /api/workspaces returns tenant-scoped workspaces with active workspace', async ({ request }) => {
const res = await request.get('/api/workspaces', { headers: API_KEY_HEADER })
expect(res.status()).toBe(200)
const body = await res.json()
expect(typeof body.tenant_id).toBe('number')
expect(typeof body.active_workspace_id).toBe('number')
expect(Array.isArray(body.workspaces)).toBe(true)
expect(body.workspaces.length).toBeGreaterThan(0)
const active = body.workspaces.find((w: any) => w.id === body.active_workspace_id)
expect(active).toBeDefined()
expect(active.tenant_id).toBe(body.tenant_id)
for (const workspace of body.workspaces) {
expect(workspace.tenant_id).toBe(body.tenant_id)
}
})
test('default general project still loads under workspace hierarchy', async ({ request }) => {
const projectListRes = await request.get('/api/projects?includeArchived=1', { headers: API_KEY_HEADER })
expect(projectListRes.status()).toBe(200)
const projectListBody = await projectListRes.json()
const general = projectListBody.projects.find((p: any) => p.slug === 'general')
expect(general).toBeDefined()
expect(typeof general.workspace_id).toBe('number')
const getProjectRes = await request.get(`/api/projects/${general.id}`, { headers: API_KEY_HEADER })
expect(getProjectRes.status()).toBe(200)
const getProjectBody = await getProjectRes.json()
expect(getProjectBody.project.slug).toBe('general')
const workspacesRes = await request.get('/api/workspaces', { headers: API_KEY_HEADER })
const workspacesBody = await workspacesRes.json()
const parentWorkspace = workspacesBody.workspaces.find((w: any) => w.id === getProjectBody.project.workspace_id)
expect(parentWorkspace).toBeDefined()
expect(parentWorkspace.tenant_id).toBe(workspacesBody.tenant_id)
})
})