// 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"); }); });