add unit tests for domain mappings

pull/223/head
Fabian Jakobs 2015-10-23 09:14:35 +00:00
rodzic 7d8062ddbf
commit b340c081af
2 zmienionych plików z 54 dodań i 9 usunięć

37
node_modules/c9/urls.js wygenerowano vendored
Wyświetl plik

@ -9,16 +9,35 @@
var assert = require("assert"); var assert = require("assert");
function getHost(req) { function getHost(req) {
if (req.headers) var host =
return req.headers.host; req.headers && req.headers.host ||
req.host ||
req.url ||
req;
return host.replace(/^https?:\/\/([^/]*).*/, "$1");
}
if (req.host) function splitDomain(req, domains) {
return req.host; var host = getHost(req);
var allDomains = domains.join("|");
var domainRe = new RegExp("^(.*?)\\.?(" + allDomains.replace(".", "\\.") + ")(?::(\\d+))?$");
if (req.url) var m = host.match(domainRe);
return req.url.replace(/^https?:\/\/([^/]*).*/, "$1"); if (m) {
return {
return req; subDomains: m[1],
domainName: m[2],
port: m[3] || ""
};
} else {
return {
subDomains: "",
domainName: host.split(":")[0],
port: host.split(":")[1] || ""
};
}
} }
/** /**
@ -115,4 +134,6 @@ function replaceDomain(url, domain) {
module.exports = { module.exports = {
replaceDomains: replaceDomains, replaceDomains: replaceDomains,
getBaseUrl: getBaseUrl, getBaseUrl: getBaseUrl,
splitDomain: splitDomain,
getHost: getHost
}; };

26
node_modules/c9/urls_test.js wygenerowano vendored
Wyświetl plik

@ -9,7 +9,7 @@ if (typeof define === "undefined") {
require("../../test/setup_paths"); require("../../test/setup_paths");
} }
var assert = require("assert"); var assert = require("assert-diff");
var urls = require("./urls"); var urls = require("./urls");
var url = require("url"); var url = require("url");
var sinon = require("sinon"); var sinon = require("sinon");
@ -126,4 +126,28 @@ describe("urls", function() {
var baseUrl = urls.getBaseUrl(input, "https://preview.$DOMAIN"); var baseUrl = urls.getBaseUrl(input, "https://preview.$DOMAIN");
assert.equal(baseUrl, "https://preview.newclient-lennartcl.c9.io"); assert.equal(baseUrl, "https://preview.newclient-lennartcl.c9.io");
}); });
it("should split domains", function() {
var domains = ["c9.io", "c9users.io", "cs50.io"];
assert.deepEqual(urls.splitDomain("fjakobs-ace.c9.io", domains), {
domainName: "c9.io",
subDomains: "fjakobs-ace",
port: ""
});
assert.deepEqual(urls.splitDomain("preview.c9users.io", domains), {
domainName: "c9users.io",
subDomains: "preview",
port: ""
});
assert.deepEqual(urls.splitDomain("fjakobs.ace.cs50.io", domains), {
domainName: "cs50.io",
subDomains: "fjakobs.ace",
port: ""
});
assert.deepEqual(urls.splitDomain("fjakobs.ace.cs50.io:8081", domains), {
domainName: "cs50.io",
subDomains: "fjakobs.ace",
port: "8081"
});
});
}); });