use keyhog_scanner::testing::looks_like_standard_base64_blob;
#[test]
fn standard_base64_blob_admits_pure_alnum_high_diversity() {
let v = "8Xs2ny0Ng9nqVusefKpLxC7DJ1lj4YplT6m62LAg";
assert_eq!(v.len(), 40);
let distinct: std::collections::BTreeSet<char> = v.chars().collect();
assert!(distinct.len() >= 32, "fixture diversity must be >= 32");
assert!(
looks_like_standard_base64_blob(v),
"40-char pure-alphanumeric mult-of-4 base64 with high alphabet \
diversity is a random-bytes shape and must be slammed",
);
}
#[test]
fn standard_base64_blob_rejects_low_diversity_alnum() {
let v = "AAaaBBbbCCccDDddEEee11223344556677889900";
assert_eq!(v.len(), 40);
let distinct: std::collections::BTreeSet<char> = v.chars().collect();
assert!(distinct.len() < 32, "fixture diversity must be < 32");
assert!(
!looks_like_standard_base64_blob(v),
"low-diversity 40-char alnum must NOT fire (real short-token \
recall preserved); got diversity={}",
distinct.len(),
);
}
#[test]
fn standard_base64_blob_admits_padded_no_punct() {
let v = "Y9yPilpjN2WTIqtSuWGOKwSkvfmeAoLFCj099gWg24tohA==";
assert_eq!(v.len(), 48);
assert!(
looks_like_standard_base64_blob(v),
"padded 48-char base64 without +/ punct must fire via the \
padded-admit clause (base64-protobuf cause #4)",
);
}
#[test]
fn standard_base64_blob_rejects_non_mult4_no_pad() {
let v = "NbrnTP3fAbnFbmOHnKYaXRvj7uff0LYTH8xIZM1Ja";
assert_eq!(v.len(), 41);
assert!(
!looks_like_standard_base64_blob(v),
"41-char non-mult-of-4 unpadded base64 must NOT fire (the \
length precondition fails before any admit clause)",
);
}