secrets_provider_tests/
assertions.rs1use crate::ProviderUnderTest;
2use crate::retry_async;
3use anyhow::{Context, Result};
4use std::time::Duration;
5
6pub async fn assert_get_eq<P: ProviderUnderTest>(
7 provider: &P,
8 provider_name: &str,
9 key: &str,
10 expected: &[u8],
11) -> Result<()> {
12 let got = retry_async(
13 || async { provider.get(key).await },
14 5,
15 Duration::from_millis(100),
16 )
17 .await
18 .with_context(|| format!("get failed for {provider_name}:{key}"))?;
19 let Some(actual) = got else {
20 anyhow::bail!("expected value for {provider_name}:{key}, got none");
21 };
22 if actual != expected {
23 anyhow::bail!(
24 "value mismatch for {provider_name}:{key} ({} vs {})",
25 actual.len(),
26 expected.len()
27 );
28 }
29 Ok(())
30}
31
32pub async fn assert_deleted<P: ProviderUnderTest>(
33 provider: &P,
34 provider_name: &str,
35 key: &str,
36) -> Result<()> {
37 let got = retry_async(
38 || async { provider.get(key).await },
39 5,
40 Duration::from_millis(150),
41 )
42 .await
43 .with_context(|| format!("delete confirmation failed for {provider_name}:{key}"))?;
44
45 if got.is_some() {
46 anyhow::bail!("expected deletion for {provider_name}:{key}");
47 }
48 Ok(())
49}