feat: Set MS-Author-Via header.

Closes https://github.com/solid/community-server/issues/539
This commit is contained in:
Ruben Verborgh 2021-01-26 10:03:29 +01:00 committed by Joachim Van Herwegen
parent fe3957f0ae
commit 8c2f737fe0
4 changed files with 23 additions and 0 deletions

View File

@ -5,6 +5,15 @@
"@id": "urn:solid-server:default:MetadataSerializer", "@id": "urn:solid-server:default:MetadataSerializer",
"@type": "SequenceHandler", "@type": "SequenceHandler",
"SequenceHandler:_handlers": [ "SequenceHandler:_handlers": [
{
"@type": "ConstantMetadataWriter",
"ConstantMetadataWriter:_headers": [
{
"ConstantMetadataWriter:_headers_key": "MS-Author-Via",
"ConstantMetadataWriter:_headers_value": "SPARQL"
}
]
},
{ {
"@type": "MappedMetadataWriter", "@type": "MappedMetadataWriter",
"MappedMetadataWriter:_headerMap": [ "MappedMetadataWriter:_headerMap": [

View File

@ -19,6 +19,7 @@
"CorsHandler:_options_credentials": true, "CorsHandler:_options_credentials": true,
"CorsHandler:_options_exposedHeaders": [ "CorsHandler:_options_exposedHeaders": [
"Location", "Location",
"MS-Author-Via",
"Updates-Via" "Updates-Via"
] ]
}, },

View File

@ -81,6 +81,7 @@ describe.each(stores)('An LDP handler without auth using %s', (name, { storeUrn,
expect(response.statusCode).toBe(200); expect(response.statusCode).toBe(200);
expect(response._getBuffer().toString()).toContain('TESTFILE0'); expect(response._getBuffer().toString()).toContain('TESTFILE0');
expect(response.getHeaders().link).toBe(`<${LDP.Resource}>; rel="type"`); expect(response.getHeaders().link).toBe(`<${LDP.Resource}>; rel="type"`);
expect(response.getHeaders()['ms-author-via']).toBe('SPARQL');
// DELETE // DELETE
await resourceHelper.deleteResource(id); await resourceHelper.deleteResource(id);

View File

@ -92,6 +92,18 @@ describe('An Express server with middleware', (): void => {
expect(exposed.split(/\s*,\s*/u)).toContain('Location'); expect(exposed.split(/\s*,\s*/u)).toContain('Location');
}); });
it('exposes the MS-Author-Via header via CORS.', async(): Promise<void> => {
const res = await request(server).get('/').expect(200);
const exposed = res.header['access-control-expose-headers'];
expect(exposed.split(/\s*,\s*/u)).toContain('MS-Author-Via');
});
it('exposes the Updates-Via header via CORS.', async(): Promise<void> => {
const res = await request(server).get('/').expect(200);
const exposed = res.header['access-control-expose-headers'];
expect(exposed.split(/\s*,\s*/u)).toContain('Updates-Via');
});
it('sends incoming requests to the handler.', async(): Promise<void> => { it('sends incoming requests to the handler.', async(): Promise<void> => {
const response = request(server).get('/').set('Host', 'test.com'); const response = request(server).get('/').set('Host', 'test.com');
expect(response).toBeDefined(); expect(response).toBeDefined();