55 lines
1.8 KiB
TypeScript
55 lines
1.8 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
|
|
import type { CoreConfig } from "../types.js";
|
|
import { resolveMatrixConfig } from "./client.js";
|
|
|
|
describe("resolveMatrixConfig", () => {
|
|
it("prefers config over env", () => {
|
|
const cfg = {
|
|
channels: {
|
|
matrix: {
|
|
homeserver: "https://cfg.example.org",
|
|
userId: "@cfg:example.org",
|
|
accessToken: "cfg-token",
|
|
password: "cfg-pass",
|
|
deviceName: "CfgDevice",
|
|
initialSyncLimit: 5,
|
|
},
|
|
},
|
|
} as CoreConfig;
|
|
const env = {
|
|
MATRIX_HOMESERVER: "https://env.example.org",
|
|
MATRIX_USER_ID: "@env:example.org",
|
|
MATRIX_ACCESS_TOKEN: "env-token",
|
|
MATRIX_PASSWORD: "env-pass",
|
|
MATRIX_DEVICE_NAME: "EnvDevice",
|
|
} as NodeJS.ProcessEnv;
|
|
const resolved = resolveMatrixConfig(cfg, env);
|
|
expect(resolved).toEqual({
|
|
homeserver: "https://cfg.example.org",
|
|
userId: "@cfg:example.org",
|
|
accessToken: "cfg-token",
|
|
password: "cfg-pass",
|
|
deviceName: "CfgDevice",
|
|
initialSyncLimit: 5,
|
|
});
|
|
});
|
|
|
|
it("uses env when config is missing", () => {
|
|
const cfg = {} as CoreConfig;
|
|
const env = {
|
|
MATRIX_HOMESERVER: "https://env.example.org",
|
|
MATRIX_USER_ID: "@env:example.org",
|
|
MATRIX_ACCESS_TOKEN: "env-token",
|
|
MATRIX_PASSWORD: "env-pass",
|
|
MATRIX_DEVICE_NAME: "EnvDevice",
|
|
} as NodeJS.ProcessEnv;
|
|
const resolved = resolveMatrixConfig(cfg, env);
|
|
expect(resolved.homeserver).toBe("https://env.example.org");
|
|
expect(resolved.userId).toBe("@env:example.org");
|
|
expect(resolved.accessToken).toBe("env-token");
|
|
expect(resolved.password).toBe("env-pass");
|
|
expect(resolved.deviceName).toBe("EnvDevice");
|
|
expect(resolved.initialSyncLimit).toBeUndefined();
|
|
});
|
|
});
|