This is an automated email from the ASF dual-hosted git repository. xuanwo pushed a commit to branch xuanwo/aws-style-audit in repository https://gitbox.apache.org/repos/asf/opendal-reqsign.git
commit 1d596aaef3030723c38706e7f47a71fdeb717fe3 Author: Xuanwo <[email protected]> AuthorDate: Thu Feb 26 23:09:16 2026 +0800 chore: align default credential provider API style --- services/google/src/lib.rs | 3 +- services/oracle/src/lib.rs | 5 ++- services/oracle/src/provide_credential/default.rs | 47 +++++++++++++++++++++- services/tencent-cos/src/lib.rs | 2 +- .../volcengine-tos/src/provide_credential/mod.rs | 2 +- 5 files changed, 53 insertions(+), 6 deletions(-) diff --git a/services/google/src/lib.rs b/services/google/src/lib.rs index 2b3cd06..79785bd 100644 --- a/services/google/src/lib.rs +++ b/services/google/src/lib.rs @@ -27,5 +27,6 @@ pub use sign_request::RequestSigner; mod provide_credential; pub use provide_credential::{ - DefaultCredentialProvider, StaticCredentialProvider, VmMetadataCredentialProvider, + DefaultCredentialProvider, DefaultCredentialProviderBuilder, StaticCredentialProvider, + VmMetadataCredentialProvider, }; diff --git a/services/oracle/src/lib.rs b/services/oracle/src/lib.rs index 6bbc291..41123f7 100644 --- a/services/oracle/src/lib.rs +++ b/services/oracle/src/lib.rs @@ -30,10 +30,11 @@ pub use credential::Credential; mod sign_request; pub use sign_request::RequestSigner; -pub mod provide_credential; +mod provide_credential; #[allow(deprecated)] pub use provide_credential::ConfigCredentialProvider; pub use provide_credential::{ - ConfigFileCredentialProvider, DefaultCredentialProvider, EnvCredentialProvider, + ConfigFileCredentialProvider, DefaultCredentialProvider, DefaultCredentialProviderBuilder, + EnvCredentialProvider, StaticCredentialProvider, }; diff --git a/services/oracle/src/provide_credential/default.rs b/services/oracle/src/provide_credential/default.rs index e7265ad..6d7dbcd 100644 --- a/services/oracle/src/provide_credential/default.rs +++ b/services/oracle/src/provide_credential/default.rs @@ -25,11 +25,17 @@ use reqsign_core::{Context, ProvideCredential, ProvideCredentialChain, Result}; /// This loader will try to load credentials in the following order: /// 1. From environment variables /// 2. From the default Oracle config file (~/.oci/config) -#[derive(Debug, Default)] +#[derive(Debug)] pub struct DefaultCredentialProvider { chain: ProvideCredentialChain<Credential>, } +impl Default for DefaultCredentialProvider { + fn default() -> Self { + Self::new() + } +} + impl DefaultCredentialProvider { /// Create a builder to configure the default credential chain. pub fn builder() -> DefaultCredentialProviderBuilder { @@ -150,3 +156,42 @@ impl ProvideCredential for DefaultCredentialProvider { self.chain.provide_credential(ctx).await } } + +#[cfg(test)] +mod tests { + use super::*; + use crate::constants::{ORACLE_FINGERPRINT, ORACLE_KEY_FILE, ORACLE_TENANCY, ORACLE_USER}; + use reqsign_core::{Context, StaticEnv}; + use std::collections::HashMap; + + #[tokio::test] + async fn test_default_matches_new() { + let ctx = Context::new().with_env(StaticEnv { + home_dir: None, + envs: HashMap::from([ + (ORACLE_USER.to_string(), "test_user".to_string()), + (ORACLE_TENANCY.to_string(), "test_tenancy".to_string()), + (ORACLE_KEY_FILE.to_string(), "/tmp/key.pem".to_string()), + (ORACLE_FINGERPRINT.to_string(), "test_fingerprint".to_string()), + ]), + }); + + let from_default = DefaultCredentialProvider::default() + .provide_credential(&ctx) + .await + .expect("load must succeed") + .expect("credential must exist"); + let from_new = DefaultCredentialProvider::new() + .provide_credential(&ctx) + .await + .expect("load must succeed") + .expect("credential must exist"); + + assert_eq!(from_default.user, from_new.user); + assert_eq!(from_default.tenancy, from_new.tenancy); + assert_eq!(from_default.key_file, from_new.key_file); + assert_eq!(from_default.fingerprint, from_new.fingerprint); + assert!(from_default.expires_in.is_some()); + assert!(from_new.expires_in.is_some()); + } +} diff --git a/services/tencent-cos/src/lib.rs b/services/tencent-cos/src/lib.rs index 554a417..4ac18ca 100644 --- a/services/tencent-cos/src/lib.rs +++ b/services/tencent-cos/src/lib.rs @@ -27,5 +27,5 @@ pub use credential::Credential; mod sign_request; pub use sign_request::RequestSigner; -pub mod provide_credential; +mod provide_credential; pub use provide_credential::*; diff --git a/services/volcengine-tos/src/provide_credential/mod.rs b/services/volcengine-tos/src/provide_credential/mod.rs index 4461cd3..d9313bd 100644 --- a/services/volcengine-tos/src/provide_credential/mod.rs +++ b/services/volcengine-tos/src/provide_credential/mod.rs @@ -19,6 +19,6 @@ mod default; mod env; mod r#static; -pub use default::DefaultCredentialProvider; +pub use default::{DefaultCredentialProvider, DefaultCredentialProviderBuilder}; pub use env::EnvCredentialProvider; pub use r#static::StaticCredentialProvider;
