Skip to content

Commit 042ba76

Browse files
committed
Implemented tests for missing functionalities in FileClientImpl.createFile()
Signed-off-by: Manish Dait <[email protected]>
1 parent 51a80ca commit 042ba76

File tree

2 files changed

+105
-2
lines changed

2 files changed

+105
-2
lines changed

hiero-enterprise-base/src/test/java/com/openelements/hiero/base/test/FileClientImplTest.java

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@
33
import com.hedera.hashgraph.sdk.FileId;
44
import com.openelements.hiero.base.HieroException;
55
import com.openelements.hiero.base.implementation.FileClientImpl;
6+
import com.openelements.hiero.base.protocol.FileCreateResult;
7+
import com.openelements.hiero.base.protocol.FileCreateRequest;
8+
import com.openelements.hiero.base.protocol.FileAppendRequest;
9+
import com.openelements.hiero.base.protocol.FileAppendResult;
610
import com.openelements.hiero.base.protocol.FileInfoRequest;
711
import com.openelements.hiero.base.protocol.FileInfoResponse;
812
import com.openelements.hiero.base.protocol.ProtocolLayerClient;
@@ -11,6 +15,8 @@
1115
import org.junit.jupiter.api.Test;
1216
import org.mockito.Mockito;
1317

18+
import java.time.Instant;
19+
1420
import static org.mockito.ArgumentMatchers.any;
1521
import static org.mockito.Mockito.*;
1622

@@ -24,6 +30,80 @@ void setup() {
2430
fileClientImpl = new FileClientImpl(protocolLayerClient);
2531
}
2632

33+
@Test
34+
void testCreateFile() throws HieroException {
35+
// mock
36+
final FileId fileId = FileId.fromString("1.2.3");
37+
final FileCreateResult fileCreateResult = Mockito.mock(FileCreateResult.class);
38+
39+
// given
40+
final byte[] content = "Hello Hiero!".getBytes();
41+
42+
//then
43+
when(protocolLayerClient.executeFileCreateTransaction(any(FileCreateRequest.class)))
44+
.thenReturn(fileCreateResult);
45+
when(fileCreateResult.fileId()).thenReturn(fileId);
46+
47+
final FileId result = fileClientImpl.createFile(content);
48+
49+
verify(protocolLayerClient, times(1))
50+
.executeFileCreateTransaction(any(FileCreateRequest.class));
51+
verify(fileCreateResult, times(1)).fileId();
52+
Assertions.assertEquals(fileId, result);
53+
}
54+
55+
@Test
56+
void testCreateFileForSizeGreaterThanFileCreateMaxSize() throws HieroException {
57+
// mock
58+
final FileId fileId = FileId.fromString("1.2.3");
59+
final FileCreateResult fileCreateResult = Mockito.mock(FileCreateResult.class);
60+
61+
// given
62+
byte[] content = new byte[FileCreateRequest.FILE_CREATE_MAX_SIZE * 2];
63+
// -1 because 1 for executeFileCreateTransaction()
64+
int appendCount = Math.floorDiv(content.length, FileCreateRequest.FILE_CREATE_MAX_SIZE) - 1;
65+
66+
//then
67+
when(protocolLayerClient.executeFileCreateTransaction(any(FileCreateRequest.class)))
68+
.thenReturn(fileCreateResult);
69+
when(fileCreateResult.fileId()).thenReturn(fileId);
70+
when(protocolLayerClient.executeFileAppendRequestTransaction(any(FileAppendRequest.class)))
71+
.thenReturn(any(FileAppendResult.class));
72+
73+
final FileId result = fileClientImpl.createFile(content);
74+
75+
verify(protocolLayerClient, times(1))
76+
.executeFileCreateTransaction(any(FileCreateRequest.class));
77+
verify(fileCreateResult, times(1)).fileId();
78+
verify(protocolLayerClient, times(appendCount))
79+
.executeFileAppendRequestTransaction(any(FileAppendRequest.class));
80+
Assertions.assertEquals(fileId, result);
81+
}
82+
83+
@Test
84+
void testCreateFileThrowsExceptionForSizeGreaterThanMaxFileSize() {
85+
// given
86+
final byte[] contents = new byte[FileCreateRequest.FILE_MAX_SIZE + 1];
87+
88+
// then
89+
Assertions.assertThrows(HieroException.class, () -> fileClientImpl.createFile(contents));
90+
}
91+
92+
@Test
93+
void testCreateFileThrowsExceptionForExpirationTimeBeforeNow() {
94+
// given
95+
final byte[] contents = "Hello Hiero!".getBytes();
96+
final Instant expiration = Instant.now().minusSeconds(1);
97+
98+
// then
99+
Assertions.assertThrows(IllegalArgumentException.class, () -> fileClientImpl.createFile(contents, expiration));
100+
}
101+
102+
@Test
103+
void testCreateFileThrowsExceptionForNullContent() {
104+
Assertions.assertThrows(NullPointerException.class, () -> fileClientImpl.createFile(null));
105+
}
106+
27107
@Test
28108
void testGetFileSize() throws HieroException {
29109
// mocks

hiero-enterprise-spring/src/test/java/com/openelements/hiero/spring/test/FileClientTests.java

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
import java.time.Instant;
88
import java.time.temporal.ChronoUnit;
99
import java.util.stream.IntStream;
10+
11+
import com.openelements.hiero.base.protocol.FileCreateRequest;
1012
import org.junit.jupiter.api.Assertions;
1113
import org.junit.jupiter.api.Disabled;
1214
import org.junit.jupiter.api.Test;
@@ -45,7 +47,7 @@ void testCreateEmptyFile() throws Exception {
4547
@Test
4648
void testCreateSmallFile() throws Exception {
4749
//given
48-
final byte[] contents = "Hello, Hedera!".getBytes();
50+
final byte[] contents = "Hello, Hiero!".getBytes();
4951

5052
//when
5153
final FileId fileId = fileClient.createFile(contents);
@@ -57,7 +59,7 @@ void testCreateSmallFile() throws Exception {
5759
@Test
5860
void testCreateLargeFile() throws Exception {
5961
//given
60-
final byte[] contents = IntStream.range(0, 500).mapToObj(i -> "Hello, Hedera!")
62+
final byte[] contents = IntStream.range(0, 500).mapToObj(i -> "Hello, Hiero!")
6163
.reduce((a, b) -> a + b)
6264
.get()
6365
.getBytes();
@@ -69,6 +71,27 @@ void testCreateLargeFile() throws Exception {
6971
Assertions.assertNotNull(fileId);
7072
}
7173

74+
@Test
75+
void testCreateFileThrowExceptionIfExceedMaxFileSize() {
76+
// given
77+
final byte[] contents = new byte[FileCreateRequest.FILE_MAX_SIZE + 1];
78+
79+
// then
80+
Assertions.assertThrows(HieroException.class, () -> fileClient.createFile(contents));
81+
}
82+
83+
@Test
84+
void testCreateFileThrowExceptionIfExpirationTimeBeforeNow() {
85+
// given
86+
final byte[] contents = "Hello Hiero!".getBytes();
87+
final Instant definedExpirationTime = Instant.now().minusSeconds(60);
88+
89+
// then
90+
Assertions.assertThrows(
91+
IllegalArgumentException.class, () -> fileClient.createFile(contents, definedExpirationTime)
92+
);
93+
}
94+
7295
@Test
7396
void testReadFileByFileId() throws Exception {
7497
//given

0 commit comments

Comments
 (0)