UNPKG

thenavisapp

Version:

This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).

115 lines (100 loc) 3.06 kB
import test from 'ava'; import parseLinkHeader from '../source/core/parse-link-header.js'; test('works as expected', t => { t.deepEqual( parseLinkHeader( '<https://one.example.com>; rel="preconnect", <https://two.example.com>; rel="preconnect", <https://three.example.com>; rel="preconnect"', ), [ { reference: 'https://one.example.com', parameters: {rel: '"preconnect"'}, }, { reference: 'https://two.example.com', parameters: {rel: '"preconnect"'}, }, { reference: 'https://three.example.com', parameters: {rel: '"preconnect"'}, }, ], ); t.deepEqual( parseLinkHeader( '<https://one.example.com>; rel="previous"; title="previous chapter"', ), [ { reference: 'https://one.example.com', parameters: {rel: '"previous"', title: '"previous chapter"'}, }, ], ); t.deepEqual( parseLinkHeader('</>; rel="http://example.net/foo"'), [ { reference: '/', parameters: {rel: '"http://example.net/foo"'}, }, ], ); t.deepEqual( parseLinkHeader('</terms>; rel="copyright"; anchor="#foo"'), [ { reference: '/terms', parameters: {rel: '"copyright"', anchor: '"#foo"'}, }, ], ); t.deepEqual(parseLinkHeader(`</TheBook/chapter2>; rel="previous"; title*=UTF-8'de'letztes%20Kapitel, </TheBook/chapter4>; rel="next"; title*=UTF-8'de'n%c3%a4chstes%20Kapitel`), [ { reference: '/TheBook/chapter2', parameters: { rel: '"previous"', // eslint-disable-next-line @typescript-eslint/quotes, @typescript-eslint/naming-convention 'title*': `UTF-8'de'letztes%20Kapitel`, }, }, { reference: '/TheBook/chapter4', parameters: { rel: '"next"', // eslint-disable-next-line @typescript-eslint/quotes, @typescript-eslint/naming-convention 'title*': `UTF-8'de'n%c3%a4chstes%20Kapitel`, }, }, ]); t.throws(() => parseLinkHeader('https://bad.example; rel="preconnect"'), { message: 'Invalid format of the Link header reference: https://bad.example', }); t.throws(() => parseLinkHeader('https://bad.example; rel'), { message: 'Invalid format of the Link header reference: https://bad.example', }); t.throws(() => parseLinkHeader('https://bad.example'), { message: 'Invalid format of the Link header reference: https://bad.example', }); t.throws(() => parseLinkHeader(''), { message: 'Invalid format of the Link header reference: ', }); t.throws(() => parseLinkHeader('<https://bad.example>; rel'), { message: 'Failed to parse Link header: <https://bad.example>; rel', }); t.throws(() => parseLinkHeader('<https://bad.example>'), { message: 'Unexpected end of Link header parameters: ', }); t.throws(() => parseLinkHeader('<>'), { message: 'Unexpected end of Link header parameters: ', }); t.throws(() => parseLinkHeader('<https://bad.example'), { message: 'Invalid format of the Link header reference: <https://bad.example', }); t.throws(() => parseLinkHeader('https://bad.example>'), { message: 'Invalid format of the Link header reference: https://bad.example>', }); });