feat: add credential priority controls and OAuth defaults
This commit is contained in:
1 parent
0f3e5093e8
commit
bbe22a96eb
13 files changed
+582
-416
No files matched your search
+38
-1
@@ -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']);
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user