mirror of
https://github.com/twentyhq/twenty
synced 2026-04-21 21:47:38 +00:00
31 lines
919 B
TypeScript
31 lines
919 B
TypeScript
|
|
import { type Page } from '@playwright/test';
|
||
|
|
|
||
|
|
const decodeToken = (cookie: any) =>
|
||
|
|
JSON.parse(decodeURIComponent(cookie.value)).accessOrWorkspaceAgnosticToken
|
||
|
|
?.token;
|
||
|
|
|
||
|
|
const decodePayload = (jwt: string) =>
|
||
|
|
JSON.parse(Buffer.from(jwt.split('.')[1], 'base64url').toString());
|
||
|
|
|
||
|
|
|
||
|
|
export const getAccessAuthToken = async (page: Page) => {
|
||
|
|
const storageState = await page.context().storageState();
|
||
|
|
const tokenCookies = storageState.cookies.filter(
|
||
|
|
(cookie) => cookie.name === 'tokenPair',
|
||
|
|
);
|
||
|
|
if (!tokenCookies) {
|
||
|
|
throw new Error('No auth cookie found');
|
||
|
|
}
|
||
|
|
const accessTokenCookie = tokenCookies.find(
|
||
|
|
(cookie) => {
|
||
|
|
const payload = decodePayload(decodeToken(cookie) ?? '');
|
||
|
|
return payload.type === 'ACCESS';
|
||
|
|
}
|
||
|
|
);
|
||
|
|
|
||
|
|
const token = JSON.parse(decodeURIComponent(accessTokenCookie?.value ?? '')).accessOrWorkspaceAgnosticToken
|
||
|
|
.token;
|
||
|
|
|
||
|
|
return { authToken: token };
|
||
|
|
};
|