pub mod models;
pub mod v1;
use crate::core::config::Config;
pub struct VerificationService {
pub v1: v1::V1,
}
impl VerificationService {
pub fn new(config: Config) -> Self {
Self {
v1: v1::V1::new(config),
}
}
}
#[cfg(test)]
mod tests {
use super::*;
use std::time::Duration;
#[test]
fn test_verification_service_creation() {
let config = Config::default();
let service = VerificationService::new(config.clone());
assert_eq!(service.v1.config.app_id, config.app_id);
assert_eq!(service.v1.config.app_secret, config.app_secret);
}
#[test]
fn test_verification_service_with_custom_config() {
let config = Config::builder()
.app_id("verification_test_app")
.app_secret("verification_test_secret")
.req_timeout(Duration::from_secs(45))
.build();
let service = VerificationService::new(config.clone());
assert_eq!(service.v1.config.app_id, "verification_test_app");
assert_eq!(service.v1.config.app_secret, "verification_test_secret");
assert_eq!(service.v1.config.req_timeout, Some(Duration::from_secs(45)));
}
#[test]
fn test_verification_service_debug_trait() {
let config = Config::default();
let service = VerificationService::new(config);
let debug_output = format!("{:?}", service.v1.config);
assert!(debug_output.contains("Config"));
}
#[test]
fn test_verification_service_config_independence() {
let config1 = Config::builder().app_id("app_1").build();
let config2 = Config::builder().app_id("app_2").build();
let service1 = VerificationService::new(config1);
let service2 = VerificationService::new(config2);
assert_eq!(service1.v1.config.app_id, "app_1");
assert_eq!(service2.v1.config.app_id, "app_2");
assert_ne!(service1.v1.config.app_id, service2.v1.config.app_id);
}
#[test]
fn test_verification_service_v1_access() {
let config = Config::default();
let service = VerificationService::new(config.clone());
assert_eq!(service.v1.config.app_id, config.app_id);
}
#[test]
fn test_verification_service_multiple_instances() {
let config = Config::default();
let service1 = VerificationService::new(config.clone());
let service2 = VerificationService::new(config.clone());
assert_eq!(service1.v1.config.app_id, service2.v1.config.app_id);
assert_eq!(service1.v1.config.app_secret, service2.v1.config.app_secret);
}
}