import type { Page } from '@playwright/test'; export async function getUserCode(page: Page, clientId: string, clientSecret: string): Promise { return page.request .post('/api/oidc/device/authorize', { headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, form: { client_id: clientId, client_secret: clientSecret, scope: 'openid profile email' } }) .then((r) => r.json()) .then((r) => r.user_code); } export async function exchangeCode(page: Page, params: Record): Promise<{access_token?: string, token_type?: string, expires_in?: number, error?: string}> { return page.request .post('/api/oidc/token', { headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, form: params, }) .then((r) => r.json()); } export async function getClientAssertion(page: Page, data: {issuer: string, audience: string, subject: string}): Promise { return page.request .post('/api/externalidp/sign', { data: { iss: data.issuer, aud: data.audience, sub: data.subject, }, }) .then((r) => r.text()); }