mirror of
https://github.com/CommunitySolidServer/CommunitySolidServer.git
synced 2024-10-03 14:55:10 +00:00
feat: Make HeaderHandler customizable.
This commit is contained in:
parent
023ff80f48
commit
d6c0f89cf5
@ -9,7 +9,13 @@
|
|||||||
"@type": "CorsHandler"
|
"@type": "CorsHandler"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"@type": "HeaderHandler"
|
"@type": "HeaderHandler",
|
||||||
|
"HeaderHandler:_headers": [
|
||||||
|
{
|
||||||
|
"HeaderHandler:_headers_key": "X-Powered-By",
|
||||||
|
"HeaderHandler:_headers_value": "Community Solid Server"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -7,11 +7,11 @@ import type { HttpResponse } from '../HttpResponse';
|
|||||||
export class HeaderHandler extends HttpHandler {
|
export class HeaderHandler extends HttpHandler {
|
||||||
private readonly headers: Record<string, string>;
|
private readonly headers: Record<string, string>;
|
||||||
|
|
||||||
public constructor() {
|
// Not supported by Components.js yet
|
||||||
|
// eslint-disable-next-line @typescript-eslint/consistent-indexed-object-style
|
||||||
|
public constructor(headers: { [header: string]: string } = {}) {
|
||||||
super();
|
super();
|
||||||
this.headers = {
|
this.headers = { ...headers };
|
||||||
'x-powered-by': 'Community Solid Server',
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async handle({ response }: { response: HttpResponse }): Promise<void> {
|
public async handle({ response }: { response: HttpResponse }): Promise<void> {
|
||||||
|
@ -3,18 +3,24 @@ import { HeaderHandler } from '../../../../src/server/middleware/HeaderHandler';
|
|||||||
import { guardStream } from '../../../../src/util/GuardedStream';
|
import { guardStream } from '../../../../src/util/GuardedStream';
|
||||||
|
|
||||||
describe('a HeaderHandler', (): void => {
|
describe('a HeaderHandler', (): void => {
|
||||||
let handler: HeaderHandler;
|
it('adds no headers when none are configured.', async(): Promise<void> => {
|
||||||
|
const handler = new HeaderHandler();
|
||||||
|
|
||||||
beforeAll(async(): Promise<void> => {
|
|
||||||
handler = new HeaderHandler();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('returns an X-Powered-By header.', async(): Promise<void> => {
|
|
||||||
const request = guardStream(createRequest());
|
const request = guardStream(createRequest());
|
||||||
const response = createResponse();
|
const response = createResponse();
|
||||||
await handler.handleSafe({ request, response });
|
await handler.handleSafe({ request, response });
|
||||||
expect(response.getHeaders()).toEqual(expect.objectContaining({
|
|
||||||
'x-powered-by': 'Community Solid Server',
|
expect(response.getHeaders()).toEqual({});
|
||||||
}));
|
});
|
||||||
|
|
||||||
|
it('adds all configured headers.', async(): Promise<void> => {
|
||||||
|
const headers = { custom: 'Custom', other: 'Other' };
|
||||||
|
const handler = new HeaderHandler(headers);
|
||||||
|
|
||||||
|
const request = guardStream(createRequest());
|
||||||
|
const response = createResponse();
|
||||||
|
await handler.handleSafe({ request, response });
|
||||||
|
|
||||||
|
expect(response.getHeaders()).toEqual(expect.objectContaining(headers));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user