Skip to content

Commit e397a34

Browse files
Merge pull request #142 from manishdait/issue-103
Implemented tests for missing functionalities in FileClientImpl.updateExpirationTime()
2 parents 2293bb1 + 1cfe3d6 commit e397a34

File tree

2 files changed

+128
-7
lines changed

2 files changed

+128
-7
lines changed

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

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -315,4 +315,81 @@ void testReadFileThrowsExceptionForNullValue() {
315315

316316
Assertions.assertTrue(exception.getMessage().contains(message));
317317
}
318+
319+
@Test
320+
void testUpdateExpirationTime() throws HieroException {
321+
// mock
322+
final FileUpdateResult fileUpdateResult = Mockito.mock(FileUpdateResult.class);
323+
324+
// given
325+
final FileId fileId = FileId.fromString("1.2.3");
326+
final Instant expirationTime = Instant.now().plusSeconds(120);
327+
328+
//then
329+
when(protocolLayerClient.executeFileUpdateRequestTransaction(any(FileUpdateRequest.class)))
330+
.thenReturn(fileUpdateResult);
331+
332+
fileClientImpl.updateExpirationTime(fileId, expirationTime);
333+
334+
verify(protocolLayerClient, times(1))
335+
.executeFileUpdateRequestTransaction(any(FileUpdateRequest.class));
336+
}
337+
338+
@Test
339+
void testUpdateExpirationTimeThrowsExceptionForPastExpiration() {
340+
final String message = "Expiration time must be in the future";
341+
342+
// given
343+
final FileId fileId = FileId.fromString("1.2.3");
344+
final Instant expirationTime = Instant.now().minusSeconds(1);
345+
346+
// then
347+
final IllegalArgumentException exception = Assertions.assertThrows(
348+
IllegalArgumentException.class, () -> fileClientImpl.updateExpirationTime(fileId, expirationTime)
349+
);
350+
351+
Assertions.assertTrue(exception.getMessage().contains(message));
352+
}
353+
354+
@Test
355+
void testUpdateExpirationTimeThrowsExceptionForInvalidId() throws HieroException {
356+
final String message = "Failed to execute transaction of type FileUpdateTransaction";
357+
358+
// given
359+
final FileId fileId = FileId.fromString("1.2.3");
360+
final Instant expirationTime = Instant.now().plusSeconds(1);
361+
362+
// then
363+
when(protocolLayerClient.executeFileUpdateRequestTransaction(any(FileUpdateRequest.class)))
364+
.thenThrow(new HieroException(message));
365+
366+
final HieroException exception = Assertions.assertThrows(
367+
HieroException.class, () -> fileClientImpl.updateExpirationTime(fileId, expirationTime)
368+
);
369+
370+
Assertions.assertTrue(exception.getMessage().contains(message));
371+
}
372+
373+
374+
@Test
375+
void testUpdateExpirationTimeThrowsExceptionForNullArguments() {
376+
// given
377+
final FileId fileId = FileId.fromString("1.2.3");
378+
final Instant expirationTime = Instant.now().plusSeconds(120);
379+
380+
// then
381+
final NullPointerException nullIdException = Assertions.assertThrows(
382+
NullPointerException.class, () -> fileClientImpl.updateExpirationTime(null, expirationTime)
383+
);
384+
Assertions.assertTrue(nullIdException.getMessage().contains("fileId must not be null"));
385+
386+
final NullPointerException nullTimeException = Assertions.assertThrows(
387+
NullPointerException.class, () -> fileClientImpl.updateExpirationTime(fileId, null)
388+
);
389+
Assertions.assertTrue(nullTimeException.getMessage().contains("expirationTime must not be null"));
390+
391+
Assertions.assertThrows(
392+
NullPointerException.class, () -> fileClientImpl.updateExpirationTime(null, null)
393+
);
394+
}
318395
}

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

