mirror of
https://github.com/socketio/socket.io.git
synced 2026-04-30 03:00:39 -04:00
See also: 00d7e7d7ee
Related:
- https://github.com/socketio/socket.io-client/issues/1188
- https://github.com/socketio/socket.io-client/issues/1378
92 lines
2.8 KiB
TypeScript
92 lines
2.8 KiB
TypeScript
import { url } from "../build/cjs/url";
|
|
import expect from "expect.js";
|
|
|
|
const loc: any = {};
|
|
|
|
describe("url", () => {
|
|
it("works with undefined", () => {
|
|
loc.hostname = "woot.com";
|
|
loc.protocol = "https:";
|
|
loc.port = 4005;
|
|
loc.host = loc.hostname + ":" + loc.port;
|
|
const parsed = url(undefined, undefined, loc);
|
|
expect(parsed.host).to.be("woot.com");
|
|
expect(parsed.protocol).to.be("https");
|
|
expect(parsed.port).to.be("4005");
|
|
});
|
|
|
|
it("works with relative paths", () => {
|
|
loc.hostname = "woot.com";
|
|
loc.protocol = "https:";
|
|
loc.port = 3000;
|
|
loc.host = loc.hostname + ":" + loc.port;
|
|
const parsed = url("/test", undefined, loc);
|
|
expect(parsed.host).to.be("woot.com");
|
|
expect(parsed.protocol).to.be("https");
|
|
expect(parsed.port).to.be("3000");
|
|
});
|
|
|
|
it("works with no protocol", () => {
|
|
loc.protocol = "http:";
|
|
const parsed = url("localhost:3000", undefined, loc);
|
|
expect(parsed.host).to.be("localhost");
|
|
expect(parsed.port).to.be("3000");
|
|
expect(parsed.protocol).to.be("http");
|
|
});
|
|
|
|
it("works with no schema", () => {
|
|
loc.protocol = "http:";
|
|
const parsed = url("//localhost:3000", undefined, loc);
|
|
expect(parsed.host).to.be("localhost");
|
|
expect(parsed.port).to.be("3000");
|
|
expect(parsed.protocol).to.be("http");
|
|
});
|
|
|
|
it("forces ports for unique url ids", () => {
|
|
const id1 = url("http://google.com:80/");
|
|
const id2 = url("http://google.com/");
|
|
const id3 = url("https://google.com/");
|
|
const id4 = url("http://google.com/", "/test");
|
|
expect(id1.id).to.be(id2.id);
|
|
expect(id1.id).to.not.be(id3.id);
|
|
expect(id2.id).to.not.be(id3.id);
|
|
expect(id2.id).to.not.be(id4.id);
|
|
});
|
|
|
|
it("identifies the namespace", () => {
|
|
loc.protocol = "http:";
|
|
loc.hostname = "woot.com";
|
|
|
|
expect(url("/woot", undefined, loc).path).to.be("/woot");
|
|
expect(url("http://google.com").path).to.be("/");
|
|
expect(url("http://google.com/").path).to.be("/");
|
|
});
|
|
|
|
it("works with ipv6", () => {
|
|
const parsed = url("http://[::1]");
|
|
expect(parsed.protocol).to.be("http");
|
|
expect(parsed.host).to.be("::1");
|
|
expect(parsed.port).to.be("80");
|
|
expect(parsed.id).to.be("http://[::1]:80");
|
|
});
|
|
|
|
it("works with ipv6 location", () => {
|
|
loc.protocol = "http:";
|
|
loc.hostname = "[::1]";
|
|
loc.port = "";
|
|
loc.host = loc.hostname + ":" + loc.port;
|
|
|
|
const parsed = url(undefined, undefined, loc);
|
|
expect(parsed.protocol).to.be("http");
|
|
expect(parsed.host).to.be("::1");
|
|
expect(parsed.port).to.be("80");
|
|
expect(parsed.id).to.be("http://[::1]:80");
|
|
});
|
|
|
|
it("works with a custom path", function () {
|
|
const parsed = url("https://woot.com/some-namespace", "/some-path");
|
|
expect(parsed.id).to.be("https://woot.com:443/some-path");
|
|
expect(parsed.path).to.be("/some-namespace");
|
|
});
|
|
});
|