mirror of
https://github.com/gethomepage/homepage.git
synced 2026-09-28 23:11:17 -07:00
Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
107 lines
3.1 KiB
JavaScript
107 lines
3.1 KiB
JavaScript
import { describe, expect, it, vi } from "vitest";
|
|
|
|
const { fs, yaml, config, checkAndCopyConfig } = vi.hoisted(() => ({
|
|
fs: {
|
|
readFileSync: vi.fn((filePath, encoding) => {
|
|
if (String(filePath).endsWith("/docker.yaml") && encoding === "utf8") return "docker-yaml";
|
|
return Buffer.from(String(filePath));
|
|
}),
|
|
},
|
|
yaml: {
|
|
load: vi.fn(),
|
|
},
|
|
config: {
|
|
CONF_DIR: "/conf",
|
|
substituteEnvironmentVars: vi.fn((s) => s),
|
|
},
|
|
checkAndCopyConfig: vi.fn(),
|
|
}));
|
|
|
|
vi.mock("fs", () => ({
|
|
readFileSync: fs.readFileSync,
|
|
}));
|
|
|
|
vi.mock("utils/config/yaml", () => ({ loadYaml: yaml.load }));
|
|
|
|
vi.mock("utils/config/config", () => ({
|
|
default: checkAndCopyConfig,
|
|
...config,
|
|
}));
|
|
|
|
import getDockerArguments, { getDefaultDockerArgs } from "./docker";
|
|
|
|
describe("utils/config/docker", () => {
|
|
it("getDefaultDockerArgs returns a socketPath on linux and host on darwin", () => {
|
|
expect(getDefaultDockerArgs("linux")).toEqual({ socketPath: "/var/run/docker.sock" });
|
|
expect(getDefaultDockerArgs("darwin")).toEqual({ host: "127.0.0.1" });
|
|
});
|
|
|
|
it("returns default args when no server is given", () => {
|
|
yaml.load.mockReturnValueOnce({});
|
|
|
|
const args = getDockerArguments();
|
|
|
|
expect(checkAndCopyConfig).toHaveBeenCalledWith("docker.yaml");
|
|
// if running on linux, should return socketPath
|
|
if (process.platform !== "win32" && process.platform !== "darwin") {
|
|
expect(args).toEqual({ socketPath: "/var/run/docker.sock" });
|
|
} else {
|
|
// otherwise, should return host
|
|
expect(args).toEqual(expect.objectContaining({ host: expect.any(String) }));
|
|
}
|
|
});
|
|
|
|
it("returns socket config when server has a socket", () => {
|
|
yaml.load.mockReturnValueOnce({
|
|
"docker-local": { socket: "/tmp/docker.sock", swarm: true },
|
|
});
|
|
|
|
const args = getDockerArguments("docker-local");
|
|
|
|
expect(args).toEqual({ conn: { socketPath: "/tmp/docker.sock" }, swarm: true });
|
|
});
|
|
|
|
it("returns host/port/tls/protocol/headers config when provided", () => {
|
|
yaml.load.mockReturnValueOnce({
|
|
remote: {
|
|
host: "10.0.0.1",
|
|
port: 2376,
|
|
swarm: false,
|
|
protocol: "http",
|
|
headers: { "X-Test": "1" },
|
|
tls: { caFile: "ca.pem", certFile: "cert.pem", keyFile: "key.pem" },
|
|
},
|
|
});
|
|
|
|
const args = getDockerArguments("remote");
|
|
|
|
expect(args).toEqual(
|
|
expect.objectContaining({
|
|
swarm: false,
|
|
conn: expect.objectContaining({
|
|
host: "10.0.0.1",
|
|
port: 2376,
|
|
protocol: "http",
|
|
headers: { "X-Test": "1" },
|
|
ca: expect.any(Buffer),
|
|
cert: expect.any(Buffer),
|
|
key: expect.any(Buffer),
|
|
}),
|
|
}),
|
|
);
|
|
});
|
|
|
|
it("returns null when server is not configured", () => {
|
|
yaml.load.mockReturnValueOnce({ other: { host: "x" } });
|
|
expect(getDockerArguments("missing")).toBeNull();
|
|
});
|
|
|
|
it("returns the raw server config when it has no host/socket overrides", () => {
|
|
yaml.load.mockReturnValueOnce({
|
|
raw: { swarm: true, something: "else" },
|
|
});
|
|
|
|
expect(getDockerArguments("raw")).toEqual({ swarm: true, something: "else" });
|
|
});
|
|
});
|