Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

E2E test: NodeCreateTransaction #868

Merged
merged 3 commits into from
Dec 10, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 9 additions & 6 deletions src/address_book/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,13 @@
* ‍
*/

mod node_create_transaction;
mod node_delete_transaction;
mod node_update_transaction;
pub mod node_create_transaction;
pub mod node_delete_transaction;
pub mod node_update_transaction;

pub use node_create_transaction::NodeCreateTransactionData;
pub use node_delete_transaction::NodeDeleteTransactionData;
pub use node_update_transaction::NodeUpdateTransactionData;
pub use node_create_transaction::NodeCreateTransaction;
pub(crate) use node_create_transaction::NodeCreateTransactionData;
pub use node_delete_transaction::NodeDeleteTransaction;
pub(crate) use node_delete_transaction::NodeDeleteTransactionData;
pub use node_update_transaction::NodeUpdateTransaction;
pub(crate) use node_update_transaction::NodeUpdateTransactionData;
3 changes: 2 additions & 1 deletion src/address_book/node_create_transaction.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
* ‌
* Hedera Rust SDK
* ​
* Copyright (C) 2022 - 2023 Hedera Hashgraph, LLC
* Copyright (C) 2022 - 2024 Hedera Hashgraph, LLC
* ​
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -54,6 +54,7 @@ use crate::{
/// to join the network, and requires governing council authorization.
pub type NodeCreateTransaction = Transaction<NodeCreateTransactionData>;

/// A transaction body to add a new consensus node to the network address book.
#[derive(Debug, Clone, Default)]
pub struct NodeCreateTransactionData {
/// A Node account identifier.
Expand Down
3 changes: 2 additions & 1 deletion src/address_book/node_delete_transaction.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
* ‌
* Hedera Rust SDK
* ​
* Copyright (C) 2022 - 2023 Hedera Hashgraph, LLC
* Copyright (C) 2022 - 2024 Hedera Hashgraph, LLC
* ​
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -58,6 +58,7 @@ use crate::{
/// receipt.
pub type NodeDeleteTransaction = Transaction<NodeDeleteTransactionData>;

/// A transaction body to delete a node from the network address book.
#[derive(Debug, Clone, Default)]
pub struct NodeDeleteTransactionData {
/// A consensus node identifier in the network state.
Expand Down
3 changes: 2 additions & 1 deletion src/address_book/node_update_transaction.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
* ‌
* Hedera Rust SDK
* ​
* Copyright (C) 2022 - 2023 Hedera Hashgraph, LLC
* Copyright (C) 2022 - 2024 Hedera Hashgraph, LLC
* ​
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -65,6 +65,7 @@ use crate::{
/// transaction receipt.
pub type NodeUpdateTransaction = Transaction<NodeUpdateTransactionData>;

/// Transaction body to modify address book node attributes.
#[derive(Debug, Clone, Default)]
pub struct NodeUpdateTransactionData {
/// A consensus node identifier in the network state.
Expand Down
6 changes: 6 additions & 0 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,11 @@ pub use account::{
AllProxyStakers,
ProxyStaker,
};
pub use address_book::{
NodeCreateTransaction,
NodeDeleteTransaction,
NodeUpdateTransaction,
};
pub use client::Client;
pub(crate) use client::Operator;
pub use contract::{
Expand Down Expand Up @@ -293,6 +298,7 @@ pub use schedule::{
ScheduleSignTransaction,
};
pub use semantic_version::SemanticVersion;
pub use service_endpoint::ServiceEndpoint;
pub use staking_info::StakingInfo;
pub use system::{
FreezeTransaction,
Expand Down
2 changes: 1 addition & 1 deletion src/service_endpoint.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
* ‌
* Hedera Rust SDK
* ​
* Copyright (C) 2022 - 2023 Hedera Hashgraph, LLC
* Copyright (C) 2022 - 2024 Hedera Hashgraph, LLC
* ​
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand Down
1 change: 1 addition & 0 deletions tests/e2e/address_book/mod.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
mod node_create;
57 changes: 57 additions & 0 deletions tests/e2e/address_book/node_create.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
use std::collections::HashMap;
use std::str::FromStr;

use hedera::{
AccountId,
Client,
NodeCreateTransaction,
PrivateKey,
ServiceEndpoint,
};

const VALID_GOSSIP_CERT_DER: &str = "3082052830820310a003020102020101300d06092a864886f70d01010c05003010310e300c060355040313056e6f6465333024170d3234313030383134333233395a181332313234313030383134333233392e3337395a3010310e300c060355040313056e6f64653330820222300d06092a864886f70d01010105000382020f003082020a0282020100af111cff0c4ad8125d2f4b8691ce87332fecc867f7a94ddc0f3f96514cc4224d44af516394f7384c1ef0a515d29aa6116b65bc7e4d7e2d848cf79fbfffedae3a6583b3957a438bdd780c4981b800676ea509bc8c619ae04093b5fc642c4484152f0e8bcaabf19eae025b630028d183a2f47caf6d9f1075efb30a4248679d871beef1b7e9115382270cbdb68682fae4b1fd592cadb414d918c0a8c23795c7c5a91e22b3e90c410825a2bc1a840efc5bf9976a7f474c7ed7dc047e4ddd2db631b68bb4475f173baa3edc234c4bed79c83e2f826f79e07d0aade2d984da447a8514135bfa4145274a7f62959a23c4f0fae5adc6855974e7c04164951d052beb5d45cb1f3cdfd005da894dea9151cb62ba43f4731c6bb0c83e10fd842763ba6844ef499f71bc67fa13e4917fb39f2ad18112170d31cdcb3c61c9e3253accf703dbd8427fdcb87ece78b787b6cfdc091e8fedea8ad95dc64074e1fc6d0e42ea2337e18a5e54e4aaab3791a98dfcef282e2ae1caec9cf986fabe8f36e6a21c8711647177e492d264415e765a86c58599cd97b103cb4f6a01d2edd06e3b60470cf64daca7aecf831197b466cae04baeeac19840a05394bef628aed04b611cfa13677724b08ddfd662b02fd0ef0af17eb7f4fb8c1c17fbe9324f6dc7bcc02449622636cc45ec04909b3120ab4df4726b21bf79e955fe8f832699d2196dcd7a58bfeafb170203010001a38186308183300f0603551d130101ff04053003020100300e0603551d0f0101ff0404030204b030200603551d250101ff0416301406082b0601050507030106082b06010505070302301d0603551d0e04160414643118e05209035edd83d44a0c368de2fb2fe4c0301f0603551d23041830168014643118e05209035edd83d44a0c368de2fb2fe4c0300d06092a864886f70d01010c05000382020100ad41c32bb52650eb4b76fce439c9404e84e4538a94916b3dc7983e8b5c58890556e7384601ca7440dde68233bb07b97bf879b64487b447df510897d2a0a4e789c409a9b237a6ad240ad5464f2ce80c58ddc4d07a29a74eb25e1223db6c00e334d7a27d32bfa6183a82f5e35bccf497c2445a526eabb0c068aba9b94cc092ea4756b0dcfb574f6179f0089e52b174ccdbd04123eeb6d70daeabd8513fcba6be0bc2b45ca9a69802dae11cc4d9ff6053b3a87fd8b0c6bf72fffc3b81167f73cca2b3fd656c5d353c8defca8a76e2ad535f984870a590af4e28fed5c5a125bf360747c5e7742e7813d1bd39b5498c8eb6ba72f267eda034314fdbc596f6b967a0ef8be5231d364e634444c84e64bd7919425171016fcd9bb05f01c58a303dee28241f6e860fc3aac3d92aad7dac2801ce79a3b41a0e1f1509fc0d86e96d94edb18616c000152490f64561713102128990fedd3a5fa642f2ff22dc11bc4dc5b209986a0c3e4eb2bdfdd40e9fdf246f702441cac058dd8d0d51eb0796e2bea2ce1b37b2a2f468505e1f8980a9f66d719df034a6fbbd2f9585991d259678fb9a4aebdc465d22c240351ed44abffbdd11b79a706fdf7c40158d3da87f68d7bd557191a8016b5b899c07bf1b87590feb4fa4203feea9a2a7a73ec224813a12b7a21e5dc93fcde4f0a7620f570d31fe27e9b8d65b74db7dc18a5e51adc42d7805d4661938";

#[tokio::test]
#[ignore = "Temporarily disabled to prevent failed local-node calls"]
async fn create_new_network_node() -> anyhow::Result<()> {
// Set the network
let network = HashMap::from([("localhost:50211".into(), AccountId::new(0, 0, 3))]);

let client = Client::for_network(network)?;
client.set_mirror_network(vec!["127.0.0.1:5600".into()]);

// Set the operator to Account Id 0.0.2
let operator_key = PrivateKey::from_str("302e020100300506032b65700422042091132178e72057a1d7528025956fe39b0b847f200ab59b2fdd367017f3087137")?;

client.set_operator(AccountId::new(0, 0, 2), operator_key);

// The account of the new node
let account_id = AccountId::new(0, 0, 4);

// Create new endpoints. IPV4 address is not required
let endpoint1 =
ServiceEndpoint { ip_address_v4: None, port: 1234, domain_name: "tests.com".to_owned() };
let endpoint2 =
ServiceEndpoint { ip_address_v4: None, port: 123, domain_name: "testing.com".to_owned() };

// Convert hex string to byte array
let valid_gossip_cert = VALID_GOSSIP_CERT_DER.as_bytes().to_vec();

// Generate new admin key
let admin_key = PrivateKey::generate_ed25519();

let _ = NodeCreateTransaction::new()
.account_id(account_id)
.admin_key(admin_key.public_key())
.description("test node")
.gossip_ca_certificate(valid_gossip_cert)
.gossip_endpoints(vec![endpoint1.clone(), endpoint2.clone()])
.service_endpoints(vec![endpoint1, endpoint2])
.freeze_with(&client)?
.sign(admin_key)
.execute(&client)
.await?
.get_receipt(&client);

Ok(())
}
1 change: 1 addition & 0 deletions tests/e2e/main.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
mod account;
mod address_book;
mod client;
mod common;
mod contract;
Expand Down
Loading