use serde_json::Value;
pub(super) fn scrub_saved_model_api_keys(values: &mut [Value]) {
for value in values {
let Some(object) = value.as_object_mut() else {
continue;
};
object.remove("api_key");
object.insert("has_api_key".to_string(), Value::Bool(false));
}
}
pub(super) fn prepare_saved_model_secrets(values: &mut [Value]) -> Result<(), String> {
scrub_saved_model_api_keys(values);
Ok(())
}
#[cfg(test)]
mod tests {
use super::*;
use serde_json::json;
#[test]
fn scrub_strips_api_key_and_clears_flag() {
let mut values = vec![json!({
"api_base": "https://example.invalid/v1",
"model": "m1",
"api_key": "example-token",
"has_api_key": true
})];
prepare_saved_model_secrets(&mut values).expect("prepare");
let object = values[0].as_object().expect("object");
assert!(!object.contains_key("api_key"));
assert_eq!(object.get("has_api_key"), Some(&Value::Bool(false)));
}
}