64 lines
2 KiB
JavaScript
64 lines
2 KiB
JavaScript
'use strict';
|
|
|
|
const { action, assert, utils } = require( 'api-testing' );
|
|
|
|
describe( 'ExternalLinks', function testExternalLinks() {
|
|
const page = utils.title( 'ExternalLinkTest_' );
|
|
const links = [
|
|
'http://example.org/search-me',
|
|
'http://www.example.org/some-page',
|
|
'ssh://example.org'
|
|
];
|
|
|
|
let alice;
|
|
|
|
before( async () => {
|
|
alice = await action.alice();
|
|
|
|
const text = links.reduce( ( currText, url ) => `${currText} [${url}]`, '' );
|
|
|
|
await alice.edit( page, { text } );
|
|
} );
|
|
|
|
it( 'can be listed', async () => {
|
|
const result = await alice.prop( 'extlinks', page );
|
|
const fetchedLinks = result[ page ].extlinks.map( ( p ) => p[ '*' ] );
|
|
assert.sameMembers( fetchedLinks, links );
|
|
} );
|
|
|
|
it( 'can be limited', async () => {
|
|
const result = await alice.prop( 'extlinks', page, { ellimit: 1 } );
|
|
const fetchedLinks = result[ page ].extlinks.map( ( p ) => p[ '*' ] );
|
|
assert.equal( fetchedLinks.length, 1 );
|
|
} );
|
|
|
|
it( 'can be filtered by protocol', async () => {
|
|
const result = await alice.prop( 'extlinks', page, { elprotocol: 'ssh' } );
|
|
const fetchedLinks = result[ page ].extlinks.map( ( p ) => p[ '*' ] );
|
|
assert.sameMembers( fetchedLinks, [ 'ssh://example.org' ] );
|
|
} );
|
|
|
|
it( 'throws an error on invalid protocol', async () => {
|
|
const result = await alice.actionError(
|
|
'query',
|
|
{
|
|
prop: 'extlinks',
|
|
titles: page,
|
|
elprotocol: 'uwu'
|
|
}
|
|
);
|
|
assert.deepNestedInclude( result, { code: 'badvalue' } );
|
|
} );
|
|
|
|
it( 'can be filtered by search string', async () => {
|
|
const result = await alice.prop( 'extlinks', page, { elquery: 'example.org/search-me' } );
|
|
const fetchedLinks = result[ page ].extlinks.map( ( p ) => p[ '*' ] );
|
|
assert.sameMembers( fetchedLinks, [ 'http://example.org/search-me' ] );
|
|
} );
|
|
|
|
it( 'does not expand external urls', async () => {
|
|
const result = await alice.prop( 'extlinks', page, { elexpandurl: true } );
|
|
const fetchedLinks = result[ page ].extlinks.map( ( p ) => p[ '*' ] );
|
|
assert.sameMembers( fetchedLinks, links );
|
|
} );
|
|
} );
|