104 lines
3.3 KiB
JavaScript
104 lines
3.3 KiB
JavaScript
/* eslint-env node */
|
|
/* eslint-disable @typescript-eslint/no-var-requires */
|
|
"use strict";
|
|
/*! License: CC0 1.0 */
|
|
|
|
const {getTextLinks, FakeLink} = require("../lib/textlinks");
|
|
|
|
// Adopted from dta-legacy tests
|
|
|
|
function deepEqual(a, b) {
|
|
expect(a).to.deep.equal(b);
|
|
}
|
|
|
|
function equal(a, b) {
|
|
expect(a).to.equal(b);
|
|
}
|
|
|
|
const strictEqual = equal;
|
|
|
|
describe("TextLinks", function() {
|
|
it("regular", function() {
|
|
deepEqual(
|
|
getTextLinks("http://downthemall.net/"), ["http://downthemall.net/"]);
|
|
deepEqual(
|
|
getTextLinks("https://downthemall.net/"), ["https://downthemall.net/"]);
|
|
deepEqual(
|
|
getTextLinks("ftp://downthemall.net/"), ["ftp://downthemall.net/"]);
|
|
deepEqual(
|
|
getTextLinks("http://localhost/"), ["http://localhost/"]);
|
|
deepEqual(
|
|
getTextLinks("ftp://localhost/"), ["ftp://localhost/"]);
|
|
deepEqual(
|
|
getTextLinks("http://127.0.0.1/"), ["http://127.0.0.1/"]);
|
|
deepEqual(
|
|
getTextLinks("ftp://127.0.0.1/"), ["ftp://127.0.0.1/"]);
|
|
deepEqual(getTextLinks("http://localhost/somefile.ext"), [
|
|
"http://localhost/somefile.ext"]);
|
|
});
|
|
|
|
it("www", function() {
|
|
deepEqual(
|
|
getTextLinks("www.downthemall.net"), ["https://www.downthemall.net/"]);
|
|
deepEqual(getTextLinks("downthemall.net/"), []);
|
|
});
|
|
|
|
it("hxp", function() {
|
|
deepEqual(
|
|
getTextLinks("hp://downthemall.net/"), ["http://downthemall.net/"]);
|
|
deepEqual(
|
|
getTextLinks("hxp://downthemall.net/"), ["http://downthemall.net/"]);
|
|
deepEqual(
|
|
getTextLinks("hxxp://downthemall.net/"), ["http://downthemall.net/"]);
|
|
deepEqual(
|
|
getTextLinks("hxxxps://downthemall.net/"), ["https://downthemall.net/"]);
|
|
deepEqual(
|
|
getTextLinks("fxp://downthemall.net/"), ["ftp://downthemall.net/"]);
|
|
});
|
|
|
|
it("$", function() {
|
|
deepEqual(
|
|
getTextLinks(
|
|
"www.example.com/folder$file1\nwww.example.com/folder$file2"),
|
|
[
|
|
"https://www.example.com/folder$file1",
|
|
"https://www.example.com/folder$file2"
|
|
]
|
|
);
|
|
});
|
|
|
|
it("3dots", function() {
|
|
deepEqual(getTextLinks("http://downthemall.net/crop...ped"), []);
|
|
deepEqual(getTextLinks("http://downthemall.net/crop.....ped"), []);
|
|
});
|
|
|
|
it("sanitize", function() {
|
|
deepEqual(
|
|
getTextLinks("<http://downthemall.net/>"), ["http://downthemall.net/"]);
|
|
deepEqual(
|
|
getTextLinks("http://downthemall.net/#foo"), ["http://downthemall.net/"]);
|
|
deepEqual(
|
|
getTextLinks("<http://downthemall.net/#foo>"),
|
|
["http://downthemall.net/"]);
|
|
});
|
|
|
|
it("FakeLink", function() {
|
|
let l = new FakeLink("http://downthemall.net/");
|
|
equal(l.href, "http://downthemall.net/", "href");
|
|
equal(l.toString(), "http://downthemall.net/", "toString");
|
|
strictEqual(l.title, undefined, "title1");
|
|
deepEqual(l.childNodes, [], "childNodes");
|
|
equal(typeof l.hasAttribute, "function", "hasAttribute");
|
|
equal(l.hasAttribute("foo"), false, "hasAttribute foo");
|
|
equal(l.hasAttribute("href"), true, "hasAttribute href");
|
|
equal(l.hasAttribute("title"), false, "hasAttribute title");
|
|
|
|
equal(typeof l.getAttribute, "function", "hasAttribute");
|
|
equal(l.getAttribute("href"), l.href, "getAttribute href");
|
|
|
|
l = new FakeLink("http://downthemall.net/", "title");
|
|
equal(l.hasAttribute("title"), true, "hasAttribute title2");
|
|
equal(l.getAttribute("title"), l.title, "getAttribute title");
|
|
});
|
|
});
|