mirror of
https://github.com/CommunitySolidServer/CommunitySolidServer.git
synced 2024-10-03 14:55:10 +00:00
fix: SPARQL PATCH Content Type
This commit is contained in:
parent
5c6822d468
commit
2a34a430fa
@ -16,9 +16,8 @@ import type { SparqlUpdatePatch } from './SparqlUpdatePatch';
|
||||
export class SparqlUpdateBodyParser extends BodyParser {
|
||||
protected readonly logger = getLoggerFor(this);
|
||||
|
||||
public async canHandle({ request }: BodyParserArgs): Promise<void> {
|
||||
const contentType = request.headers['content-type'];
|
||||
if (contentType !== APPLICATION_SPARQL_UPDATE) {
|
||||
public async canHandle({ metadata }: BodyParserArgs): Promise<void> {
|
||||
if (metadata.contentType !== APPLICATION_SPARQL_UPDATE) {
|
||||
throw new UnsupportedMediaTypeHttpError('This parser only supports SPARQL UPDATE data.');
|
||||
}
|
||||
}
|
||||
|
@ -107,6 +107,21 @@ describe('An integrated AuthenticatedLdpHandler', (): void => {
|
||||
expect(response.statusCode).toBe(205);
|
||||
expect(response._getData()).toHaveLength(0);
|
||||
|
||||
// PATCH using a content-type header with charset
|
||||
requestUrl = new URL(id);
|
||||
response = await performRequest(
|
||||
handler,
|
||||
requestUrl,
|
||||
'PATCH',
|
||||
{ 'content-type': ' application/sparql-update ; charset=UTF-8', 'transfer-encoding': 'chunked' },
|
||||
[ 'DELETE { <s1> <http://test.com/p1> <http://test.com/o1> }',
|
||||
'INSERT {<s3> <http://test.com/p3> <http://test.com/o3>}',
|
||||
'WHERE {}',
|
||||
],
|
||||
);
|
||||
expect(response.statusCode).toBe(205);
|
||||
expect(response._getData()).toHaveLength(0);
|
||||
|
||||
// GET
|
||||
response = await performRequest(handler, requestUrl, 'GET', { accept: 'text/turtle' }, []);
|
||||
expect(response.statusCode).toBe(200);
|
||||
|
@ -21,9 +21,9 @@ describe('A SparqlUpdateBodyParser', (): void => {
|
||||
|
||||
it('only accepts application/sparql-update content.', async(): Promise<void> => {
|
||||
await expect(bodyParser.canHandle(input)).rejects.toThrow(UnsupportedMediaTypeHttpError);
|
||||
input.request.headers = { 'content-type': 'text/plain' };
|
||||
input.metadata.contentType = 'text/plain';
|
||||
await expect(bodyParser.canHandle(input)).rejects.toThrow(UnsupportedMediaTypeHttpError);
|
||||
input.request.headers = { 'content-type': 'application/sparql-update' };
|
||||
input.metadata.contentType = 'application/sparql-update';
|
||||
await expect(bodyParser.canHandle(input)).resolves.toBeUndefined();
|
||||
});
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user