use async_trait::async_trait;
use super::super::auth_strategy::{AuthConfig, AuthStrategy, Credentials};
#[derive(Debug, Default)]
pub struct StubAuthStrategy;
#[async_trait]
impl AuthStrategy for StubAuthStrategy {
async fn authenticate(&self, _config: &AuthConfig) -> anyhow::Result<Credentials> {
Ok(Credentials::new())
}
fn validate_credentials(&self, _credentials: &Credentials) -> bool {
true
}
}
#[cfg(test)]
mod tests {
use super::*;
#[tokio::test]
async fn always_authenticates_with_empty_credentials() {
let strategy = StubAuthStrategy;
let credentials = strategy.authenticate(&AuthConfig::new()).await.unwrap();
assert!(credentials.is_empty());
}
#[test]
fn always_validates() {
let strategy = StubAuthStrategy;
assert!(strategy.validate_credentials(&Credentials::new()));
}
}