230 lines
5 KiB
TypeScript
230 lines
5 KiB
TypeScript
import { test } from "node:test";
|
|
import * as assert from "node:assert/strict";
|
|
import { parseArgs } from "./args";
|
|
import { LogLevel } from "sync-client";
|
|
|
|
test("parseArgs - parse basic arguments", () => {
|
|
const args = parseArgs([
|
|
"node",
|
|
"cli.js",
|
|
"-l",
|
|
"/path/to/vault",
|
|
"-r",
|
|
"https://sync.example.com",
|
|
"-t",
|
|
"mytoken",
|
|
"-v",
|
|
"default"
|
|
]);
|
|
|
|
assert.equal(args.localPath, "/path/to/vault");
|
|
assert.equal(args.remoteUri, "https://sync.example.com");
|
|
assert.equal(args.token, "mytoken");
|
|
assert.equal(args.vaultName, "default");
|
|
});
|
|
|
|
test("parseArgs - parse long form arguments", () => {
|
|
const args = parseArgs([
|
|
"node",
|
|
"cli.js",
|
|
"--local-path",
|
|
"/path/to/vault",
|
|
"--remote-uri",
|
|
"https://sync.example.com",
|
|
"--token",
|
|
"mytoken",
|
|
"--vault-name",
|
|
"default"
|
|
]);
|
|
|
|
assert.equal(args.localPath, "/path/to/vault");
|
|
assert.equal(args.remoteUri, "https://sync.example.com");
|
|
assert.equal(args.token, "mytoken");
|
|
assert.equal(args.vaultName, "default");
|
|
});
|
|
|
|
test("parseArgs - parse with optional arguments", () => {
|
|
const args = parseArgs([
|
|
"node",
|
|
"cli.js",
|
|
"-l",
|
|
"/path/to/vault",
|
|
"-r",
|
|
"https://sync.example.com",
|
|
"-t",
|
|
"mytoken",
|
|
"-v",
|
|
"default",
|
|
"--sync-concurrency",
|
|
"5",
|
|
"--max-file-size-mb",
|
|
"20"
|
|
]);
|
|
|
|
assert.equal(args.syncConcurrency, 5);
|
|
assert.equal(args.maxFileSizeMB, 20);
|
|
});
|
|
|
|
test("parseArgs - parse with multiple ignore patterns", () => {
|
|
const args = parseArgs([
|
|
"node",
|
|
"cli.js",
|
|
"-l",
|
|
"/path/to/vault",
|
|
"-r",
|
|
"https://sync.example.com",
|
|
"-t",
|
|
"mytoken",
|
|
"-v",
|
|
"default",
|
|
"--ignore-pattern",
|
|
".git/**",
|
|
"*.tmp"
|
|
]);
|
|
|
|
assert.deepEqual(args.ignorePatterns, [".git/**", "*.tmp"]);
|
|
});
|
|
|
|
test("parseArgs - throws on missing required arguments", () => {
|
|
assert.throws(() => {
|
|
parseArgs(["node", "cli.js", "-r", "https://sync.example.com"]);
|
|
}, /required option/);
|
|
});
|
|
|
|
test("parseArgs - throws on missing remote uri", () => {
|
|
assert.throws(() => {
|
|
parseArgs([
|
|
"node",
|
|
"cli.js",
|
|
"-l",
|
|
"/path/to/vault",
|
|
"-t",
|
|
"mytoken",
|
|
"-v",
|
|
"default"
|
|
]);
|
|
}, /--remote-uri/);
|
|
});
|
|
|
|
test("parseArgs - throws on missing token", () => {
|
|
assert.throws(() => {
|
|
parseArgs([
|
|
"node",
|
|
"cli.js",
|
|
"-l",
|
|
"/path/to/vault",
|
|
"-r",
|
|
"https://sync.example.com",
|
|
"-v",
|
|
"default"
|
|
]);
|
|
}, /--token/);
|
|
});
|
|
|
|
test("parseArgs - throws on missing vault name", () => {
|
|
assert.throws(() => {
|
|
parseArgs([
|
|
"node",
|
|
"cli.js",
|
|
"-l",
|
|
"/path/to/vault",
|
|
"-r",
|
|
"https://sync.example.com",
|
|
"-t",
|
|
"mytoken"
|
|
]);
|
|
}, /--vault-name/);
|
|
});
|
|
|
|
test("parseArgs - default log level is INFO", () => {
|
|
const args = parseArgs([
|
|
"node",
|
|
"cli.js",
|
|
"-l",
|
|
"/path/to/vault",
|
|
"-r",
|
|
"https://sync.example.com",
|
|
"-t",
|
|
"mytoken",
|
|
"-v",
|
|
"default"
|
|
]);
|
|
|
|
assert.equal(args.logLevel, LogLevel.INFO);
|
|
});
|
|
|
|
test("parseArgs - parse DEBUG log level", () => {
|
|
const args = parseArgs([
|
|
"node",
|
|
"cli.js",
|
|
"-l",
|
|
"/path/to/vault",
|
|
"-r",
|
|
"https://sync.example.com",
|
|
"-t",
|
|
"mytoken",
|
|
"-v",
|
|
"default",
|
|
"--log-level",
|
|
"DEBUG"
|
|
]);
|
|
|
|
assert.equal(args.logLevel, LogLevel.DEBUG);
|
|
});
|
|
|
|
test("parseArgs - parse ERROR log level", () => {
|
|
const args = parseArgs([
|
|
"node",
|
|
"cli.js",
|
|
"-l",
|
|
"/path/to/vault",
|
|
"-r",
|
|
"https://sync.example.com",
|
|
"-t",
|
|
"mytoken",
|
|
"-v",
|
|
"default",
|
|
"--log-level",
|
|
"ERROR"
|
|
]);
|
|
|
|
assert.equal(args.logLevel, LogLevel.ERROR);
|
|
});
|
|
|
|
test("parseArgs - log level is case insensitive", () => {
|
|
const args = parseArgs([
|
|
"node",
|
|
"cli.js",
|
|
"-l",
|
|
"/path/to/vault",
|
|
"-r",
|
|
"https://sync.example.com",
|
|
"-t",
|
|
"mytoken",
|
|
"-v",
|
|
"default",
|
|
"--log-level",
|
|
"debug"
|
|
]);
|
|
|
|
assert.equal(args.logLevel, LogLevel.DEBUG);
|
|
});
|
|
|
|
test("parseArgs - throws on invalid log level", () => {
|
|
assert.throws(() => {
|
|
parseArgs([
|
|
"node",
|
|
"cli.js",
|
|
"-l",
|
|
"/path/to/vault",
|
|
"-r",
|
|
"https://sync.example.com",
|
|
"-t",
|
|
"mytoken",
|
|
"-v",
|
|
"default",
|
|
"--log-level",
|
|
"INVALID"
|
|
]);
|
|
}, /Invalid log level/);
|
|
});
|