mirror of
https://github.com/vrtmrz/obsidian-livesync.git
synced 2026-08-23 20:07:04 +00:00
57 lines
2.2 KiB
TypeScript
57 lines
2.2 KiB
TypeScript
import { describe, expect, it, vi } from "vitest";
|
|
import type { ObsidianLiveSyncSettings } from "@vrtmrz/livesync-commonlib/compat/common/models/setting.type";
|
|
import { isValidCouchDBServerURL, probeCouchDBConnection } from "./couchDBConnectionProbe";
|
|
|
|
const settings = {
|
|
couchDB_URI: "https://couch.example",
|
|
couchDB_DBNAME: "notes",
|
|
} as ObsidianLiveSyncSettings;
|
|
|
|
describe("CouchDB setup connection policy", () => {
|
|
it.each([
|
|
[false, "connect to an existing database"],
|
|
[true, "create or connect to a database"],
|
|
] as const)(
|
|
"%s can %s without changing the Commonlib connection contract",
|
|
async (createIfMissing, _description) => {
|
|
const close = vi.fn(async () => undefined);
|
|
const connectRemoteCouchDBWithSetting = vi.fn(async () => ({
|
|
db: { close },
|
|
info: { db_name: "notes" },
|
|
}));
|
|
const replicator = {
|
|
isMobile: vi.fn(() => false),
|
|
connectRemoteCouchDBWithSetting,
|
|
tryConnectRemote: vi.fn(),
|
|
};
|
|
|
|
await expect(probeCouchDBConnection(replicator, settings, createIfMissing)).resolves.toEqual({ ok: true });
|
|
expect(connectRemoteCouchDBWithSetting).toHaveBeenCalledWith(settings, false, createIfMissing, false);
|
|
expect(replicator.tryConnectRemote).not.toHaveBeenCalled();
|
|
expect(close).toHaveBeenCalledOnce();
|
|
}
|
|
);
|
|
|
|
it("returns the connection error without saving or creating through another path", async () => {
|
|
const replicator = {
|
|
isMobile: vi.fn(() => true),
|
|
connectRemoteCouchDBWithSetting: vi.fn(() => "database does not exist"),
|
|
};
|
|
|
|
await expect(probeCouchDBConnection(replicator, settings, false)).resolves.toEqual({
|
|
ok: false,
|
|
reason: "database does not exist",
|
|
});
|
|
});
|
|
|
|
it.each([
|
|
["https://couch.example", true],
|
|
["http://127.0.0.1:5984", true],
|
|
["ftp://couch.example", false],
|
|
["couch.example", false],
|
|
["https://", false],
|
|
])("validates the saved server URL %s", (value, expected) => {
|
|
expect(isValidCouchDBServerURL(value)).toBe(expected);
|
|
});
|
|
});
|