Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion services/google/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -27,5 +27,6 @@ pub use sign_request::RequestSigner;

mod provide_credential;
pub use provide_credential::{
DefaultCredentialProvider, StaticCredentialProvider, VmMetadataCredentialProvider,
DefaultCredentialProvider, DefaultCredentialProviderBuilder, StaticCredentialProvider,
VmMetadataCredentialProvider,
};
5 changes: 3 additions & 2 deletions services/oracle/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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,
};
47 changes: 46 additions & 1 deletion services/oracle/src/provide_credential/default.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -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());
}
}
2 changes: 1 addition & 1 deletion services/tencent-cos/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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::*;
2 changes: 1 addition & 1 deletion services/volcengine-tos/src/provide_credential/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Loading