Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading