arch_testing 0.1.0

A testing framework for Arch Network applications with containerized test environments
Documentation
# Arch Testing

A comprehensive testing framework for Arch Network applications that provides containerized test environments for integration testing.

## Features

- **Containerized Test Environments**: Spin up isolated test environments using Docker containers
- **Bitcoin Integration**: Test with a local Bitcoin node for blockchain interactions
- **Arch Network Support**: Built-in support for Arch Network validators and programs
- **Titan Integration**: Test with Titan services for enhanced functionality
- **Async/Await Support**: Full async support with Tokio runtime
- **Configurable**: Flexible configuration options for different test scenarios

## Installation

Add this to your `Cargo.toml`:

```toml
[dependencies]
arch_testing = "0.1.0"
```

## Quick Start

```rust
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(())
}
```

## Components

### BitcoinContainer

Test with a local Bitcoin node:

```rust
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
```

### LocalValidatorContainer

Test with a local Arch Network validator:

```rust
use arch_testing::{LocalValidatorContainer, LocalValidatorContainerConfig};

let config = LocalValidatorContainerConfig::default();
let validator = LocalValidatorContainer::new(config).await?;
// Validator is ready for testing
```

### TitanContainer

Test with Titan services:

```rust
use arch_testing::{TitanContainer, TitanContainerConfig};

let config = TitanContainerConfig::default();
let titan = TitanContainer::new(config).await?;
// Titan services are available
```

## Configuration

All containers support flexible configuration through their respective config structs:

- `BitcoinContainerConfig`: Configure Bitcoin node settings, ports, and RPC credentials
- `LocalValidatorContainerConfig`: Configure validator settings and network parameters
- `TitanContainerConfig`: Configure Titan service settings

## Test Context

The `TestContext` provides a centralized way to manage your test environment:

```rust
use arch_testing::TestContext;

let context = TestContext::new().await?;
// Context manages the lifecycle of all containers
```

## Requirements

- Docker (for containerized test environments)
- Rust 1.70+ (2021 edition)
- Tokio runtime

## License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

## Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

## Repository

[GitHub Repository](https://github.com/levicook/arch-testing)