// file: crates/ksp-app-backfill-desk/unit_tests/dto_common.rs // version: 6 #[test] fn command_error_projection_excludes_arbitrary_context_and_source_values() { let source = std::io::Error::other("secret-source"); let error = ksp_core_lib::Error::new(ksp_core_lib::ErrorCode::new("test", "failed"), "safe message") .with_context("secret", "hidden") .with_source(source); let dto = crate::CommandErrorDto::from_error(&error); assert_eq!(dto.domain, "test"); assert_eq!(dto.code, "failed"); assert_eq!(dto.message, "safe message"); } #[test] fn transport_options_projection_contains_only_safe_transport_metadata() { let limits = crate::backfill_request_limits(); assert!(limits.is_ok()); let limits = match limits { std::result::Result::Ok(value) => value, std::result::Result::Err(_) => return, }; let dto = crate::BackfillDeskOptionsDto { commitments: crate::backfill_commitment_codes(), http_routes: vec![crate::BackfillHttpRouteOptionDto { pooled: false, providers: vec!["solana-public".to_owned()], role: "default".to_owned() }], limits, composition_ready: true, configured_networks: vec!["devnet".to_owned()], network_coherent: true, program_id_options: crate::program_id_autocomplete_options(), scope_kinds: crate::backfill_scope_kind_codes(), store_diagnostic: std::option::Option::None, store_network: std::option::Option::Some("devnet".to_owned()), store_ready: true, transport_diagnostic: std::option::Option::None, transport_ready: true, }; let value = serde_json::to_value(dto); assert!(value.is_ok()); if let std::result::Result::Ok(value) = value { let serialized = value.to_string(); assert!(serialized.contains("default")); assert!(serialized.contains("devnet")); assert!(serialized.contains("solana-public")); assert!(!serialized.contains("url")); assert!(!serialized.contains("endpoint")); assert!(!serialized.contains("postgres")); assert!(!serialized.contains("connection")); assert!(!serialized.contains("database")); } } #[test] fn program_id_autocomplete_dataset_is_derived_exactly_from_core_registry() { let options = crate::program_id_autocomplete_options(); let entries = ksp_core_lib::entries(); assert_eq!(options.len(), entries.len()); for (option, entry) in options.iter().zip(entries.iter()) { assert_eq!(option.code, entry.code()); assert_eq!(option.name, entry.name()); assert_eq!(option.program_id, entry.program_id()); assert_eq!(option.domain, entry.domain()); assert_eq!(option.family, entry.family()); assert_eq!(option.protocol, entry.protocol()); } }