@whook/whook
Version:
Build strong and efficient REST web services.
92 lines (82 loc) • 2.55 kB
text/typescript
import { describe, test, expect } from '@jest/globals';
import { YError } from 'yerror';
import { lowerCaseHeaders, mergeVaryHeaders } from './headers.js';
describe('lowerCaseHeaders', () => {
test('should work with no headers', () => {
expect(lowerCaseHeaders({})).toMatchInlineSnapshot(`{}`);
});
test('should work with actual headers', () => {
expect(
lowerCaseHeaders({
'Content-Type': 'application-json',
Authorization: 'bearer test',
}),
).toMatchInlineSnapshot(`
{
"authorization": "bearer test",
"content-type": "application-json",
}
`);
});
});
describe('mergeVaryHeaders', () => {
test('should work with empty values', () => {
expect(mergeVaryHeaders('', '')).toMatchInlineSnapshot(`""`);
});
test('should work with a left value only', () => {
expect(mergeVaryHeaders('User-Agent', '')).toMatchInlineSnapshot(
`"user-agent"`,
);
});
test('should work with a wildcard in the left value', () => {
expect(
mergeVaryHeaders('user-agent, user-agent, cookie, *', 'User-Agent'),
).toMatchInlineSnapshot(`"*"`);
});
test('should work with a right value only', () => {
expect(mergeVaryHeaders('', 'User-Agent')).toMatchInlineSnapshot(
`"user-agent"`,
);
});
test('should work with a wildcard in the right value', () => {
expect(
mergeVaryHeaders('user-agent, user-agent, cookie', '*'),
).toMatchInlineSnapshot(`"*"`);
});
test('should work with both values', () => {
expect(
mergeVaryHeaders('User-Agent, Cookie', 'User-Agent'),
).toMatchInlineSnapshot(`"user-agent, cookie"`);
});
test('should work with multiple left values', () => {
expect(
mergeVaryHeaders(
[
'User-Agent, Cookie, Authorization, Content-Type',
'Cookie, Authorization, Content-Type, Cache-Control, ETag',
],
'Accept',
),
).toMatchInlineSnapshot(
`"user-agent, cookie, authorization, content-type, cache-control, etag, accept"`,
);
});
test('should fail with a bad added value', () => {
try {
mergeVaryHeaders('User-Agent', 'User-Agent, Cookie');
throw new YError('E_UNEXPECTED_SUCCESS');
} catch (err) {
expect({
errorCode: (err as YError).code,
errorDebug: (err as YError).debug,
}).toMatchInlineSnapshot(`
{
"errorCode": "E_BAD_VARY_VALUE",
"errorDebug": [
"User-Agent, Cookie",
],
}
`);
}
});
});