use std::time::Duration;
#[non_exhaustive]
#[derive(Debug, Clone)]
pub struct ValidationConfig {
pub leeway: Duration,
pub require_issuer: Option<String>,
pub require_audience: Option<String>,
}
impl Default for ValidationConfig {
fn default() -> Self {
Self {
leeway: Duration::ZERO,
require_issuer: None,
require_audience: None,
}
}
}
impl ValidationConfig {
#[must_use]
pub fn with_audience(mut self, aud: impl Into<String>) -> Self {
self.require_audience = Some(aud.into());
self
}
#[must_use]
pub fn with_issuer(mut self, iss: impl Into<String>) -> Self {
self.require_issuer = Some(iss.into());
self
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn default_has_zero_leeway_and_no_requirements() {
let config = ValidationConfig::default();
assert_eq!(config.leeway, Duration::ZERO);
assert!(config.require_issuer.is_none());
assert!(config.require_audience.is_none());
}
}