persona-community-5/.pnpm-store/v3/files/19/c74be156c3029f9346b1dd603fcb5764d54ac066b96348885757ed261587f96211b5c3d13894765469be336871ee2cbad5f9f4274ddacb657cedd42ecd6950
rdev-worker a1d0d1bf1c
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
build: /implement-feature community-ui --requirements 'Build the React commu...
2026-02-24 08:22:30 +00:00

157 lines
5.9 KiB
Plaintext

import { setRedoclyDomain } from '../domains';
import { RedoclyClient } from '../index';
const originalFetch = global.fetch;
describe('RedoclyClient', () => {
const REDOCLY_DOMAIN_US = 'redocly.com';
const REDOCLY_DOMAIN_EU = 'eu.redocly.com';
const REDOCLY_AUTHORIZATION_TOKEN = 'redocly-auth-token';
const testRedoclyDomain = 'redoclyDomain.com';
const testToken = 'test-token';
beforeAll(() => {
global.fetch = jest.fn(() =>
Promise.resolve({
ok: true,
json: jest.fn().mockResolvedValue({}),
} as any)
);
});
afterAll(() => {
global.fetch = originalFetch;
});
afterEach(() => {
delete process.env.REDOCLY_DOMAIN;
setRedoclyDomain('');
});
it('should resolve the US domain by default', () => {
const client = new RedoclyClient();
expect(client.domain).toBe(REDOCLY_DOMAIN_US);
});
it('should resolve domain from RedoclyDomain env', () => {
process.env.REDOCLY_DOMAIN = testRedoclyDomain;
const client = new RedoclyClient();
expect(client.domain).toBe(testRedoclyDomain);
});
it('should resolve a domain by US region', () => {
const client = new RedoclyClient('us');
expect(client.domain).toBe(REDOCLY_DOMAIN_US);
});
it('should resolve a domain by EU region', () => {
const client = new RedoclyClient('eu');
expect(client.domain).toBe(REDOCLY_DOMAIN_EU);
});
it('should resolve domain by EU region prioritizing flag over env variable', () => {
setRedoclyDomain(testRedoclyDomain);
const client = new RedoclyClient('eu');
expect(client.domain).toBe(REDOCLY_DOMAIN_EU);
});
it('should resolve domain by US region prioritizing flag over env variable', () => {
setRedoclyDomain(testRedoclyDomain);
const client = new RedoclyClient('us');
expect(client.domain).toBe(REDOCLY_DOMAIN_US);
});
it('should resolve domain by US region when REDOCLY_DOMAIN consists EU domain', () => {
setRedoclyDomain(REDOCLY_DOMAIN_EU);
const client = new RedoclyClient();
expect(client.getRegion()).toBe('eu');
});
it('should resolve all tokens', async () => {
let spy = jest.spyOn(RedoclyClient.prototype, 'readCredentialsFile').mockImplementation(() => {
return { token: 'accessToken', us: 'accessToken', eu: 'eu-accessToken' };
});
const client = new RedoclyClient();
const tokens = client.getAllTokens();
expect(tokens).toStrictEqual([
{ region: 'us', token: 'accessToken' },
{ region: 'eu', token: 'eu-accessToken' },
]);
spy.mockRestore();
});
it('should resolve valid tokens data', async () => {
let spy = jest.spyOn(RedoclyClient.prototype, 'readCredentialsFile').mockImplementation(() => {
return { us: 'accessToken', eu: 'eu-accessToken' };
});
const client = new RedoclyClient();
const tokens = await client.getValidTokens();
expect(tokens).toStrictEqual([
{ region: 'us', token: 'accessToken', valid: true },
{ region: 'eu', token: 'eu-accessToken', valid: true },
]);
spy.mockRestore();
});
it('should not call setAccessTokens by default', () => {
let spy = jest
.spyOn(RedoclyClient.prototype, 'readCredentialsFile')
.mockImplementation(() => ({}));
jest.spyOn(RedoclyClient.prototype, 'setAccessTokens').mockImplementation();
const client = new RedoclyClient();
expect(client.setAccessTokens).not.toHaveBeenCalled();
spy.mockRestore();
});
it('should set correct accessTokens - backward compatibility: default US region', () => {
let spy = jest
.spyOn(RedoclyClient.prototype, 'readCredentialsFile')
.mockImplementation(() => ({ token: testToken }));
jest.spyOn(RedoclyClient.prototype, 'setAccessTokens').mockImplementation();
const client = new RedoclyClient();
expect(client.setAccessTokens).toBeCalledWith(expect.objectContaining({ us: testToken }));
spy.mockRestore();
});
it('should set correct accessTokens - backward compatibility: EU region', () => {
let spy = jest
.spyOn(RedoclyClient.prototype, 'readCredentialsFile')
.mockImplementation(() => ({ token: testToken }));
jest.spyOn(RedoclyClient.prototype, 'setAccessTokens').mockImplementation();
const client = new RedoclyClient('eu');
expect(client.setAccessTokens).toBeCalledWith(expect.objectContaining({ eu: testToken }));
spy.mockRestore();
});
it('should set correct accessTokens - REDOCLY_AUTHORIZATION env', () => {
process.env.REDOCLY_AUTHORIZATION = REDOCLY_AUTHORIZATION_TOKEN;
let spy = jest.spyOn(RedoclyClient.prototype, 'readCredentialsFile').mockImplementation();
jest.spyOn(RedoclyClient.prototype, 'setAccessTokens').mockImplementation();
const client = new RedoclyClient();
expect(client.setAccessTokens).toHaveBeenNthCalledWith(1, { us: REDOCLY_AUTHORIZATION_TOKEN });
spy.mockRestore();
});
it('should set correct accessTokens prioritizing REDOCLY_AUTHORIZATION env over token in file', () => {
process.env.REDOCLY_AUTHORIZATION = REDOCLY_AUTHORIZATION_TOKEN;
let spy = jest
.spyOn(RedoclyClient.prototype, 'readCredentialsFile')
.mockImplementation(() => ({ token: testToken }));
jest.spyOn(RedoclyClient.prototype, 'setAccessTokens').mockImplementation();
const client = new RedoclyClient();
expect(client.setAccessTokens).toHaveBeenNthCalledWith(2, { us: REDOCLY_AUTHORIZATION_TOKEN });
spy.mockRestore();
});
it('should set correct accessTokens prioritizing REDOCLY_AUTHORIZATION env over EU token', () => {
process.env.REDOCLY_AUTHORIZATION = REDOCLY_AUTHORIZATION_TOKEN;
let spy = jest
.spyOn(RedoclyClient.prototype, 'readCredentialsFile')
.mockImplementation(() => ({ us: testToken }));
jest.spyOn(RedoclyClient.prototype, 'setAccessTokens').mockImplementation();
const client = new RedoclyClient('eu');
expect(client.setAccessTokens).toHaveBeenNthCalledWith(2, { eu: REDOCLY_AUTHORIZATION_TOKEN });
spy.mockRestore();
});
});