2023-06-06 10:09:16 -05:00
|
|
|
import { expect } from 'chai';
|
|
|
|
|
|
|
|
import { createOutgoingHttpHeaders } from '../dist/createOutgoingHttpHeaders.js';
|
|
|
|
|
|
|
|
describe('createOutgoingHttpHeaders', () => {
|
2023-06-06 10:11:47 -05:00
|
|
|
it('undefined input headers', async () => {
|
|
|
|
const result = createOutgoingHttpHeaders(undefined);
|
|
|
|
expect(result).to.equal(undefined);
|
|
|
|
});
|
2023-06-06 10:09:16 -05:00
|
|
|
|
2023-06-06 10:11:47 -05:00
|
|
|
it('null input headers', async () => {
|
|
|
|
const result = createOutgoingHttpHeaders(undefined);
|
|
|
|
expect(result).to.equal(undefined);
|
|
|
|
});
|
2023-06-06 10:09:16 -05:00
|
|
|
|
2023-06-06 10:11:47 -05:00
|
|
|
it('Empty Headers', async () => {
|
|
|
|
const headers = new Headers();
|
|
|
|
const result = createOutgoingHttpHeaders(headers);
|
|
|
|
expect(result).to.equal(undefined);
|
|
|
|
});
|
2023-06-06 10:09:16 -05:00
|
|
|
|
2023-06-06 10:11:47 -05:00
|
|
|
it('Headers with single key', async () => {
|
|
|
|
const headers = new Headers();
|
|
|
|
headers.append('x-test', 'hello world');
|
|
|
|
const result = createOutgoingHttpHeaders(headers);
|
|
|
|
expect(result).to.deep.equal({ 'x-test': 'hello world' });
|
|
|
|
});
|
2023-06-06 10:09:16 -05:00
|
|
|
|
2023-06-06 10:11:47 -05:00
|
|
|
it('Headers with multiple keys', async () => {
|
|
|
|
const headers = new Headers();
|
|
|
|
headers.append('x-test1', 'hello');
|
|
|
|
headers.append('x-test2', 'world');
|
|
|
|
const result = createOutgoingHttpHeaders(headers);
|
|
|
|
expect(result).to.deep.equal({ 'x-test1': 'hello', 'x-test2': 'world' });
|
|
|
|
});
|
2023-06-06 10:09:16 -05:00
|
|
|
|
2023-06-06 10:11:47 -05:00
|
|
|
it('Headers with multiple values (not set-cookie)', async () => {
|
|
|
|
const headers = new Headers();
|
|
|
|
headers.append('x-test', 'hello');
|
|
|
|
headers.append('x-test', 'world');
|
|
|
|
const result = createOutgoingHttpHeaders(headers);
|
|
|
|
expect(result).to.deep.equal({ 'x-test': 'hello, world' });
|
|
|
|
});
|
2023-06-06 10:09:16 -05:00
|
|
|
|
2023-06-06 10:11:47 -05:00
|
|
|
it('Headers with multiple values (set-cookie special case)', async () => {
|
|
|
|
const headers = new Headers();
|
|
|
|
headers.append('set-cookie', 'hello');
|
|
|
|
headers.append('set-cookie', 'world');
|
|
|
|
const result = createOutgoingHttpHeaders(headers);
|
|
|
|
expect(result).to.deep.equal({ 'set-cookie': ['hello', 'world'] });
|
|
|
|
});
|
2023-06-06 10:09:16 -05:00
|
|
|
|
2023-06-06 10:11:47 -05:00
|
|
|
it('Headers with multiple values (set-cookie case handling)', async () => {
|
|
|
|
const headers = new Headers();
|
|
|
|
headers.append('Set-cookie', 'hello');
|
|
|
|
headers.append('Set-Cookie', 'world');
|
|
|
|
const result = createOutgoingHttpHeaders(headers);
|
|
|
|
expect(result).to.deep.equal({ 'set-cookie': ['hello', 'world'] });
|
|
|
|
});
|
2023-06-06 10:09:16 -05:00
|
|
|
|
2023-06-06 10:11:47 -05:00
|
|
|
it('Headers with all use cases', async () => {
|
|
|
|
const headers = new Headers();
|
|
|
|
headers.append('x-single', 'single');
|
|
|
|
headers.append('x-triple', 'one');
|
|
|
|
headers.append('x-triple', 'two');
|
|
|
|
headers.append('x-triple', 'three');
|
|
|
|
headers.append('Set-cookie', 'hello');
|
|
|
|
headers.append('Set-Cookie', 'world');
|
|
|
|
const result = createOutgoingHttpHeaders(headers);
|
|
|
|
expect(result).to.deep.equal({
|
|
|
|
'x-single': 'single',
|
|
|
|
'x-triple': 'one, two, three',
|
|
|
|
'set-cookie': ['hello', 'world'],
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|