fix: rdf convertors should not read or write plain JSON

This commit is contained in:
Thomas Dupont 2022-06-28 13:39:35 +02:00 committed by Joachim Van Herwegen
parent dacd6d0006
commit 9ecb769e09
2 changed files with 11 additions and 3 deletions

View File

@ -13,7 +13,10 @@ import type { RepresentationConverterArgs } from './RepresentationConverter';
*/ */
export class RdfToQuadConverter extends BaseTypedRepresentationConverter { export class RdfToQuadConverter extends BaseTypedRepresentationConverter {
public constructor() { public constructor() {
super(rdfParser.getContentTypes(), INTERNAL_QUADS); const inputTypes = rdfParser.getContentTypes()
// ContentType application/json MAY NOT be converted to Quad.
.then((types): string[] => types.filter((type): boolean => type !== 'application/json'));
super(inputTypes, INTERNAL_QUADS);
} }
public async handle({ representation, identifier }: RepresentationConverterArgs): Promise<Representation> { public async handle({ representation, identifier }: RepresentationConverterArgs): Promise<Representation> {

View File

@ -18,12 +18,17 @@ describe('A RdfToQuadConverter', (): void => {
const identifier: ResourceIdentifier = { path: 'path' }; const identifier: ResourceIdentifier = { path: 'path' };
it('supports serializing as quads.', async(): Promise<void> => { it('supports serializing as quads.', async(): Promise<void> => {
const types = await rdfParser.getContentTypes(); const types = rdfParser.getContentTypes()
for (const type of types) { .then((inputTypes): string[] => inputTypes.filter((type): boolean => type !== 'application/json'));
for (const type of await types) {
await expect(converter.getOutputTypes(type)).resolves.toEqual({ [INTERNAL_QUADS]: 1 }); await expect(converter.getOutputTypes(type)).resolves.toEqual({ [INTERNAL_QUADS]: 1 });
} }
}); });
it('may not handle application/json to quad conversion.', async(): Promise<void> => {
await expect(converter.getOutputTypes('application/json')).resolves.toEqual({ });
});
it('can handle turtle to quad conversions.', async(): Promise<void> => { it('can handle turtle to quad conversions.', async(): Promise<void> => {
const metadata = new RepresentationMetadata('text/turtle'); const metadata = new RepresentationMetadata('text/turtle');
const representation = { metadata } as Representation; const representation = { metadata } as Representation;