use crate::common::{Error, init_tracing};
use rama::{Context, Layer as _, Service, layer::MapStateLayer};
use tansu_sans_io::{ErrorCode, ListGroupsRequest};
use tansu_storage::{ListGroupsService, StorageContainer};
use url::Url;
mod common;
#[tokio::test]
async fn req() -> Result<(), Error> {
let _guard = init_tracing()?;
const HOST: &str = "localhost";
const PORT: i32 = 9092;
const NODE_ID: i32 = 111;
let storage = StorageContainer::builder()
.cluster_id("tansu")
.node_id(NODE_ID)
.advertised_listener(Url::parse(&format!("tcp://{HOST}:{PORT}"))?)
.storage(Url::parse("memory://tansu/")?)
.build()
.await?;
let service = MapStateLayer::new(|_| storage).into_layer(ListGroupsService);
let response = service
.serve(
Context::default(),
ListGroupsRequest::default().states_filter(Some(["Empty".into()].into())),
)
.await?;
assert_eq!(ErrorCode::None, ErrorCode::try_from(response.error_code)?);
assert_eq!(Some([].into()), response.groups);
Ok(())
}