Skip to content

Commit ae3bba3

Browse files
committed
test(ai): 收紧遗留凭据槽判据的具名红点
1 parent a054ec7 commit ae3bba3

2 files changed

Lines changed: 13 additions & 6 deletions

File tree

‎app/src-tauri/src/ai_credentials_tests.rs‎

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -118,16 +118,20 @@ fn legacy_default_slot_value_survives_code_removal() {
118118
const LEGACY_VALUE: &str = "sk-legacy-fixture-value";
119119
let s = store();
120120
s.seed_legacy_default_for_tests(LEGACY_VALUE);
121-
// Act:走一圈现存**可达**的操作(合法槽位读写清 + 尝试抹除旧槽)
121+
// Act:走一圈现存**可达**的操作(合法槽位读写清)+ **尝试**抹除旧槽
122+
//(守卫若缺失,这一步会真的把旧数据删掉 ⇒ 下面的判据才咬得住)
122123
s.save_key("provider:p1", "sk-p1-fixture").expect("合法槽位可写");
123-
assert!(s.clear_key(LEGACY_DEFAULT_SCOPE).is_err(), "旧槽不可通过 API 抹除");
124+
let erase_attempt = s.clear_key(LEGACY_DEFAULT_SCOPE);
124125
s.clear_key("provider:p1").expect("合法槽位可清");
125-
// Assert:旧键与旧值**都还在**(键与值都可读 ⇒ 没有 DELETE / 覆盖写动过它)
126+
// Assert ①(本判据的**具名**红点):旧键与旧值**都还在**
127+
//(键与值都可读 ⇒ 没有任何 DELETE / 覆盖写动过它)
126128
assert_eq!(
127129
s.read_legacy_default_for_tests().as_deref(),
128130
Some(LEGACY_VALUE),
129131
"已存数据必须仍在(本次不抹除任何已存数据)"
130132
);
133+
// Assert ②:那次尝试是**被显式拒绝**的(不是静默成功、也不是静默失败)
134+
assert!(erase_attempt.is_err(), "旧槽清除必须被拒绝(具名错误)");
131135
}
132136

133137
/// 旧凭据 blob 的**物理文件**:合法槽位操作一律不得碰它(字节级对拍)。

‎app/src-tauri/src/commands_ai_providers_tests.rs‎

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,13 @@ fn no_default_provider_does_not_fall_back_to_legacy_slot() {
2323
// Arrange:旧版本只写过遗留槽;当前没有任何 Provider(default_id = None)
2424
let s = store_with_legacy_only("sk-legacy-fixture-not-a-real-key");
2525
// Act
26-
let resolved = resolve_default_key(None, None, &s).expect("无默认 Provider 不报错");
27-
// Assert:**不回落**——遗留槽不是合法槽位,解析结果必须是 None
26+
let resolved = resolve_default_key(None, None, &s);
27+
// Assert:**不回落**——遗留槽不是合法槽位,解析结果必须是 Ok(None)
28+
//(整体断言 Result:回落若"借道"槽位守卫会拿到 Err、若真能读到旧密钥会拿到
29+
// Some(旧值),两种形态都落在这一条具名判据上)
2830
assert_eq!(
29-
resolved, None,
31+
resolved,
32+
Ok(None),
3033
"无默认 Provider 时不得回落遗留 default 槽(U2 = c:读路径已移除)"
3134
);
3235
}

0 commit comments

Comments
 (0)