UNPKG

@hey-api/client-fetch

Version:

🚀 Fetch API client for `@hey-api/openapi-ts` codegen.

211 lines (201 loc) • 4.72 kB
import type { Auth } from '@hey-api/client-core'; import { describe, expect, it, vi } from 'vitest'; import { getParseAs, setAuthParams } from '../utils'; describe('getParseAs', () => { const scenarios: Array<{ content: Parameters<typeof getParseAs>[0]; parseAs: ReturnType<typeof getParseAs>; }> = [ { content: null, parseAs: 'stream', }, { content: 'application/json', parseAs: 'json', }, { content: 'application/ld+json', parseAs: 'json', }, { content: 'application/ld+json;charset=utf-8', parseAs: 'json', }, { content: 'application/ld+json; charset=utf-8', parseAs: 'json', }, { content: 'multipart/form-data', parseAs: 'formData', }, { content: 'application/*', parseAs: 'blob', }, { content: 'audio/*', parseAs: 'blob', }, { content: 'image/*', parseAs: 'blob', }, { content: 'video/*', parseAs: 'blob', }, { content: 'text/*', parseAs: 'text', }, { content: 'unsupported', parseAs: undefined, }, ]; it.each(scenarios)( 'detects $content as $parseAs', async ({ content, parseAs }) => { expect(getParseAs(content)).toEqual(parseAs); }, ); }); describe('setAuthParams', () => { it('sets bearer token in headers', async () => { const auth = vi.fn().mockReturnValue('foo'); const headers = new Headers(); const query: Record<any, unknown> = {}; await setAuthParams({ auth, headers, query, security: [ { name: 'baz', scheme: 'bearer', type: 'http', }, ], }); expect(auth).toHaveBeenCalled(); expect(headers.get('baz')).toBe('Bearer foo'); expect(Object.keys(query).length).toBe(0); }); it('sets access token in query', async () => { const auth = vi.fn().mockReturnValue('foo'); const headers = new Headers(); const query: Record<any, unknown> = {}; await setAuthParams({ auth, headers, query, security: [ { in: 'query', name: 'baz', scheme: 'bearer', type: 'http', }, ], }); expect(auth).toHaveBeenCalled(); expect(headers.get('baz')).toBeNull(); expect(query.baz).toBe('Bearer foo'); }); it('sets Authorization header when `in` and `name` are undefined', async () => { const auth = vi.fn().mockReturnValue('foo'); const headers = new Headers(); const query: Record<any, unknown> = {}; await setAuthParams({ auth, headers, query, security: [ { type: 'http', }, ], }); expect(auth).toHaveBeenCalled(); expect(headers.get('Authorization')).toBe('foo'); expect(query).toEqual({}); }); it('sets first scheme only', async () => { const auth = vi.fn().mockReturnValue('foo'); const headers = new Headers(); const query: Record<any, unknown> = {}; await setAuthParams({ auth, headers, query, security: [ { name: 'baz', scheme: 'bearer', type: 'http', }, { in: 'query', name: 'baz', scheme: 'bearer', type: 'http', }, ], }); expect(auth).toHaveBeenCalled(); expect(headers.get('baz')).toBe('Bearer foo'); expect(Object.keys(query).length).toBe(0); }); it('sets first scheme with token', async () => { const auth = vi.fn().mockImplementation((auth: Auth) => { if (auth.type === 'apiKey') { return; } return 'foo'; }); const headers = new Headers(); const query: Record<any, unknown> = {}; await setAuthParams({ auth, headers, query, security: [ { name: 'baz', type: 'apiKey', }, { in: 'query', name: 'baz', scheme: 'bearer', type: 'http', }, ], }); expect(auth).toHaveBeenCalled(); expect(headers.get('baz')).toBeNull(); expect(query.baz).toBe('Bearer foo'); }); it('sets an API key in a cookie', async () => { const auth = vi.fn().mockReturnValue('foo'); const headers = new Headers(); const query: Record<any, unknown> = {}; await setAuthParams({ auth, headers, query, security: [ { in: 'cookie', name: 'baz', type: 'apiKey', }, ], }); expect(auth).toHaveBeenCalled(); expect(headers.get('Cookie')).toBe('baz=foo'); expect(query).toEqual({}); }); });