mod client {
use futures_util::stream::StreamExt;
const SECRET_SEED: &str = "SUACH75SWCM5D2JMJM6EKLR2WDARVGZT4QC6LX3AGHSWOMVAKERABBBRWM";
#[tokio::test]
async fn nkey_auth() {
let s = nats_server::run_server("tests/configs/nkey.conf");
let nc = async_nats::ConnectOptions::with_nkey(SECRET_SEED.into())
.connect(s.client_url())
.await
.unwrap();
nc.publish("hello", "world".into())
.await
.expect("published");
}
#[tokio::test]
async fn nkey_auth_builder() {
let s = nats_server::run_server("tests/configs/nkey.conf");
let nc = async_nats::ConnectOptions::new()
.nkey(SECRET_SEED.into())
.connect(s.client_url())
.await
.unwrap();
nc.publish("hello", "world".into())
.await
.expect("published");
}
#[tokio::test]
async fn nkey_reconnect() {
use async_nats::ServerAddr;
let mut servers = vec![
nats_server::run_server("tests/configs/nkey.conf"),
nats_server::run_server("tests/configs/nkey.conf"),
nats_server::run_server("tests/configs/nkey.conf"),
];
let client = async_nats::ConnectOptions::with_nkey(SECRET_SEED.into())
.connect(
servers
.iter()
.map(|server| server.client_url().parse::<ServerAddr>().unwrap())
.collect::<Vec<ServerAddr>>()
.as_slice(),
)
.await
.unwrap();
let mut subscriber = client.subscribe("test").await.unwrap();
while !servers.is_empty() {
client.publish("test", "data".into()).await.unwrap();
client.flush().await.unwrap();
assert!(subscriber.next().await.is_some());
drop(servers.remove(0));
tokio::time::sleep(std::time::Duration::from_secs(3)).await;
}
}
}