use assert_matches::assert_matches; use hedera::{ PrivateKey, Status, TopicCreateTransaction, TopicDeleteTransaction, }; use crate::common::{ setup_nonfree, TestEnvironment, }; use crate::topic::Topic; #[tokio::test] async fn basic() -> anyhow::Result<()> { let Some(TestEnvironment { config: _, client }) = setup_nonfree() else { return Ok(()); }; let topic = Topic::create(&client).await?; TopicDeleteTransaction::new() .topic_id(topic.id) .execute(&client) .await? .get_receipt(&client) .await?; Ok(()) } #[tokio::test] async fn immutable_fails() -> anyhow::Result<()> { let Some(TestEnvironment { config: _, client }) = setup_nonfree() else { return Ok(()); }; let topic_id = TopicCreateTransaction::new() .execute(&client) .await? .get_receipt(&client) .await? .topic_id .unwrap(); let res = TopicDeleteTransaction::new() .topic_id(topic_id) .execute(&client) .await? .get_receipt(&client) .await; assert_matches!(res, Err(hedera::Error::ReceiptStatus { status: Status::Unauthorized, .. })); Ok(()) } #[tokio::test] async fn wrong_admin_key_fails() -> anyhow::Result<()> { let Some(TestEnvironment { config: _, client }) = setup_nonfree() else { return Ok(()); }; let admin_key = PrivateKey::generate_ed25519(); let topic_id = TopicCreateTransaction::new() .admin_key(admin_key.public_key()) .sign(admin_key.clone()) .execute(&client) .await? .get_receipt(&client) .await? .topic_id .unwrap(); let res = TopicDeleteTransaction::new() .topic_id(topic_id) .execute(&client) .await? .get_receipt(&client) .await; assert_matches!( res, Err(hedera::Error::ReceiptStatus { status: Status::InvalidSignature, .. }) ); Ok(()) }