0
Fork 0
mirror of https://github.com/logto-io/logto.git synced 2025-02-03 21:48:55 -05:00
logto/packages/integration-tests/src/utils.ts

32 lines
1.3 KiB
TypeScript

import { assert } from '@silverhand/essentials';
export const generateName = () => crypto.randomUUID();
export const generateUserId = () => crypto.randomUUID();
export const generateUsername = () => `usr_${crypto.randomUUID().replaceAll('-', '_')}`;
export const generatePassword = () => `pwd_${crypto.randomUUID()}`;
export const generateResourceName = () => `res_${crypto.randomUUID()}`;
export const generateResourceIndicator = () => `https://${crypto.randomUUID()}.logto.io`;
export const generateEmail = () => `${crypto.randomUUID().toLowerCase()}@logto.io`;
export const generateScopeName = () => `sc:${crypto.randomUUID()}`;
export const generateRoleName = () => `role_${crypto.randomUUID()}`;
export const generatePhone = () => {
const array = new Uint32Array(1);
return crypto.getRandomValues(array).join('');
};
export const waitFor = async (ms: number) =>
new Promise((resolve) => {
setTimeout(resolve, ms);
});
export const getAccessTokenPayload = (accessToken: string): Record<string, unknown> => {
const payloadPart = accessToken.split('.')[1];
assert(typeof payloadPart === 'string', new Error('Invalid access token'));
const payload = Buffer.from(payloadPart, 'base64').toString();
// eslint-disable-next-line no-restricted-syntax
return JSON.parse(payload) as Record<string, unknown>;
};