[Init] Initial commit - NetMesh terminal manager
Some checks failed
build-packages / resolve bundled mosh-client (push) Has been cancelled
build-packages / resolve bundled et-client (push) Has been cancelled
build-packages / build-macos (push) Has been cancelled
build-packages / build-windows (push) Has been cancelled
build-packages / build-linux-x64 (push) Has been cancelled
build-packages / build-linux-arm64 (push) Has been cancelled
build-packages / release (push) Has been cancelled
build-packages / update Nix release metadata (push) Has been cancelled
build-packages / bump homebrew tap (push) Has been cancelled
test / lint-and-test (push) Has been cancelled
AI automation / Route event (push) Has been cancelled
AI automation / Hand reopened issue to maintainers (push) Has been cancelled
AI automation / Clean source issue state (push) Has been cancelled
AI automation / Reconcile handoffs (push) Has been cancelled
AI automation / Classify issue (push) Has been cancelled
AI automation / Claude Code smoke (push) Has been cancelled
AI automation / Review issue follow-up (push) Has been cancelled
AI automation / Publish issue follow-up (push) Has been cancelled
AI automation / Implement with Claude Code (push) Has been cancelled
AI automation / Publish implement PR (push) Has been cancelled
AI automation / Continue queued issue comments (push) Has been cancelled
AI automation / Codex review loop (push) Has been cancelled
AI automation / Publish Codex fix (push) Has been cancelled
AI automation / Clear Codex dispatch marker (push) Has been cancelled
AI automation / Own PR re-request Codex (push) Has been cancelled
AI automation / External PR re-request Codex (push) Has been cancelled
AI automation / Poll Codex reaction / retry (push) Has been cancelled
build-et-binaries / build-linux-x64 (push) Has been cancelled
build-et-binaries / build-linux-arm64 (push) Has been cancelled
build-et-binaries / build-macos-universal (push) Has been cancelled
build-et-binaries / build-windows-x64 (push) Has been cancelled
build-et-binaries / release (push) Has been cancelled

This commit is contained in:
2026-09-13 18:24:01 +08:00
commit 3c72efcb7f
3255 changed files with 907009 additions and 0 deletions

View File

@@ -0,0 +1,30 @@
import test from 'node:test';
import assert from 'node:assert/strict';
import { EncryptionService } from '../EncryptionService';
import { unlockImpl } from './stateAndSecurityMethods';
for (const scenario of ['rotated-valid-password', 'rotated-invalid-old-password', 'locked-during-unlock'] as const) {
test(`unlock rejects a superseded request instead of reporting a bad password: ${scenario}`, async () => {
const oldConfig = await EncryptionService.createMasterKeyConfig('old-fixture-password');
const newConfig = await EncryptionService.createMasterKeyConfig('new-fixture-password');
let generation = 0;
const manager = {
state: { masterKeyConfig: oldConfig, securityState: 'LOCKED', unlockedKey: null },
getSyncSecurityGeneration: () => generation,
};
const pending = unlockImpl.call(manager,
scenario === 'rotated-invalid-old-password' ? 'new-fixture-password' : 'old-fixture-password');
if (scenario !== 'locked-during-unlock') manager.state.masterKeyConfig = newConfig;
generation += 1;
await assert.rejects(pending, /changed while unlocking/i);
assert.equal(manager.state.securityState, 'LOCKED');
assert.equal(manager.state.unlockedKey, null);
});
}
test('a wrong password for the current configuration remains an ordinary verification failure', async () => {
const config = await EncryptionService.createMasterKeyConfig('correct-fixture-password');
const manager = { state: { masterKeyConfig: config, securityState: 'LOCKED', unlockedKey: null } };
assert.equal(await unlockImpl.call(manager, 'wrong-fixture-password'), false);
assert.equal(manager.state.unlockedKey, null);
});