Skip to content

Commit 56db48d

Browse files
committed
feat: added e2e test for the registeredNodeTx
Signed-off-by: Manish Dait <daitmanish88@gmail.com>
1 parent 97c369f commit 56db48d

File tree

4 files changed

+174
-0
lines changed

4 files changed

+174
-0
lines changed

sdk/src/main/java/com/hedera/hashgraph/sdk/RegisteredNodeAddressBookQuery.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
// SPDX-License-Identifier: Apache-2.0
12
package com.hedera.hashgraph.sdk;
23

34
import java.util.concurrent.CompletableFuture;

sdk/src/testIntegration/java/com/hedera/hashgraph/sdk/test/integration/RegisteredNodeCreateTransactionIntegrationTest.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
import com.hedera.hashgraph.sdk.BlockNodeApi;
77
import com.hedera.hashgraph.sdk.BlockNodeServiceEndpoint;
8+
import com.hedera.hashgraph.sdk.MirrorNodeServiceEndpoint;
89
import com.hedera.hashgraph.sdk.PrivateKey;
910
import com.hedera.hashgraph.sdk.RegisteredNodeCreateTransaction;
1011
import com.hedera.hashgraph.sdk.RegisteredServiceEndpoint;
@@ -37,4 +38,32 @@ void canCreateRegisteredNode() throws Exception {
3738
assertThat(receipt.registeredNodeId).isGreaterThan(0);
3839
}
3940
}
41+
42+
@Test
43+
@DisplayName("Can create a registered node with multiple service endpoints")
44+
void canCreateRegisteredNodeWithMultipleServiceEndpoints() throws Exception {
45+
try (var testEnv = new IntegrationTestEnv(1)) {
46+
var key = PrivateKey.generateED25519();
47+
List<RegisteredServiceEndpoint> serviceEndpoints = List.of(
48+
new BlockNodeServiceEndpoint()
49+
.setDomainName("test.block.com")
50+
.setPort(443)
51+
.setEndpointApi(BlockNodeApi.STATUS),
52+
new MirrorNodeServiceEndpoint()
53+
.setDomainName("test.mirror.com")
54+
.setPort(443));
55+
56+
var response = new RegisteredNodeCreateTransaction()
57+
.setAdminKey(key)
58+
.setDescription("test description")
59+
.setServiceEndpoints(serviceEndpoints)
60+
.freezeWith(testEnv.client)
61+
.execute(testEnv.client);
62+
63+
var receipt = response.getReceipt(testEnv.client);
64+
65+
assertThat(receipt.status).isEqualTo(Status.SUCCESS);
66+
assertThat(receipt.registeredNodeId).isGreaterThan(0);
67+
}
68+
}
4069
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
// SPDX-License-Identifier: Apache-2.0
2+
package com.hedera.hashgraph.sdk.test.integration;
3+
4+
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
5+
6+
import com.hedera.hashgraph.sdk.BlockNodeApi;
7+
import com.hedera.hashgraph.sdk.BlockNodeServiceEndpoint;
8+
import com.hedera.hashgraph.sdk.PrivateKey;
9+
import com.hedera.hashgraph.sdk.RegisteredNodeCreateTransaction;
10+
import com.hedera.hashgraph.sdk.RegisteredNodeDeleteTransaction;
11+
import com.hedera.hashgraph.sdk.RegisteredServiceEndpoint;
12+
import com.hedera.hashgraph.sdk.Status;
13+
import java.util.List;
14+
import org.junit.jupiter.api.DisplayName;
15+
import org.junit.jupiter.api.Test;
16+
17+
public class RegisteredNodeDeleteTransactionIntegrationTest {
18+
@Test
19+
@DisplayName("Can delete a registered node")
20+
void canDeleteRegisteredNode() throws Exception {
21+
try (var testEnv = new IntegrationTestEnv(1)) {
22+
var key = PrivateKey.generateED25519();
23+
24+
List<RegisteredServiceEndpoint> endpoints = List.of(new BlockNodeServiceEndpoint()
25+
.setDomainName("blocks.example.com")
26+
.setPort(443)
27+
.setEndpointApi(BlockNodeApi.STATUS));
28+
29+
var createReceipt = new RegisteredNodeCreateTransaction()
30+
.setAdminKey(key)
31+
.setDescription("test node delete")
32+
.setServiceEndpoints(endpoints)
33+
.freezeWith(testEnv.client)
34+
.execute(testEnv.client)
35+
.getReceipt(testEnv.client);
36+
37+
var nodeId = createReceipt.registeredNodeId;
38+
39+
var deleteReceipt = new RegisteredNodeDeleteTransaction()
40+
.setRegisteredNodeId(nodeId)
41+
.freezeWith(testEnv.client)
42+
.sign(key)
43+
.execute(testEnv.client)
44+
.getReceipt(testEnv.client);
45+
46+
assertThat(deleteReceipt.status).isEqualTo(Status.SUCCESS);
47+
}
48+
}
49+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
// SPDX-License-Identifier: Apache-2.0
2+
package com.hedera.hashgraph.sdk.test.integration;
3+
4+
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
5+
6+
import com.hedera.hashgraph.sdk.BlockNodeApi;
7+
import com.hedera.hashgraph.sdk.BlockNodeServiceEndpoint;
8+
import com.hedera.hashgraph.sdk.PrivateKey;
9+
import com.hedera.hashgraph.sdk.RegisteredNodeCreateTransaction;
10+
import com.hedera.hashgraph.sdk.RegisteredNodeUpdateTransaction;
11+
import com.hedera.hashgraph.sdk.RegisteredServiceEndpoint;
12+
import com.hedera.hashgraph.sdk.Status;
13+
import java.util.List;
14+
import org.junit.jupiter.api.DisplayName;
15+
import org.junit.jupiter.api.Test;
16+
17+
public class RegisteredNodeUpdateTransactionIntegrationTest {
18+
@Test
19+
@DisplayName("Can update registered node endpoints and description")
20+
void canUpdateRegisteredNode() throws Exception {
21+
try (var testEnv = new IntegrationTestEnv(1)) {
22+
var key = PrivateKey.generateED25519();
23+
24+
List<RegisteredServiceEndpoint> endpoints = List.of(new BlockNodeServiceEndpoint()
25+
.setDomainName("initial.blocks.com")
26+
.setPort(443)
27+
.setEndpointApi(BlockNodeApi.SUBSCRIBE_STREAM));
28+
29+
var createResponse = new RegisteredNodeCreateTransaction()
30+
.setAdminKey(key)
31+
.setDescription("test initial node")
32+
.setServiceEndpoints(endpoints)
33+
.freezeWith(testEnv.client)
34+
.execute(testEnv.client);
35+
36+
var createReceipt = createResponse.getReceipt(testEnv.client);
37+
38+
var nodeId = createReceipt.registeredNodeId;
39+
40+
List<RegisteredServiceEndpoint> updatedEndpoints = List.of(new BlockNodeServiceEndpoint()
41+
.setDomainName("updated.blocks.com")
42+
.setPort(443)
43+
.setEndpointApi(BlockNodeApi.STATUS));
44+
45+
var updateResponse = new RegisteredNodeUpdateTransaction()
46+
.setRegisteredNodeId(nodeId)
47+
.setDescription("test updated node")
48+
.setServiceEndpoints(updatedEndpoints)
49+
.freezeWith(testEnv.client)
50+
.sign(key)
51+
.execute(testEnv.client);
52+
53+
var updateReceipt = updateResponse.getReceipt(testEnv.client);
54+
55+
assertThat(updateReceipt.status).isEqualTo(Status.SUCCESS);
56+
}
57+
}
58+
59+
@Test
60+
@DisplayName("Can rotate registered node admin key")
61+
void canRotateAdminKey() throws Exception {
62+
try (var testEnv = new IntegrationTestEnv(1)) {
63+
var oldKey = PrivateKey.generateED25519();
64+
65+
List<RegisteredServiceEndpoint> endpoints = List.of(new BlockNodeServiceEndpoint()
66+
.setDomainName("blocks.example.com")
67+
.setPort(443)
68+
.setEndpointApi(BlockNodeApi.STATUS));
69+
70+
var createReceipt = new RegisteredNodeCreateTransaction()
71+
.setAdminKey(oldKey)
72+
.setDescription("test node")
73+
.setServiceEndpoints(endpoints)
74+
.freezeWith(testEnv.client)
75+
.execute(testEnv.client)
76+
.getReceipt(testEnv.client);
77+
78+
var nodeId = createReceipt.registeredNodeId;
79+
80+
var newKey = PrivateKey.generateED25519();
81+
82+
var tx = new RegisteredNodeUpdateTransaction()
83+
.setRegisteredNodeId(nodeId)
84+
.setAdminKey(newKey)
85+
.freezeWith(testEnv.client);
86+
87+
tx.sign(oldKey);
88+
tx.sign(newKey);
89+
90+
var receipt = tx.execute(testEnv.client).getReceipt(testEnv.client);
91+
92+
assertThat(receipt.status).isEqualTo(Status.SUCCESS);
93+
}
94+
}
95+
}

0 commit comments

Comments
 (0)