|
import { |
|
resolve_root, |
|
get_jwt, |
|
determine_protocol, |
|
parse_and_set_cookies |
|
} from "../helpers/init_helpers"; |
|
import { initialise_server } from "./server"; |
|
import { beforeAll, afterEach, afterAll, it, expect, describe } from "vitest"; |
|
import { Client } from "../client"; |
|
import { INVALID_CREDENTIALS_MSG, MISSING_CREDENTIALS_MSG } from "../constants"; |
|
|
|
const server = initialise_server(); |
|
|
|
beforeAll(() => server.listen()); |
|
afterEach(() => server.resetHandlers()); |
|
afterAll(() => server.close()); |
|
|
|
describe("resolve_root", () => { |
|
it('should return the base URL if the root path starts with "http://"', () => { |
|
const base_url = "https://huggingface.co"; |
|
const root_path = "https://hmb-hello-world.hf.space"; |
|
const prioritize_base = true; |
|
const result = resolve_root(base_url, root_path, prioritize_base); |
|
expect(result).toBe(base_url); |
|
}); |
|
|
|
it('should return the base URL if the root path starts with "https://"', () => { |
|
const base_url = "https://huggingface.co"; |
|
const root_path = "https://hmb-hello-world.hf.space"; |
|
const prioritize_base = true; |
|
const result = resolve_root(base_url, root_path, prioritize_base); |
|
expect(result).toBe(base_url); |
|
}); |
|
}); |
|
|
|
describe("get_jwt", () => { |
|
it("should return a valid JWT token when the API call is successful", async () => { |
|
const space = "hmb/hello_world"; |
|
const token = "hf_123"; |
|
const expected_jwt = "jwt_123"; |
|
|
|
const result = await get_jwt(space, token); |
|
|
|
expect(result).toBe(expected_jwt); |
|
}); |
|
|
|
it("should return false when the API call fails", async () => { |
|
const space = "hmb/bye_world"; |
|
const token = "hf_123"; |
|
|
|
const result = await get_jwt(space, token); |
|
|
|
expect(result).toBe(false); |
|
}); |
|
}); |
|
|
|
describe("determine_protocol", () => { |
|
it('should return the correct protocols and host when the endpoint starts with "http"', () => { |
|
const endpoint = "http://huggingface.co"; |
|
const result = determine_protocol(endpoint); |
|
expect(result).toEqual({ |
|
ws_protocol: "ws", |
|
http_protocol: "http:", |
|
host: "huggingface.co" |
|
}); |
|
}); |
|
|
|
it('should return the correct protocols and host when the endpoint starts with "https"', () => { |
|
const endpoint = "https://huggingface.co"; |
|
const result = determine_protocol(endpoint); |
|
expect(result).toEqual({ |
|
ws_protocol: "wss", |
|
http_protocol: "https:", |
|
host: "huggingface.co" |
|
}); |
|
}); |
|
|
|
it('should return the correct protocols and host when the endpoint starts with "file"', () => { |
|
const endpoint = "file:///path/to/app.html"; |
|
const result = determine_protocol(endpoint); |
|
expect(result).toEqual({ |
|
ws_protocol: "ws", |
|
http_protocol: "http:", |
|
host: "lite.local" |
|
}); |
|
}); |
|
}); |
|
|
|
describe("parse_and_set_cookies", () => { |
|
it("should return an empty array when the cookie header is empty", () => { |
|
const cookie_header = ""; |
|
const result = parse_and_set_cookies(cookie_header); |
|
expect(result).toEqual([]); |
|
}); |
|
|
|
it("should parse the cookie header and return an array of cookies", () => { |
|
const cookie_header = "access-token-123=abc;access-token-unsecured-456=def"; |
|
const result = parse_and_set_cookies(cookie_header); |
|
expect(result).toEqual(["access-token-123=abc"]); |
|
}); |
|
}); |
|
|
|
describe("resolve_cookies", () => { |
|
it("should set the cookies when correct auth credentials are provided", async () => { |
|
const client = await Client.connect("hmb/auth_space", { |
|
auth: ["admin", "pass1234"] |
|
}); |
|
|
|
const api = client.view_api(); |
|
expect((await api).named_endpoints["/predict"]).toBeDefined(); |
|
}); |
|
|
|
it("should connect to a private and authenticated space", async () => { |
|
const client = await Client.connect("hmb/private_auth_space", { |
|
hf_token: "hf_123", |
|
auth: ["admin", "pass1234"] |
|
}); |
|
|
|
const api = client.view_api(); |
|
expect((await api).named_endpoints["/predict"]).toBeDefined(); |
|
}); |
|
|
|
it("should not set the cookies when auth credentials are invalid", async () => { |
|
await expect( |
|
Client.connect("hmb/invalid_auth_space", { |
|
auth: ["admin", "wrong_password"] |
|
}) |
|
).rejects.toThrowError(INVALID_CREDENTIALS_MSG); |
|
}); |
|
|
|
it("should not set the cookies when auth option is not provided in an auth space", async () => { |
|
await expect(Client.connect("hmb/unauth_space")).rejects.toThrowError( |
|
MISSING_CREDENTIALS_MSG |
|
); |
|
}); |
|
}); |
|
|