// file: crates/ksp-store-lib/tests/public_api.rs // version: 8 #![warn(missing_docs)] #![deny(unreachable_pub)] #![forbid(unsafe_code)] //! Public API canaries for Store settings, lifecycle and Store API reexports. #[test] fn pre_003_settings_and_lifecycle_contract_are_available_from_crate_root() { let postgres = ksp_store_lib::PostgresStoreSettings::new( "postgresql://operator-supplied-sensitive-value", ksp_store_lib::PostgresPoolSettings::default(), ksp_store_lib::PostgresTlsMode::VerifyFull, ksp_store_lib::PostgresBootstrapSettings::default(), ); let network = match ksp_store_lib::RawNetworkId::new("devnet") { std::result::Result::Ok(value) => value, std::result::Result::Err(error) => panic!("valid public API network rejected: {error:?}"), }; let settings = ksp_store_lib::StoreSettings::with_default_shutdown(network, ksp_store_lib::StoreBackendSettings::Postgres(postgres)); assert_eq!(settings.backend_kind(), ksp_store_lib::StoreBackendKind::Postgres); assert_eq!(settings.network().as_str(), "devnet"); assert!(settings.validate().is_ok()); let _open = ksp_store_lib::Store::open; let _close = ksp_store_lib::Store::close; let _runtime_snapshot = ksp_store_lib::Store::runtime_snapshot; let _health = ksp_store_lib::Store::health; return; } #[test] fn pre_005_common_and_postgres_error_codes_are_stable_and_store_owned() { assert_eq!(ksp_store_lib::ERROR_CODE_SETTINGS_INVALID.domain(), "store"); assert_eq!(ksp_store_lib::ERROR_CODE_SETTINGS_INVALID.code(), "settings_invalid"); assert_eq!(ksp_store_lib::ERROR_CODE_BACKEND_NOT_COMPILED.code(), "backend_not_compiled"); assert_eq!(ksp_store_lib::ERROR_CODE_BACKEND_OPEN_FAILED.code(), "backend_open_failed"); assert_eq!(ksp_store_lib::ERROR_CODE_POSTGRES_CONFIG_INVALID.code(), "postgres_config_invalid"); assert_eq!(ksp_store_lib::ERROR_CODE_POSTGRES_CONNECT_FAILED.code(), "postgres_connect_failed"); assert_eq!(ksp_store_lib::ERROR_CODE_POSTGRES_DATA_INVALID.code(), "postgres_data_invalid"); assert_eq!(ksp_store_lib::ERROR_CODE_POSTGRES_HEALTH_FAILED.code(), "postgres_health_failed"); assert_eq!(ksp_store_lib::ERROR_CODE_POSTGRES_POOL_TIMEOUT.code(), "postgres_pool_timeout"); assert_eq!(ksp_store_lib::ERROR_CODE_POSTGRES_READ_FAILED.code(), "postgres_read_failed"); assert_eq!(ksp_store_lib::ERROR_CODE_POSTGRES_RETENTION_COMPACTION_UNSUPPORTED.code(), "postgres_retention_compaction_unsupported"); assert_eq!(ksp_store_lib::ERROR_CODE_POSTGRES_MIGRATION_FAILED.code(), "postgres_migration_failed"); assert_eq!(ksp_store_lib::ERROR_CODE_POSTGRES_MIGRATION_MISMATCH.code(), "postgres_migration_mismatch"); assert_eq!(ksp_store_lib::ERROR_CODE_POSTGRES_PAGE_LIMIT_UNSUPPORTED.code(), "postgres_page_limit_unsupported"); assert_eq!(ksp_store_lib::ERROR_CODE_POSTGRES_SCHEMA_NEWER.code(), "postgres_schema_newer"); assert_eq!(ksp_store_lib::ERROR_CODE_POSTGRES_TLS_FAILED.code(), "postgres_tls_failed"); assert_eq!(ksp_store_lib::ERROR_CODE_POSTGRES_WRITE_FAILED.code(), "postgres_write_failed"); assert_eq!(ksp_store_lib::ERROR_CODE_RAW_REFERENCE_NOT_FOUND.code(), "raw_reference_not_found"); assert_eq!(ksp_store_lib::ERROR_CODE_BACKEND_CLOSED.code(), "backend_closed"); assert_eq!(ksp_store_lib::ERROR_CODE_SHUTDOWN_TIMEOUT.code(), "shutdown_timeout"); assert_eq!(ksp_store_lib::ERROR_CODE_WRONG_NETWORK.code(), "wrong_network"); return; } #[test] fn pre_003_facade_reexports_backend_agnostic_store_api_types() { let _raw_transaction = std::mem::size_of::>(); let _raw_account_state = std::mem::size_of::>(); let _query = std::mem::size_of::>(); let _capability = std::mem::size_of::>(); let _result: ksp_store_lib::Result<()> = std::result::Result::Ok(()); return; } #[test] fn pre_007_health_and_runtime_snapshot_types_are_portable_crate_root_contracts() { let _state = std::mem::size_of::>(); let _health = std::mem::size_of::>(); let _runtime = std::mem::size_of::>(); return; } fn assert_raw_capabilities() where T: ksp_store_lib::RawAccountObservationRead + ksp_store_lib::RawAccountObservationWrite + ksp_store_lib::RawAccountStateRead + ksp_store_lib::RawAccountStateWrite + ksp_store_lib::RawTransactionObservationRead + ksp_store_lib::RawTransactionObservationWrite + ksp_store_lib::RawTransactionRead + ksp_store_lib::RawTransactionRetentionRead + ksp_store_lib::RawTransactionRetentionWrite + ksp_store_lib::RawTransactionWrite, { let _marker = std::marker::PhantomData::; return; } #[test] fn pre_008_store_facade_implements_exact_raw_capability_set_10_of_10() { assert_raw_capabilities::(); return; }