subscan 1.3.0

A subdomain enumeration tool leveraging diverse techniques, designed for advanced pentesting operations
Documentation
use std::time::Duration;

use subscan::{
    cache::CacheManager,
    interfaces::{module::SubscanModuleInterface, requester::RequesterInterface},
    types::config::requester::RequesterConfig,
};

#[tokio::test]
async fn configure_test() {
    let manager = CacheManager::default();

    let old_config = RequesterConfig::default();
    let new_config = RequesterConfig {
        timeout: Duration::from_secs(120),
        ..Default::default()
    };

    for module in manager.modules().await.iter() {
        if let Some(requester) = module.lock().await.requester().await {
            assert_eq!(requester.lock().await.config().await, &old_config);
        }
    }

    manager.configure(new_config.clone()).await;

    for module in manager.modules().await.iter() {
        if let Some(requester) = module.lock().await.requester().await {
            assert_eq!(requester.lock().await.config().await, &new_config);
        }
    }
}

#[tokio::test]
async fn module_test() {
    let manager = CacheManager::default();

    assert!(manager.module("foo").await.is_none());
    assert!(manager.module("google").await.is_some());
}