This is an automated email from the ASF dual-hosted git repository. ntimofeev pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/cayenne.git
The following commit(s) were added to refs/heads/master by this push: new 5cf1b83 Fix test failure on JDK 16 5cf1b83 is described below commit 5cf1b83e072e97ae8ad4d16de05d92f37ded4896 Author: Nikita Timofeev <stari...@gmail.com> AuthorDate: Wed Oct 21 19:13:39 2020 +0300 Fix test failure on JDK 16 --- .../transformer/bytes/GzipEncryptorTest.java | 38 +++++++++++++--------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/transformer/bytes/GzipEncryptorTest.java b/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/transformer/bytes/GzipEncryptorTest.java index db7e567..0560f1b 100644 --- a/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/transformer/bytes/GzipEncryptorTest.java +++ b/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/transformer/bytes/GzipEncryptorTest.java @@ -26,11 +26,10 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import java.io.IOException; -import java.io.UnsupportedEncodingException; +import java.nio.charset.StandardCharsets; import org.apache.cayenne.crypto.unit.CryptoUnitUtils; import org.junit.Test; -import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; public class GzipEncryptorTest { @@ -38,46 +37,55 @@ public class GzipEncryptorTest { @Test public void testGzip() throws IOException { - byte[] input1 = "Hello Hello Hello".getBytes("UTF8"); + byte[] input1 = "Hello Hello Hello".getBytes(StandardCharsets.UTF_8); byte[] output1 = GzipEncryptor.gzip(input1); byte[] expectedOutput1 = CryptoUnitUtils.hexToBytes("1f8b0800000000000000f348cdc9c957f0409000a91a078c11000000"); + + // since JDK 16, gzip call sets OS flag to 255, that means "unknown", previous versions set this byte to 0 + // see http://www.zlib.org/rfc-gzip.html spec for gzip header bytes details + if(output1.length > 8 && output1[9] == -1) { + output1[9] = 0; + } + assertArrayEquals(expectedOutput1, output1); } @Test - public void testEncrypt() throws UnsupportedEncodingException { + public void testEncrypt() { BytesEncryptor delegate = mock(BytesEncryptor.class); - when(delegate.encrypt(any(byte[].class), anyInt(), any(byte[].class))).thenAnswer(new Answer<byte[]>() { - @Override - public byte[] answer(InvocationOnMock invocation) throws Throwable { - Object[] args = invocation.getArguments(); + when(delegate.encrypt(any(byte[].class), anyInt(), any(byte[].class))).thenAnswer((Answer<byte[]>) invocation -> { + Object[] args = invocation.getArguments(); - byte[] answer = (byte[]) args[0]; - int offset = (Integer) args[1]; + byte[] answer = (byte[]) args[0]; + int offset = (Integer) args[1]; - assertEquals(1, offset); + assertEquals(1, offset); - return answer; - } + return answer; }); GzipEncryptor e = new GzipEncryptor(delegate); - byte[] input1 = "Hello Hello Hello".getBytes("UTF8"); + byte[] input1 = "Hello Hello Hello".getBytes(StandardCharsets.UTF_8); byte[] output1 = e.encrypt(input1, 1, new byte[1]); byte[] expectedOutput1 = input1; assertArrayEquals(expectedOutput1, output1); byte[] input2 = ("Hello AAAAA Hello AAAAA Hello AAAAA Hello AAAAA Hello AAAAA Hello AAAAA Hello " - + "Hello AAAAA Hello AAAAA Hello AAAAA Hello AAAAA Hello AAAAA Hello AAAAA Hello").getBytes("UTF8"); + + "Hello AAAAA Hello AAAAA Hello AAAAA Hello AAAAA Hello AAAAA Hello AAAAA Hello").getBytes(StandardCharsets.UTF_8); byte[] output2 = e.encrypt(input2, 1, new byte[1]); // somehow 'gzip -c' fills bytes 3..9 with values... the rest of the // gzip string is identical... byte[] expectedOutput2 = CryptoUnitUtils .hexToBytes("1f8b0800000000000000f348cdc9c957700401050f8ad9949b80c40600bbec62509b000000"); + // since JDK 16, gzip call sets OS flag to 255, that means "unknown", previous versions set this byte to 0 + // see http://www.zlib.org/rfc-gzip.html spec for gzip header bytes details + if(output2.length > 8 && output2[9] == -1) { + output2[9] = 0; + } assertArrayEquals(expectedOutput2, output2);