feat: add credential priority controls and OAuth defaults

This commit is contained in:
lzt404 committed 2026-07-30 01:21:48 +08:00
1 parent 0f3e5093e8
commit bbe22a96eb
13 files changed
+582 -416

No files matched your search

+38 -1
View File
@@ -1,5 +1,11 @@
import { describe, expect, it } from 'bun:test';
import { dedupeAuthFiles } from '../src/services/authFiles';
import {
changedOAuthAuthFileNames,
dedupeAuthFiles,
normalizeAuthFilePriorityInput,
parseAuthFilePriority,
snapshotAuthFiles,
} from '../src/services/authFiles';
describe('认证文件列表规范化', () => {
it('合并同名的磁盘和运行时记录并优先保留磁盘状态', () => {
@@ -28,3 +34,34 @@ describe('认证文件列表规范化', () => {
expect(files[0].auth_index).toBe('runtime-index');
});
});
describe('authentication file priority', () => {
it('accepts safe integers from API values', () => {
expect(parseAuthFilePriority(10)).toBe(10);
expect(parseAuthFilePriority(' -3 ')).toBe(-3);
expect(parseAuthFilePriority(1.5)).toBeUndefined();
expect(parseAuthFilePriority('high')).toBeUndefined();
});
it('uses zero to restore the default and rejects invalid input', () => {
expect(normalizeAuthFilePriorityInput('')).toBe(0);
expect(normalizeAuthFilePriorityInput('0')).toBe(0);
expect(normalizeAuthFilePriorityInput('12')).toBe(12);
expect(normalizeAuthFilePriorityInput('1.5')).toBeNull();
});
it('finds only credentials created or updated by the completed OAuth provider', () => {
const before = snapshotAuthFiles([
{ name: 'codex-old.json', provider: 'codex', modtime: 1, priority: 8 },
{ name: 'codex-custom.json', provider: 'codex', modtime: 1, priority: 5 },
{ name: 'claude-old.json', provider: 'claude', modtime: 1 },
]);
expect(changedOAuthAuthFileNames(before, [
{ name: 'codex-old.json', provider: 'codex', modtime: 2 },
{ name: 'codex-custom.json', provider: 'codex', modtime: 2, priority: 5 },
{ name: 'codex-new.json', type: 'codex', modtime: 2 },
{ name: 'claude-old.json', provider: 'claude', modtime: 2 },
], 'codex')).toEqual(['codex-old.json', 'codex-new.json']);
});
});