Spaces:
Running
Running
| 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 | |
| ); | |
| }); | |
| }); | |