Lines changed: 51 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -292,35 +292,79 @@ void testGetExpirationTimeForFailures() {
292292
@Test
293293
@Disabled("Always fails with AUTORENEW_DURATION_NOT_IN_RANGE. Needs to be investigated further.")
294294
void testUpdateExpirationTime() throws Exception {
295-
//given
296-
final byte[] contents = "Hello, Hedera!".getBytes();
295+
// given
296+
final byte[] contents = "Hello, Hiero!".getBytes();
297297
final Instant definedExpirationTime = Instant.now().plus(Duration.of(20, ChronoUnit.MINUTES));
298298
final FileId fileId = fileClient.createFile(contents);
299299
fileClient.updateExpirationTime(fileId, definedExpirationTime);
300300

301-
//when
301+
// when
302302
final Instant expirationTime = fileClient.getExpirationTime(fileId);
303303

304-
//then
304+
// then
305305
Assertions.assertTrue(expirationTime.isAfter(definedExpirationTime.minusSeconds(1)));
306306
Assertions.assertTrue(expirationTime.isBefore(definedExpirationTime.plusSeconds(1)));
307307
}
308308

309309
@Test
310310
@Disabled("Always fails with AUTORENEW_DURATION_NOT_IN_RANGE. Needs to be investigated further.")
311311
void testUpdateExpirationTimeDoesNotChangeContent() throws Exception {
312-
//given
313-
final byte[] contents = "Hello, Hedera!".getBytes();
312+
// given
313+
final byte[] contents = "Hello, Hiero!".getBytes();
314314
final Instant definedExpirationTime = Instant.now().plus(Duration.of(20, ChronoUnit.MINUTES));
315315
final FileId fileId = fileClient.createFile(contents);
316316
fileClient.updateExpirationTime(fileId, definedExpirationTime);
317317

318318
final byte[] result = fileClient.readFile(fileId);
319319

320-
//then
320+
// then
321321
Assertions.assertArrayEquals(contents, result);
322322
}
323323

324+
@Test
325+
void testUpdateExpirationTimeThrowsExceptionForPastExpirationTime() throws HieroException {
326+
// given
327+
final byte[] contents = "Hello, Hiero!".getBytes();
328+
final Instant definedExpirationTime = Instant.now().minusSeconds(1);
329+
final FileId fileId = fileClient.createFile(contents);
330+
331+
// then
332+
Assertions.assertThrows(
333+
IllegalArgumentException.class, () -> fileClient.updateExpirationTime(fileId, definedExpirationTime)
334+
);
335+
}
336+
337+
@Test
338+
void testUpdateExpirationTimeThrowsExceptionForInvalidId() {
339+
// given
340+
final FileId fileId = FileId.fromString("1.2.3");
341+
final Instant definedExpirationTime = Instant.now().plusSeconds(120);
342+
343+
// then
344+
Assertions.assertThrows(
345+
HieroException.class, () -> fileClient.updateExpirationTime(fileId, definedExpirationTime)
346+
);
347+
}
348+
349+
@Test
350+
void testUpdateExpirationTimeThrowsExceptionForNullArgs() throws HieroException {
351+
// given
352+
final byte[] contents = "Hello, Hiero!".getBytes();
353+
final Instant definedExpirationTime = Instant.now().plusSeconds(120);
354+
final FileId fileId = fileClient.createFile(contents);
355+
356+
// then
357+
Assertions.assertThrows(
358+
NullPointerException.class, () -> fileClient.updateExpirationTime(null, definedExpirationTime)
359+
);
360+
Assertions.assertThrows(
361+
NullPointerException.class, () -> fileClient.updateExpirationTime(fileId, null)
362+
);
363+
Assertions.assertThrows(
364+
NullPointerException.class, () -> fileClient.updateExpirationTime(null, null)
365+
);
366+
}
367+
324368
@Test
325369
void testGetFileSize() throws HieroException {
326370
final byte[] contents = "Hello, Hiero!".getBytes();

0 commit comments

Comments
 (0)