115 lines
4.5 KiB
JavaScript
115 lines
4.5 KiB
JavaScript
|
// Dependencies
|
||
|
const gitUrlParse = require("..")
|
||
|
, tester = require("tester")
|
||
|
;
|
||
|
|
||
|
// Constants
|
||
|
const URLS = {
|
||
|
ssh: "git@github.com:IonicaBizau/git-url-parse.git"
|
||
|
, https: "https://github.com/IonicaBizau/git-url-parse"
|
||
|
, gitSsh: "git+ssh://git@github.com/IonicaBizau/git-url-parse.git"
|
||
|
};
|
||
|
|
||
|
tester.describe("parse urls", test => {
|
||
|
|
||
|
// SSH urls
|
||
|
test.should("parse ssh urls", () => {
|
||
|
var res = gitUrlParse(URLS.ssh);
|
||
|
test.expect(res.protocol).toBe("ssh");
|
||
|
test.expect(res.source).toBe("github.com");
|
||
|
test.expect(res.owner).toBe("IonicaBizau");
|
||
|
test.expect(res.name).toBe("git-url-parse");
|
||
|
test.expect(res.full_name).toBe("IonicaBizau/git-url-parse");
|
||
|
test.expect(res.href).toBe(URLS.ssh);
|
||
|
test.expect(res.toString("https")).toBe(URLS.https);
|
||
|
test.expect(res.toString("git+ssh")).toBe(URLS.gitSsh);
|
||
|
test.expect(res.toString("ssh")).toBe(URLS.ssh);
|
||
|
});
|
||
|
|
||
|
// HTTPS urls
|
||
|
test.should("parse https urls", () => {
|
||
|
var res = gitUrlParse(URLS.https);
|
||
|
test.expect(res.protocol).toBe("https");
|
||
|
test.expect(res.source).toBe("github.com");
|
||
|
test.expect(res.owner).toBe("IonicaBizau");
|
||
|
test.expect(res.name).toBe("git-url-parse");
|
||
|
test.expect(res.href).toBe(URLS.https);
|
||
|
test.expect(res.toString("https")).toBe(URLS.https);
|
||
|
test.expect(res.toString("git+ssh")).toBe(URLS.gitSsh);
|
||
|
test.expect(res.toString("ssh")).toBe(URLS.ssh);
|
||
|
});
|
||
|
|
||
|
// HTTPS with ending slash
|
||
|
test.should("parse https urls with ending slash", () => {
|
||
|
var res = gitUrlParse("https://github.com/IonicaBizau/git-url-parse/");
|
||
|
test.expect(res.protocol).toBe("https");
|
||
|
test.expect(res.source).toBe("github.com");
|
||
|
test.expect(res.owner).toBe("IonicaBizau");
|
||
|
test.expect(res.name).toBe("git-url-parse");
|
||
|
test.expect(res.toString("https")).toBe(URLS.https);
|
||
|
test.expect(res.toString("git+ssh")).toBe(URLS.gitSsh);
|
||
|
test.expect(res.toString("ssh")).toBe(URLS.ssh);
|
||
|
});
|
||
|
|
||
|
// git+ssh protocol
|
||
|
test.should("parse git+ssh urls", () => {
|
||
|
var res = gitUrlParse(URLS.gitSsh);
|
||
|
test.expect(res.protocol).toBe("ssh");
|
||
|
test.expect(res.source).toBe("github.com");
|
||
|
test.expect(res.owner).toBe("IonicaBizau");
|
||
|
test.expect(res.name).toBe("git-url-parse");
|
||
|
test.expect(res.toString("https")).toBe(URLS.https);
|
||
|
test.expect(res.toString("git+ssh")).toBe(URLS.gitSsh);
|
||
|
test.expect(res.toString("ssh")).toBe(URLS.ssh);
|
||
|
});
|
||
|
|
||
|
// oauth
|
||
|
test.should("parse oauth urls", () => {
|
||
|
var res = gitUrlParse("https://token:x-oauth-basic@github.com/owner/name.git");
|
||
|
test.expect(res.source).toBe("github.com");
|
||
|
test.expect(res.owner).toBe("owner");
|
||
|
test.expect(res.name).toBe("name");
|
||
|
});
|
||
|
|
||
|
// oauth bitbucket
|
||
|
test.should("parse Bitbucket oauth urls", () => {
|
||
|
var res = gitUrlParse("https://x-token-auth:token@bitbucket.org/owner/name.git");
|
||
|
test.expect(res.source).toBe("bitbucket.org");
|
||
|
test.expect(res.owner).toBe("owner");
|
||
|
test.expect(res.name).toBe("name");
|
||
|
});
|
||
|
|
||
|
// https bitbucket
|
||
|
test.should("parse Bitbucket https urls", () => {
|
||
|
var res = gitUrlParse("https://owner@bitbucket.org/owner/name");
|
||
|
test.expect(res.source).toBe("bitbucket.org");
|
||
|
test.expect(res.owner).toBe("owner");
|
||
|
test.expect(res.name).toBe("name");
|
||
|
});
|
||
|
|
||
|
// https cloudforge
|
||
|
test.should("parse CloudForge urls", () => {
|
||
|
var res = gitUrlParse("https://owner@organization.git.cloudforge.com/name.git");
|
||
|
test.expect(res.source).toBe("cloudforge.com");
|
||
|
test.expect(res.owner).toBe("owner");
|
||
|
test.expect(res.organization).toBe("organization");
|
||
|
test.expect(res.name).toBe("name");
|
||
|
});
|
||
|
|
||
|
test.should("parse subdomains", () => {
|
||
|
var res = gitUrlParse("https://gist.github.com/owner/id");
|
||
|
test.expect(res.source).toBe("github.com");
|
||
|
test.expect(res.resource).toBe("gist.github.com");
|
||
|
test.expect(res.owner).toBe("owner");
|
||
|
test.expect(res.name).toBe("id");
|
||
|
test.expect(res.toString()).toBe("https://gist.github.com/owner/id");
|
||
|
|
||
|
res = gitUrlParse("https://gist.github.com/id");
|
||
|
test.expect(res.source).toBe("github.com");
|
||
|
test.expect(res.resource).toBe("gist.github.com");
|
||
|
test.expect(res.owner).toBe("");
|
||
|
test.expect(res.name).toBe("id");
|
||
|
test.expect(res.toString()).toBe("https://gist.github.com/id");
|
||
|
});
|
||
|
});
|