IKHSAN
ENID Baca dalam Bahasa Indonesia

homeio

Public

Forked from doctor-io/homeio

Branch
main
Latest commit
958d74616 October 2026

protocol.test.ts

Open raw
import { describe, expect, it } from "vitest";
import {
  ALLOWED_METHODS,
  HelperProtocolError,
  parseRpcRequest,
  toErrorPayload,
} from "@/services/dbus-helper/protocol.mjs";

describe("dbus helper protocol", () => {
  it("enforces method allowlist", () => {
    expect(ALLOWED_METHODS.has("network.getStatus")).toBe(true);
    expect(ALLOWED_METHODS.has("network.reboot")).toBe(false);

    expect(() =>
      parseRpcRequest(
        JSON.stringify({
          id: "1",
          method: "network.reboot",
        }),
      ),
    ).toThrow(HelperProtocolError);
  });

  it("validates connect and disconnect parameters", () => {
    const connect = parseRpcRequest(
      JSON.stringify({
        id: "1",
        method: "network.connect",
        params: {
          ssid: "HomeNet",
          password: "secret",
        },
      }),
    );

    expect(connect.method).toBe("network.connect");
    expect(connect.params).toEqual({
      ssid: "HomeNet",
      password: "secret",
    });

    const disconnect = parseRpcRequest(
      JSON.stringify({
        id: "2",
        method: "network.disconnect",
        params: {
          iface: "wlan0",
        },
      }),
    );

    expect(disconnect.params).toEqual({
      iface: "wlan0",
    });
  });

  it("maps structured errors to protocol payloads", () => {
    const payload = toErrorPayload({
      code: "auth_failed",
      message: "Invalid Wi-Fi password",
    });

    expect(payload).toEqual({
      code: "auth_failed",
      message: "Invalid Wi-Fi password",
    });
  });
});
bytes
1,559
lines
69
Type
ts
Latest commit
16 October 2026