UNPKG

@redocly/openapi-core

Version:

See https://github.com/Redocly/openapi-cli

134 lines (116 loc) 5.66 kB
import { RedoclyClient } from '../index'; 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'; afterEach(() => { delete process.env.REDOCLY_DOMAIN; }); 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', () => { process.env.REDOCLY_DOMAIN = 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', () => { process.env.REDOCLY_DOMAIN = 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', () => { process.env.REDOCLY_DOMAIN = 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(); }); });