import { createResponse } from 'node-mocks-http'; import { AuxiliaryLinkMetadataWriter } from '../../../../../src/http/output/metadata/AuxiliaryLinkMetadataWriter'; import { RepresentationMetadata } from '../../../../../src/http/representation/RepresentationMetadata'; import type { ResourceIdentifier } from '../../../../../src/http/representation/ResourceIdentifier'; import type { HttpResponse } from '../../../../../src/server/HttpResponse'; import { SimpleSuffixStrategy } from '../../../../util/SimpleSuffixStrategy'; describe('A LinkRelMetadataWriter', (): void => { const auxiliaryStrategy = new SimpleSuffixStrategy('.dummy'); const metadataStrategy = new SimpleSuffixStrategy('.meta'); const writer = new AuxiliaryLinkMetadataWriter(auxiliaryStrategy, metadataStrategy, 'test'); let identifier: ResourceIdentifier; beforeEach((): void => { identifier = { path: 'http://example.org/' }; }); it('adds the correct link headers.', async(): Promise => { const response = createResponse() as HttpResponse; const metadata = new RepresentationMetadata(identifier); await expect(writer.handle({ response, metadata })).resolves.toBeUndefined(); expect(response.getHeaders()).toEqual({ link: `<${identifier.path}.meta>; rel="test"` }); }); it('does not add link headers for auxiliary resources.', async(): Promise => { const response = createResponse() as HttpResponse; identifier.path += '.dummy'; const metadata = new RepresentationMetadata(identifier); await expect(writer.handle({ response, metadata })).resolves.toBeUndefined(); expect(response.getHeaders()).toEqual({ }); }); it('does not add link headers for blank node identifiers.', async(): Promise => { const response = createResponse() as HttpResponse; const metadata = new RepresentationMetadata(); await expect(writer.handle({ response, metadata })).resolves.toBeUndefined(); expect(response.getHeaders()).toEqual({ }); }); });