From 1cfe3d6d74d6405e573063eb632008f17141cdac Mon Sep 17 00:00:00 2001 From: Manish Dait Date: Mon, 23 Dec 2024 20:12:34 +0530 Subject: [PATCH] Implemented tests for missing functionalities in FileClientImpl.updateExpirationTime() Signed-off-by: Manish Dait --- .../hiero/base/test/FileClientImplTest.java | 77 +++++++++++++++++++ .../hiero/spring/test/FileClientTests.java | 58 ++++++++++++-- 2 files changed, 128 insertions(+), 7 deletions(-) diff --git a/hiero-enterprise-base/src/test/java/com/openelements/hiero/base/test/FileClientImplTest.java b/hiero-enterprise-base/src/test/java/com/openelements/hiero/base/test/FileClientImplTest.java index 9c4b4a2a..3c838761 100644 --- a/hiero-enterprise-base/src/test/java/com/openelements/hiero/base/test/FileClientImplTest.java +++ b/hiero-enterprise-base/src/test/java/com/openelements/hiero/base/test/FileClientImplTest.java @@ -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) + ); + } } diff --git a/hiero-enterprise-spring/src/test/java/com/openelements/hiero/spring/test/FileClientTests.java b/hiero-enterprise-spring/src/test/java/com/openelements/hiero/spring/test/FileClientTests.java index 5b0b6b7a..0e8b37e7 100644 --- a/hiero-enterprise-spring/src/test/java/com/openelements/hiero/spring/test/FileClientTests.java +++ b/hiero-enterprise-spring/src/test/java/com/openelements/hiero/spring/test/FileClientTests.java @@ -292,16 +292,16 @@ 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))); } @@ -309,18 +309,62 @@ void testUpdateExpirationTime() throws Exception { @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();