Skip to content

Commit 51a9433

Browse files
authored
Add network id to stellar network info. (#2413)
1 parent 9e2c7c8 commit 51a9433

File tree

2 files changed

+38
-1
lines changed
  • cmd
    • crates/soroban-test/tests/it/integration
    • soroban-cli/src/commands/network

2 files changed

+38
-1
lines changed

cmd/crates/soroban-test/tests/it/integration/network.rs

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use predicates::prelude::{predicate, PredicateBooleanExt};
2-
use soroban_test::TestEnv;
2+
use soroban_test::{AssertExt, TestEnv};
33

44
#[tokio::test]
55
#[allow(clippy::too_many_lines)]
@@ -52,3 +52,34 @@ async fn unset_default_network() {
5252
.stdout(predicate::str::contains("STELLAR_NETWORK=").not())
5353
.success();
5454
}
55+
56+
#[tokio::test]
57+
async fn network_info_includes_id_in_text_output() {
58+
let sandbox = &TestEnv::new();
59+
sandbox
60+
.new_assert_cmd("network")
61+
.arg("info")
62+
.assert()
63+
.success()
64+
.stderr(predicate::str::contains(
65+
"Network Id: baefd734b8d3e48472cff83912375fedbc7573701912fe308af730180f97d74a",
66+
));
67+
}
68+
69+
#[tokio::test]
70+
async fn network_info_includes_id_in_json_output() {
71+
let sandbox = &TestEnv::new();
72+
let output = sandbox
73+
.new_assert_cmd("network")
74+
.arg("info")
75+
.arg("--output")
76+
.arg("json")
77+
.assert()
78+
.success()
79+
.stdout_as_str();
80+
let info: serde_json::Value = serde_json::from_str(&output).unwrap();
81+
assert_eq!(
82+
info["id"],
83+
"baefd734b8d3e48472cff83912375fedbc7573701912fe308af730180f97d74a"
84+
);
85+
}

cmd/soroban-cli/src/commands/network/info.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
use sha2::{Digest, Sha256};
2+
13
use crate::commands::global;
24
use crate::config::network;
35
use crate::{config, print, rpc};
@@ -37,6 +39,7 @@ pub struct Cmd {
3739

3840
#[derive(serde::Deserialize, serde::Serialize)]
3941
struct Info {
42+
pub id: String,
4043
pub version: String,
4144
pub commit_hash: String,
4245
pub build_timestamp: String,
@@ -48,6 +51,7 @@ struct Info {
4851

4952
impl Info {
5053
fn print_text(&self, print: &print::Print) {
54+
print.infoln(format!("Network Id: {}", self.id));
5155
print.infoln(format!("Version: {}", self.version));
5256
print.infoln(format!("Commit Hash: {}", self.commit_hash));
5357
print.infoln(format!("Build Timestamp: {}", self.build_timestamp));
@@ -81,7 +85,9 @@ impl Cmd {
8185
let rpc_client = self.config.get_network()?.rpc_client()?;
8286
let network_result = rpc_client.get_network().await?;
8387
let version_result = rpc_client.get_version_info().await?;
88+
let id = hex::encode(Sha256::digest(network_result.passphrase.as_bytes()));
8489
let info = Info {
90+
id,
8591
version: version_result.version,
8692
commit_hash: version_result.commmit_hash,
8793
build_timestamp: version_result.build_timestamp,

0 commit comments

Comments
 (0)