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;

Reply via email to