Ctrl K
ComunidadGuías…

test/restore.test.ts

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
import { assertStringIncludes } from "@std/assert";
import { expect } from "@std/expect";
import { it as test } from "@std/testing/bdd";
import { RESTORE_USAGE } from "#scripts/restore-lib.ts";
import { runRestoreTask } from "#src/restore.ts";
import { TEST_ENCRYPTION_KEY } from "#test-utils/internal.ts";

test("uses only file database settings when running the restore CLI", async () => {
  const env: Record<string, string> = {
    DB_ENCRYPTION_KEY: "ambient-key",
    DB_TOKEN: "ambient-token",
    DB_URL: ":memory:",
    OTHER_KEY: "unchanged",
  };
  const stderr: string[] = [];
  let result: number | undefined;

  await runRestoreTask(
    {
      DB_ENCRYPTION_KEY: TEST_ENCRYPTION_KEY,
      DB_URL: "libsql://tickets.example.com",
    },
    (key, value) =>
      value === undefined
        ? Reflect.deleteProperty(env, key)
        : Reflect.set(env, key, value),
    async (run) => {
      result = await run({
        args: [],
        getEnv: () => undefined,
        stderr: (line) => stderr.push(line),
        stdout: () => {},
      });
    },
  );

  expect(env).toEqual({
    DB_ENCRYPTION_KEY: TEST_ENCRYPTION_KEY,
    DB_URL: "libsql://tickets.example.com",
    OTHER_KEY: "unchanged",
  });
  expect(result).toBe(1);
  expect(stderr).toEqual([RESTORE_USAGE]);
});

test("default restore dependencies read the requested backup path", async () => {
  const path = `missing-restore-${crypto.randomUUID()}.zip`;
  const env: Record<string, string> = {
    DB_ENCRYPTION_KEY: TEST_ENCRYPTION_KEY,
    DB_URL: "file:target.db",
  };
  const stderr: string[] = [];
  let result: number | undefined;

  await runRestoreTask(
    env,
    (key, value) =>
      value === undefined
        ? Reflect.deleteProperty(env, key)
        : Reflect.set(env, key, value),
    async (run) => {
      result = await run({
        args: [path],
        getEnv: (key) => env[key],
        stderr: (line) => stderr.push(line),
        stdout: () => {},
      });
    },
  );

  expect(result).toBe(1);
  assertStringIncludes(stderr[0] ?? "", `Could not read ${path}`);
});