pub mod collaboration_organization;
pub mod models;
pub mod searchable_visible_rules;
use crate::{
core::config::Config,
service::trust_party::{
collaboration_organization::CollaborationOrganizationService,
searchable_visible_rules::SearchableVisibleRulesService,
},
};
pub struct TrustPartyService {
pub collaboration_organization: CollaborationOrganizationService,
pub searchable_visible_rules: SearchableVisibleRulesService,
}
impl TrustPartyService {
pub fn new(config: Config) -> Self {
Self {
collaboration_organization: CollaborationOrganizationService::new(config.clone()),
searchable_visible_rules: SearchableVisibleRulesService::new(config),
}
}
}
#[cfg(test)]
mod tests {
use super::*;
use std::time::Duration;
#[test]
fn test_trust_party_service_creation() {
let config = Config::default();
let service = TrustPartyService::new(config.clone());
assert_eq!(
service.collaboration_organization.config.app_id,
config.app_id
);
assert_eq!(
service.collaboration_organization.config.app_secret,
config.app_secret
);
assert_eq!(
service.searchable_visible_rules.config.app_id,
config.app_id
);
assert_eq!(
service.searchable_visible_rules.config.app_secret,
config.app_secret
);
}
#[test]
fn test_trust_party_service_with_custom_config() {
let config = Config::builder()
.app_id("trust_party_test_app")
.app_secret("trust_party_test_secret")
.req_timeout(Duration::from_secs(150))
.build();
let service = TrustPartyService::new(config.clone());
assert_eq!(
service.collaboration_organization.config.app_id,
"trust_party_test_app"
);
assert_eq!(
service.collaboration_organization.config.app_secret,
"trust_party_test_secret"
);
assert_eq!(
service.collaboration_organization.config.req_timeout,
Some(Duration::from_secs(150))
);
assert_eq!(
service.searchable_visible_rules.config.app_id,
"trust_party_test_app"
);
assert_eq!(
service.searchable_visible_rules.config.req_timeout,
Some(Duration::from_secs(150))
);
}
#[test]
fn test_trust_party_service_config_independence() {
let config1 = Config::builder().app_id("trust_party_app_1").build();
let config2 = Config::builder().app_id("trust_party_app_2").build();
let service1 = TrustPartyService::new(config1);
let service2 = TrustPartyService::new(config2);
assert_eq!(
service1.collaboration_organization.config.app_id,
"trust_party_app_1"
);
assert_eq!(
service2.collaboration_organization.config.app_id,
"trust_party_app_2"
);
assert_ne!(
service1.collaboration_organization.config.app_id,
service2.collaboration_organization.config.app_id
);
assert_ne!(
service1.searchable_visible_rules.config.app_id,
service2.searchable_visible_rules.config.app_id
);
}
#[test]
fn test_trust_party_service_sub_services_accessible() {
let config = Config::default();
let service = TrustPartyService::new(config.clone());
assert_eq!(
service.collaboration_organization.config.app_id,
config.app_id
);
assert_eq!(
service.searchable_visible_rules.config.app_id,
config.app_id
);
}
#[test]
fn test_trust_party_service_config_cloning() {
let config = Config::builder()
.app_id("clone_test_app")
.app_secret("clone_test_secret")
.build();
let service = TrustPartyService::new(config.clone());
assert_eq!(
service.collaboration_organization.config.app_id,
"clone_test_app"
);
assert_eq!(
service.collaboration_organization.config.app_secret,
"clone_test_secret"
);
assert_eq!(
service.searchable_visible_rules.config.app_secret,
"clone_test_secret"
);
assert_eq!(
service.searchable_visible_rules.config.app_id,
"clone_test_app"
);
}
#[test]
fn test_trust_party_service_timeout_propagation() {
let config = Config::builder()
.req_timeout(Duration::from_secs(180))
.build();
let service = TrustPartyService::new(config);
assert_eq!(
service.collaboration_organization.config.req_timeout,
Some(Duration::from_secs(180))
);
assert_eq!(
service.searchable_visible_rules.config.req_timeout,
Some(Duration::from_secs(180))
);
}
#[test]
fn test_trust_party_service_multiple_instances() {
let config = Config::default();
let service1 = TrustPartyService::new(config.clone());
let service2 = TrustPartyService::new(config.clone());
assert_eq!(
service1.collaboration_organization.config.app_id,
service2.collaboration_organization.config.app_id
);
assert_eq!(
service1.collaboration_organization.config.app_secret,
service2.collaboration_organization.config.app_secret
);
assert_eq!(
service1.searchable_visible_rules.config.app_id,
service2.searchable_visible_rules.config.app_id
);
assert_eq!(
service1.searchable_visible_rules.config.app_secret,
service2.searchable_visible_rules.config.app_secret
);
}
#[test]
fn test_trust_party_service_config_consistency() {
let config = Config::builder()
.app_id("consistency_test")
.app_secret("consistency_secret")
.req_timeout(Duration::from_secs(130))
.build();
let service = TrustPartyService::new(config);
assert_eq!(
service.collaboration_organization.config.app_id,
"consistency_test"
);
assert_eq!(
service.collaboration_organization.config.app_secret,
"consistency_secret"
);
assert_eq!(
service.collaboration_organization.config.req_timeout,
Some(Duration::from_secs(130))
);
assert_eq!(
service.searchable_visible_rules.config.app_id,
"consistency_test"
);
assert_eq!(
service.searchable_visible_rules.config.app_secret,
"consistency_secret"
);
assert_eq!(
service.searchable_visible_rules.config.req_timeout,
Some(Duration::from_secs(130))
);
}
}