Skip to content

Commit

Permalink
Merge pull request #142 from manishdait/issue-103
Browse files Browse the repository at this point in the history
Implemented tests for missing functionalities in FileClientImpl.updateExpirationTime()
  • Loading branch information
Ndacyayisenga-droid authored Jan 7, 2025
2 parents 2293bb1 + 1cfe3d6 commit e397a34
Show file tree
Hide file tree
Showing 2 changed files with 128 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -315,4 +315,81 @@ void testReadFileThrowsExceptionForNullValue() {

Assertions.assertTrue(exception.getMessage().contains(message));
}

@Test
void testUpdateExpirationTime() throws HieroException {
// mock
final FileUpdateResult fileUpdateResult = Mockito.mock(FileUpdateResult.class);

// given
final FileId fileId = FileId.fromString("1.2.3");
final Instant expirationTime = Instant.now().plusSeconds(120);

//then
when(protocolLayerClient.executeFileUpdateRequestTransaction(any(FileUpdateRequest.class)))
.thenReturn(fileUpdateResult);

fileClientImpl.updateExpirationTime(fileId, expirationTime);

verify(protocolLayerClient, times(1))
.executeFileUpdateRequestTransaction(any(FileUpdateRequest.class));
}

@Test
void testUpdateExpirationTimeThrowsExceptionForPastExpiration() {
final String message = "Expiration time must be in the future";

// given
final FileId fileId = FileId.fromString("1.2.3");
final Instant expirationTime = Instant.now().minusSeconds(1);

// then
final IllegalArgumentException exception = Assertions.assertThrows(
IllegalArgumentException.class, () -> fileClientImpl.updateExpirationTime(fileId, expirationTime)
);

Assertions.assertTrue(exception.getMessage().contains(message));
}

@Test
void testUpdateExpirationTimeThrowsExceptionForInvalidId() throws HieroException {
final String message = "Failed to execute transaction of type FileUpdateTransaction";

// given
final FileId fileId = FileId.fromString("1.2.3");
final Instant expirationTime = Instant.now().plusSeconds(1);

// then
when(protocolLayerClient.executeFileUpdateRequestTransaction(any(FileUpdateRequest.class)))
.thenThrow(new HieroException(message));

final HieroException exception = Assertions.assertThrows(
HieroException.class, () -> fileClientImpl.updateExpirationTime(fileId, expirationTime)
);

Assertions.assertTrue(exception.getMessage().contains(message));
}


@Test
void testUpdateExpirationTimeThrowsExceptionForNullArguments() {
// given
final FileId fileId = FileId.fromString("1.2.3");
final Instant expirationTime = Instant.now().plusSeconds(120);

// then
final NullPointerException nullIdException = Assertions.assertThrows(
NullPointerException.class, () -> fileClientImpl.updateExpirationTime(null, expirationTime)
);
Assertions.assertTrue(nullIdException.getMessage().contains("fileId must not be null"));

final NullPointerException nullTimeException = Assertions.assertThrows(
NullPointerException.class, () -> fileClientImpl.updateExpirationTime(fileId, null)
);
Assertions.assertTrue(nullTimeException.getMessage().contains("expirationTime must not be null"));

Assertions.assertThrows(
NullPointerException.class, () -> fileClientImpl.updateExpirationTime(null, null)
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -292,35 +292,79 @@ void testGetExpirationTimeForFailures() {
@Test
@Disabled("Always fails with AUTORENEW_DURATION_NOT_IN_RANGE. Needs to be investigated further.")
void testUpdateExpirationTime() throws Exception {
//given
final byte[] contents = "Hello, Hedera!".getBytes();
// given
final byte[] contents = "Hello, Hiero!".getBytes();
final Instant definedExpirationTime = Instant.now().plus(Duration.of(20, ChronoUnit.MINUTES));
final FileId fileId = fileClient.createFile(contents);
fileClient.updateExpirationTime(fileId, definedExpirationTime);

//when
// when
final Instant expirationTime = fileClient.getExpirationTime(fileId);

//then
// then
Assertions.assertTrue(expirationTime.isAfter(definedExpirationTime.minusSeconds(1)));
Assertions.assertTrue(expirationTime.isBefore(definedExpirationTime.plusSeconds(1)));
}

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

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

//then
// then
Assertions.assertArrayEquals(contents, result);
}

@Test
void testUpdateExpirationTimeThrowsExceptionForPastExpirationTime() throws HieroException {
// given
final byte[] contents = "Hello, Hiero!".getBytes();
final Instant definedExpirationTime = Instant.now().minusSeconds(1);
final FileId fileId = fileClient.createFile(contents);

// then
Assertions.assertThrows(
IllegalArgumentException.class, () -> fileClient.updateExpirationTime(fileId, definedExpirationTime)
);
}

@Test
void testUpdateExpirationTimeThrowsExceptionForInvalidId() {
// given
final FileId fileId = FileId.fromString("1.2.3");
final Instant definedExpirationTime = Instant.now().plusSeconds(120);

// then
Assertions.assertThrows(
HieroException.class, () -> fileClient.updateExpirationTime(fileId, definedExpirationTime)
);
}

@Test
void testUpdateExpirationTimeThrowsExceptionForNullArgs() throws HieroException {
// given
final byte[] contents = "Hello, Hiero!".getBytes();
final Instant definedExpirationTime = Instant.now().plusSeconds(120);
final FileId fileId = fileClient.createFile(contents);

// then
Assertions.assertThrows(
NullPointerException.class, () -> fileClient.updateExpirationTime(null, definedExpirationTime)
);
Assertions.assertThrows(
NullPointerException.class, () -> fileClient.updateExpirationTime(fileId, null)
);
Assertions.assertThrows(
NullPointerException.class, () -> fileClient.updateExpirationTime(null, null)
);
}

@Test
void testGetFileSize() throws HieroException {
final byte[] contents = "Hello, Hiero!".getBytes();
Expand Down

0 comments on commit e397a34

Please sign in to comment.