| Crates.io | arch_testing |
| lib.rs | arch_testing |
| version | 0.1.0 |
| created_at | 2025-09-04 00:57:44.937255+00 |
| updated_at | 2025-09-04 00:57:44.937255+00 |
| description | A testing framework for Arch Network applications with containerized test environments |
| homepage | |
| repository | https://github.com/levicook/arch-testing |
| max_upload_size | |
| id | 1823438 |
| size | 143,614 |
A comprehensive testing framework for Arch Network applications that provides containerized test environments for integration testing.
Add this to your Cargo.toml:
[dependencies]
arch_testing = "0.1.0"
use arch_testing::*;
use tokio;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Initialize test context
let test_context = TestContext::new().await?;
// Start a Bitcoin container
let bitcoin_config = BitcoinContainerConfig::default();
let bitcoin_container = BitcoinContainer::new(bitcoin_config).await?;
// Start a local validator
let validator_config = LocalValidatorContainerConfig::default();
let validator = LocalValidatorContainer::new(validator_config).await?;
// Your test logic here
println!("Test environment ready!");
Ok(())
}
Test with a local Bitcoin node:
use arch_testing::{BitcoinContainer, BitcoinContainerConfig};
let config = BitcoinContainerConfig {
rpc_port: Some(18443),
p2p_port: Some(18444),
..Default::default()
};
let bitcoin = BitcoinContainer::new(config).await?;
// Use bitcoin.rpc_client() for Bitcoin RPC calls
Test with a local Arch Network validator:
use arch_testing::{LocalValidatorContainer, LocalValidatorContainerConfig};
let config = LocalValidatorContainerConfig::default();
let validator = LocalValidatorContainer::new(config).await?;
// Validator is ready for testing
Test with Titan services:
use arch_testing::{TitanContainer, TitanContainerConfig};
let config = TitanContainerConfig::default();
let titan = TitanContainer::new(config).await?;
// Titan services are available
All containers support flexible configuration through their respective config structs:
BitcoinContainerConfig: Configure Bitcoin node settings, ports, and RPC credentialsLocalValidatorContainerConfig: Configure validator settings and network parametersTitanContainerConfig: Configure Titan service settingsThe TestContext provides a centralized way to manage your test environment:
use arch_testing::TestContext;
let context = TestContext::new().await?;
// Context manages the lifecycle of all containers
This project is licensed under the MIT License - see the LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.