synwire_core/credentials/
static_creds.rs1use crate::BoxFuture;
4use crate::credentials::SecretValue;
5use crate::credentials::traits::CredentialProvider;
6use crate::error::SynwireError;
7
8#[derive(Debug, Clone)]
20pub struct StaticCredentialProvider {
21 secret: SecretValue,
22}
23
24impl StaticCredentialProvider {
25 pub const fn new(secret: SecretValue) -> Self {
27 Self { secret }
28 }
29}
30
31impl CredentialProvider for StaticCredentialProvider {
32 fn get_credential(&self) -> BoxFuture<'_, Result<SecretValue, SynwireError>> {
33 let secret = self.secret.clone();
34 Box::pin(async move { Ok(secret) })
35 }
36}
37
38#[cfg(test)]
39#[allow(clippy::unwrap_used)]
40mod tests {
41 use super::*;
42
43 #[tokio::test]
44 async fn returns_fixed_value() {
45 let provider = StaticCredentialProvider::new(SecretValue::new("sk-test-key"));
46 let cred = provider.get_credential().await.unwrap();
47 assert_eq!(cred.expose(), "sk-test-key");
48 }
49
50 #[tokio::test]
51 async fn refresh_returns_same_value() {
52 let provider = StaticCredentialProvider::new(SecretValue::new("sk-test-key"));
53 let cred = provider.refresh_credential().await.unwrap();
54 assert_eq!(cred.expose(), "sk-test-key");
55 }
56}