Split alknet-core configuration into StaticConfig (immutable after startup) and DynamicConfig (hot-reloadable at runtime via ArcSwap). - Add StaticConfig struct in config/static_config.rs with all fields per ADR-030 - Add DynamicConfig struct with AuthPolicy, ForwardingPolicy, RateLimitConfig - Add ForwardingPolicy with allow_all()/deny_all() defaults (ADR-031) - Add ConfigReloadHandle with reload() method for runtime config updates - Replace Arc<ServerAuthConfig> with Arc<ArcSwap<DynamicConfig>> in ServerHandler - Add config_reload_handle() to Server for obtaining reload handles - Add AuthPolicy with authenticate_publickey/authenticate_certificate methods - All existing tests pass with the new config structure - Default DynamicConfig produces identical behavior to current code
29 lines
805 B
Rust
29 lines
805 B
Rust
use alknet_core::testutil::{
|
|
mock_pair, MockTransport, MockTransportAcceptor, Transport, TransportAcceptor,
|
|
};
|
|
|
|
#[tokio::test]
|
|
async fn mock_transport_connect() {
|
|
let transport = MockTransport::new(1024);
|
|
let stream = transport.connect().await.unwrap();
|
|
drop(stream);
|
|
}
|
|
|
|
#[tokio::test]
|
|
async fn mock_transport_acceptor_accept() {
|
|
let acceptor = MockTransportAcceptor::new(1024);
|
|
let (stream, info) = acceptor.accept().await.unwrap();
|
|
drop(stream);
|
|
drop(info);
|
|
}
|
|
|
|
#[tokio::test]
|
|
async fn mock_pair_communicates() {
|
|
let (mut client, mut server) = mock_pair(1024);
|
|
use tokio::io::{AsyncReadExt, AsyncWriteExt};
|
|
client.write_all(b"hello").await.unwrap();
|
|
let mut buf = [0u8; 5];
|
|
server.read_exact(&mut buf).await.unwrap();
|
|
assert_eq!(&buf, b"hello");
|
|
}
|