Files
Netcatty/domain/sftpTerminalIdentity.test.ts
69497ccc6a fix(terminal): offer saved password identities in SSH re-auth dialog (#3477)
* fix(#3475): automated AI fix

* fix: address Codex review on PR #3477

* fix: keep SSH identity picker state accurate

* style: keep SSH identity picker source ASCII-only

* fix: require usernames for saved SSH identity retries

* Keep selected SSH identity for terminal SFTP

* Share reauthenticated identity with all terminal SFTP entry points

* Pass SFTP identity source setter into layer effects

* Use effective identity for preset SFTP panel

* fix: keep focused SFTP identity in sync for toggle

* fix(terminal): use selected vault identity without exposing password

---------

Co-authored-by: netcatty-bot <308658023+netcatty-bot@users.noreply.github.com>
Co-authored-by: bincxz <16399091+binaricat@users.noreply.github.com>
2026-09-27 15:43:25 +08:00

46 lines
2.0 KiB
TypeScript

import assert from "node:assert/strict";
import test from "node:test";
import type { Host } from "./models.ts";
import { isSameSftpHostSelection, resolveTerminalSftpHost } from "./sftpTerminalIdentity.ts";
const host = (id: string, username: string): Host => ({
id, label: id, hostname: `${id}.example.test`, port: 22, username,
tags: [], os: "linux",
});
test("SFTP target changes when a focused session uses another saved identity", () => {
const root = host("shared", "root");
const deploy = { ...root, username: "deploy", identityId: "deploy-id" };
const alternateDeploy = { ...deploy, identityId: "alternate-deploy-id" };
assert.equal(isSameSftpHostSelection(root, deploy), false);
assert.equal(isSameSftpHostSelection(deploy, alternateDeploy), false);
assert.equal(isSameSftpHostSelection(deploy, { ...deploy }), true);
assert.equal(isSameSftpHostSelection(deploy, { ...deploy, port: 2222 }), false);
});
test("SFTP follows each focused terminal's authenticated identity across focus changes", () => {
const root = host("shared", "root");
const deploy = { ...root, username: "deploy", identityId: "deploy-id" };
const other = host("other", "alice");
assert.equal(resolveTerminalSftpHost({
sessionHost: root, storedHost: other, authenticatedHost: deploy, followsTerminal: true,
}), deploy);
assert.equal(resolveTerminalSftpHost({
sessionHost: root, storedHost: root, authenticatedHost: deploy, followsTerminal: true,
}), deploy);
assert.equal(resolveTerminalSftpHost({
sessionHost: other, storedHost: deploy, authenticatedHost: undefined, followsTerminal: true,
}), other);
assert.equal(resolveTerminalSftpHost({
sessionHost: root, storedHost: other, authenticatedHost: deploy, followsTerminal: true,
}), deploy);
assert.equal(resolveTerminalSftpHost({
sessionHost: root, storedHost: other, authenticatedHost: deploy, followsTerminal: false,
}), root);
assert.equal(resolveTerminalSftpHost({
sessionHost: root, authenticatedHost: { ...deploy, port: 2222 }, followsTerminal: true,
}), root);
});