diff --git a/test/plugins/link.js b/test/plugins/link.js
index 565f0e69..a7aa04b0 100644
--- a/test/plugins/link.js
+++ b/test/plugins/link.js
@@ -16,7 +16,10 @@ describe("Link plugin", function() {
app.get("/real-test-image.png", function(req, res) {
res.sendFile(path.resolve(__dirname, "../../client/img/logo-grey-bg-120x120px.png"));
});
- this.connection = app.listen(9002, done);
+ this.connection = app.listen(0, () => {
+ this.port = this.connection.address().port;
+ done();
+ });
this.irc = util.createClient();
this.network = util.createNetwork();
@@ -29,7 +32,7 @@ describe("Link plugin", function() {
});
it("should be able to fetch basic information about URLs", function(done) {
- const url = "http://localhost:9002/basic";
+ const url = "http://localhost:" + this.port + "/basic";
const message = this.irc.createMessage({
text: url,
});
@@ -66,7 +69,7 @@ describe("Link plugin", function() {
it("should prefer og:title over title", function(done) {
const message = this.irc.createMessage({
- text: "http://localhost:9002/basic-og",
+ text: "http://localhost:" + this.port + "/basic-og",
});
link(this.irc, this.network.channels[0], message);
@@ -83,7 +86,7 @@ describe("Link plugin", function() {
it("should find only the first matching tag", function(done) {
const message = this.irc.createMessage({
- text: "http://localhost:9002/duplicate-tags",
+ text: "http://localhost:" + this.port + "/duplicate-tags",
});
link(this.irc, this.network.channels[0], message);
@@ -103,7 +106,7 @@ describe("Link plugin", function() {
it("should prefer og:description over description", function(done) {
const message = this.irc.createMessage({
- text: "http://localhost:9002/description-og",
+ text: "http://localhost:" + this.port + "/description-og",
});
link(this.irc, this.network.channels[0], message);
@@ -121,62 +124,76 @@ describe("Link plugin", function() {
});
it("should find og:image with full url", function(done) {
+ const port = this.port;
const message = this.irc.createMessage({
- text: "http://localhost:9002/thumb",
+ text: "http://localhost:" + this.port + "/thumb",
});
link(this.irc, this.network.channels[0], message);
app.get("/thumb", function(req, res) {
res.send(
- "
Google"
+ "Google"
);
});
this.irc.once("msg:preview", function(data) {
expect(data.preview.head).to.equal("Google");
- expect(data.preview.thumb).to.equal("http://localhost:9002/real-test-image.png");
+ expect(data.preview.thumb).to.equal(
+ "http://localhost:" + port + "/real-test-image.png"
+ );
done();
});
});
it("should find image_src", function(done) {
+ const port = this.port;
const message = this.irc.createMessage({
- text: "http://localhost:9002/thumb-image-src",
+ text: "http://localhost:" + this.port + "/thumb-image-src",
});
link(this.irc, this.network.channels[0], message);
app.get("/thumb-image-src", function(req, res) {
- res.send("");
+ res.send(
+ ""
+ );
});
this.irc.once("msg:preview", function(data) {
- expect(data.preview.thumb).to.equal("http://localhost:9002/real-test-image.png");
+ expect(data.preview.thumb).to.equal(
+ "http://localhost:" + port + "/real-test-image.png"
+ );
done();
});
});
it("should correctly resolve relative protocol", function(done) {
+ const port = this.port;
const message = this.irc.createMessage({
- text: "http://localhost:9002/thumb-image-src",
+ text: "http://localhost:" + this.port + "/thumb-image-src",
});
link(this.irc, this.network.channels[0], message);
app.get("/thumb-image-src", function(req, res) {
- res.send("");
+ res.send("");
});
this.irc.once("msg:preview", function(data) {
- expect(data.preview.thumb).to.equal("http://localhost:9002/real-test-image.png");
+ expect(data.preview.thumb).to.equal(
+ "http://localhost:" + port + "/real-test-image.png"
+ );
done();
});
});
it("should resolve url correctly for relative url", function(done) {
+ const port = this.port;
const message = this.irc.createMessage({
- text: "http://localhost:9002/relative-thumb",
+ text: "http://localhost:" + this.port + "/relative-thumb",
});
link(this.irc, this.network.channels[0], message);
@@ -188,73 +205,87 @@ describe("Link plugin", function() {
});
this.irc.once("msg:preview", function(data) {
- expect(data.preview.thumb).to.equal("http://localhost:9002/real-test-image.png");
+ expect(data.preview.thumb).to.equal(
+ "http://localhost:" + port + "/real-test-image.png"
+ );
expect(data.preview.head).to.equal("test relative image");
- expect(data.preview.link).to.equal("http://localhost:9002/relative-thumb");
+ expect(data.preview.link).to.equal("http://localhost:" + port + "/relative-thumb");
done();
});
});
it("should send untitled page if there is a thumbnail", function(done) {
+ const port = this.port;
const message = this.irc.createMessage({
- text: "http://localhost:9002/thumb-no-title",
+ text: "http://localhost:" + this.port + "/thumb-no-title",
});
link(this.irc, this.network.channels[0], message);
app.get("/thumb-no-title", function(req, res) {
res.send(
- ""
+ ""
);
});
this.irc.once("msg:preview", function(data) {
expect(data.preview.head).to.equal("Untitled page");
- expect(data.preview.thumb).to.equal("http://localhost:9002/real-test-image.png");
- expect(data.preview.link).to.equal("http://localhost:9002/thumb-no-title");
+ expect(data.preview.thumb).to.equal(
+ "http://localhost:" + port + "/real-test-image.png"
+ );
+ expect(data.preview.link).to.equal("http://localhost:" + port + "/thumb-no-title");
done();
});
});
it("should not send thumbnail if image is 404", function(done) {
+ const port = this.port;
const message = this.irc.createMessage({
- text: "http://localhost:9002/thumb-404",
+ text: "http://localhost:" + this.port + "/thumb-404",
});
link(this.irc, this.network.channels[0], message);
app.get("/thumb-404", function(req, res) {
res.send(
- "404 image"
+ "404 image"
);
});
this.irc.once("msg:preview", function(data) {
expect(data.preview.head).to.equal("404 image");
- expect(data.preview.link).to.equal("http://localhost:9002/thumb-404");
+ expect(data.preview.link).to.equal("http://localhost:" + port + "/thumb-404");
expect(data.preview.thumb).to.be.empty;
done();
});
});
it("should send image preview", function(done) {
+ const port = this.port;
const message = this.irc.createMessage({
- text: "http://localhost:9002/real-test-image.png",
+ text: "http://localhost:" + port + "/real-test-image.png",
});
link(this.irc, this.network.channels[0], message);
this.irc.once("msg:preview", function(data) {
expect(data.preview.type).to.equal("image");
- expect(data.preview.link).to.equal("http://localhost:9002/real-test-image.png");
- expect(data.preview.thumb).to.equal("http://localhost:9002/real-test-image.png");
+ expect(data.preview.link).to.equal("http://localhost:" + port + "/real-test-image.png");
+ expect(data.preview.thumb).to.equal(
+ "http://localhost:" + port + "/real-test-image.png"
+ );
done();
});
});
it("should load multiple URLs found in messages", function(done) {
+ const port = this.port;
const message = this.irc.createMessage({
- text: "http://localhost:9002/one http://localhost:9002/two",
+ text: "http://localhost:" + port + "/one http://localhost:" + this.port + "/two",
});
link(this.irc, this.network.channels[0], message);
@@ -263,7 +294,7 @@ describe("Link plugin", function() {
{
body: "",
head: "",
- link: "http://localhost:9002/one",
+ link: "http://localhost:" + port + "/one",
thumb: "",
type: "loading",
shown: true,
@@ -271,7 +302,7 @@ describe("Link plugin", function() {
{
body: "",
head: "",
- link: "http://localhost:9002/two",
+ link: "http://localhost:" + port + "/two",
thumb: "",
type: "loading",
shown: true,
@@ -289,10 +320,10 @@ describe("Link plugin", function() {
const previews = [];
this.irc.on("msg:preview", function(data) {
- if (data.preview.link === "http://localhost:9002/one") {
+ if (data.preview.link === "http://localhost:" + port + "/one") {
expect(data.preview.head).to.equal("first title");
previews[0] = data.preview;
- } else if (data.preview.link === "http://localhost:9002/two") {
+ } else if (data.preview.link === "http://localhost:" + port + "/two") {
expect(data.preview.head).to.equal("second title");
previews[1] = data.preview;
}
@@ -315,7 +346,7 @@ describe("Link plugin", function() {
});
const message = this.irc.createMessage({
- text: "http://localhost:9002/language-check",
+ text: "http://localhost:" + this.port + "/language-check",
});
link(this.irc, this.network.channels[0], message);
@@ -331,16 +362,20 @@ describe("Link plugin", function() {
});
const message = this.irc.createMessage({
- text: "http://localhost:9002/accept-header-html",
+ text: "http://localhost:" + this.port + "/accept-header-html",
});
link(this.irc, this.network.channels[0], message);
});
it("should send accept */* for meta image", function(done) {
+ const port = this.port;
+
app.get("/accept-header-thumb", function(req, res) {
res.send(
- "404 image"
+ "404 image"
);
});
@@ -351,21 +386,22 @@ describe("Link plugin", function() {
});
const message = this.irc.createMessage({
- text: "http://localhost:9002/accept-header-thumb",
+ text: "http://localhost:" + port + "/accept-header-thumb",
});
link(this.irc, this.network.channels[0], message);
});
it("should not add slash to url", function(done) {
+ const port = this.port;
const message = this.irc.createMessage({
- text: "http://localhost:9002",
+ text: "http://localhost:" + port + "",
});
link(this.irc, this.network.channels[0], message);
this.irc.once("msg:preview", function(data) {
- expect(data.preview.link).to.equal("http://localhost:9002");
+ expect(data.preview.link).to.equal("http://localhost:" + port + "");
done();
});
});
@@ -373,12 +409,24 @@ describe("Link plugin", function() {
it("should work on non-ASCII urls", function(done) {
const message = this.irc.createMessage({
text:
- "http://localhost:9002/unicode/ıoı-test " +
- "http://localhost:9002/unicode/русский-текст-test " +
- "http://localhost:9002/unicode/🙈-emoji-test " +
- "http://localhost:9002/unicodeq/?q=ıoı-test " +
- "http://localhost:9002/unicodeq/?q=русский-текст-test " +
- "http://localhost:9002/unicodeq/?q=🙈-emoji-test",
+ "http://localhost:" +
+ this.port +
+ "/unicode/ıoı-test " +
+ "http://localhost:" +
+ this.port +
+ "/unicode/русский-текст-test " +
+ "http://localhost:" +
+ this.port +
+ "/unicode/🙈-emoji-test " +
+ "http://localhost:" +
+ this.port +
+ "/unicodeq/?q=ıoı-test " +
+ "http://localhost:" +
+ this.port +
+ "/unicodeq/?q=русский-текст-test " +
+ "http://localhost:" +
+ this.port +
+ "/unicodeq/?q=🙈-emoji-test",
});
link(this.irc, this.network.channels[0], message);
@@ -414,21 +462,30 @@ describe("Link plugin", function() {
});
it("should fetch protocol-aware links", function(done) {
+ const port = this.port;
const message = this.irc.createMessage({
- text: "//localhost:9002",
+ text: "//localhost:" + port + "",
});
link(this.irc, this.network.channels[0], message);
this.irc.once("msg:preview", function(data) {
- expect(data.preview.link).to.equal("http://localhost:9002");
+ expect(data.preview.link).to.equal("http://localhost:" + port + "");
done();
});
});
it("should de-duplicate links", function(done) {
+ const port = this.port;
const message = this.irc.createMessage({
- text: "//localhost:9002 http://localhost:9002 http://localhost:9002",
+ text:
+ "//localhost:" +
+ port +
+ " http://localhost:" +
+ port +
+ " http://localhost:" +
+ port +
+ "",
});
link(this.irc, this.network.channels[0], message);
@@ -439,13 +496,13 @@ describe("Link plugin", function() {
head: "",
body: "",
thumb: "",
- link: "http://localhost:9002",
+ link: "http://localhost:" + port + "",
shown: true,
},
]);
this.irc.once("msg:preview", function(data) {
- expect(data.preview.link).to.equal("http://localhost:9002");
+ expect(data.preview.link).to.equal("http://localhost:" + port + "");
done();
});
});
@@ -469,7 +526,7 @@ describe("Link plugin", function() {
it("should fetch same link only once at the same time", function(done) {
const message = this.irc.createMessage({
- text: "http://localhost:9002/basic-og-once",
+ text: "http://localhost:" + this.port + "/basic-og-once",
});
let requests = 0;
@@ -509,7 +566,7 @@ describe("Link plugin", function() {
it("should fetch same link with different languages multiple times", function(done) {
const message = this.irc.createMessage({
- text: "http://localhost:9002/basic-og-once-lang",
+ text: "http://localhost:" + this.port + "/basic-og-once-lang",
});
const requests = [];
diff --git a/test/plugins/storage.js b/test/plugins/storage.js
index c50f970d..9b1f9519 100644
--- a/test/plugins/storage.js
+++ b/test/plugins/storage.js
@@ -39,7 +39,10 @@ describe("Image storage", function() {
this.app.get("/logo.svg", function(req, res) {
res.sendFile(testSvgPath);
});
- this.connection = this.app.listen(9003, done);
+ this.connection = this.app.listen(0, () => {
+ this.port = this.connection.address().port;
+ done();
+ });
});
after(function(done) {
@@ -54,49 +57,56 @@ describe("Image storage", function() {
});
it("should store the thumbnail", function(done) {
+ const port = this.port;
const message = this.irc.createMessage({
- text: "http://localhost:9003/thumb",
+ text: "http://localhost:" + port + "/thumb",
});
link(this.irc, this.network.channels[0], message);
this.app.get("/thumb", function(req, res) {
res.send(
- "Google"
+ "Google"
);
});
this.irc.once("msg:preview", function(data) {
expect(data.preview.head).to.equal("Google");
- expect(data.preview.link).to.equal("http://localhost:9003/thumb");
+ expect(data.preview.link).to.equal("http://localhost:" + port + "/thumb");
expect(data.preview.thumb).to.equal(correctImageURL);
done();
});
});
it("should store the image", function(done) {
+ const port = this.port;
const message = this.irc.createMessage({
- text: "http://localhost:9003/real-test-image.png",
+ text: "http://localhost:" + port + "/real-test-image.png",
});
link(this.irc, this.network.channels[0], message);
this.irc.once("msg:preview", function(data) {
expect(data.preview.type).to.equal("image");
- expect(data.preview.link).to.equal("http://localhost:9003/real-test-image.png");
+ expect(data.preview.link).to.equal("http://localhost:" + port + "/real-test-image.png");
expect(data.preview.thumb).to.equal(correctImageURL);
done();
});
});
it("should lookup correct extension type", function(done) {
+ const port = this.port;
const message = this.irc.createMessage({
- text: "http://localhost:9003/svg-preview",
+ text: "http://localhost:" + port + "/svg-preview",
});
this.app.get("/svg-preview", function(req, res) {
res.send(
- "test title"
+ "test title"
);
});
@@ -104,7 +114,7 @@ describe("Image storage", function() {
this.irc.once("msg:preview", function(data) {
expect(data.preview.type).to.equal("link");
- expect(data.preview.link).to.equal("http://localhost:9003/svg-preview");
+ expect(data.preview.link).to.equal("http://localhost:" + port + "/svg-preview");
expect(data.preview.thumb).to.equal(correctSvgURL);
done();
});