mirror of
https://github.com/GitbookIO/gitbook.git
synced 2026-09-12 05:48:57 +00:00
143 lines
4.0 KiB
TypeScript
143 lines
4.0 KiB
TypeScript
import { describe, expect, it } from 'bun:test';
|
|
|
|
import { getSecurityHeaders } from './OpenAPICodeSample';
|
|
import type { OpenAPIOperationData } from './types';
|
|
|
|
describe('getSecurityHeaders', () => {
|
|
it('should handle custom HTTP scheme with x-gitbook-prefix', () => {
|
|
const securities: OpenAPIOperationData['securities'] = [
|
|
[
|
|
'customScheme',
|
|
{
|
|
type: 'apiKey',
|
|
in: 'header',
|
|
name: 'Authorization',
|
|
'x-gitbook-prefix': 'CustomScheme',
|
|
},
|
|
],
|
|
];
|
|
|
|
const result = getSecurityHeaders({
|
|
securityRequirement: [{ customScheme: [] }],
|
|
securities,
|
|
});
|
|
|
|
expect(result).toEqual({
|
|
Authorization: 'CustomScheme YOUR_API_KEY',
|
|
});
|
|
});
|
|
|
|
it('should use x-gitbook-prefix with x-gitbook-token-placeholder together', () => {
|
|
const securities: OpenAPIOperationData['securities'] = [
|
|
[
|
|
'customAuth',
|
|
{
|
|
type: 'apiKey',
|
|
in: 'header',
|
|
name: 'Authorization',
|
|
'x-gitbook-prefix': 'Token',
|
|
'x-gitbook-token-placeholder': 'MY_CUSTOM_TOKEN',
|
|
},
|
|
],
|
|
];
|
|
|
|
const result = getSecurityHeaders({
|
|
securityRequirement: [{ customAuth: [] }],
|
|
securities,
|
|
});
|
|
|
|
expect(result).toEqual({
|
|
Authorization: 'Token MY_CUSTOM_TOKEN',
|
|
});
|
|
});
|
|
|
|
it('should use default placeholder for basic auth', () => {
|
|
const securities: OpenAPIOperationData['securities'] = [
|
|
[
|
|
'basicAuth',
|
|
{
|
|
type: 'http',
|
|
scheme: 'basic',
|
|
},
|
|
],
|
|
];
|
|
|
|
const result = getSecurityHeaders({
|
|
securityRequirement: [{ basicAuth: [] }],
|
|
securities,
|
|
});
|
|
|
|
expect(result).toEqual({
|
|
Authorization: 'Basic username:password',
|
|
});
|
|
});
|
|
|
|
it('should use x-gitbook-token-placeholder for basic auth', () => {
|
|
const securities: OpenAPIOperationData['securities'] = [
|
|
[
|
|
'basicAuth',
|
|
{
|
|
type: 'http',
|
|
scheme: 'basic',
|
|
'x-gitbook-token-placeholder': 'admin:secret123',
|
|
},
|
|
],
|
|
];
|
|
|
|
const result = getSecurityHeaders({
|
|
securityRequirement: [{ basicAuth: [] }],
|
|
securities,
|
|
});
|
|
|
|
expect(result).toEqual({
|
|
Authorization: 'Basic admin:secret123',
|
|
});
|
|
});
|
|
|
|
it('should use x-gitbook-token-placeholder for bearer auth', () => {
|
|
const securities: OpenAPIOperationData['securities'] = [
|
|
[
|
|
'bearerAuth',
|
|
{
|
|
type: 'http',
|
|
scheme: 'bearer',
|
|
'x-gitbook-token-placeholder': 'MY_CUSTOM_TOKEN',
|
|
},
|
|
],
|
|
];
|
|
|
|
const result = getSecurityHeaders({
|
|
securityRequirement: [{ bearerAuth: [] }],
|
|
securities,
|
|
});
|
|
|
|
expect(result).toEqual({
|
|
Authorization: 'Bearer MY_CUSTOM_TOKEN',
|
|
});
|
|
});
|
|
|
|
it('should not use x-gitbook-prefix for http scheme', () => {
|
|
const securities: OpenAPIOperationData['securities'] = [
|
|
[
|
|
'customAuth',
|
|
{
|
|
type: 'http',
|
|
in: 'header',
|
|
name: 'Authorization',
|
|
scheme: 'bearer',
|
|
'x-gitbook-prefix': 'Token',
|
|
},
|
|
],
|
|
];
|
|
|
|
const result = getSecurityHeaders({
|
|
securityRequirement: [{ customAuth: [] }],
|
|
securities,
|
|
});
|
|
|
|
expect(result).toEqual({
|
|
Authorization: 'Bearer YOUR_SECRET_TOKEN',
|
|
});
|
|
});
|
|
});
|