diff --git a/server-data-store/src/main/resources/server-data-store-config.properties b/server-data-store/src/main/resources/server-data-store-config.properties index 5717f55f1a53bcd6482de856a067c409f184513b..cf70d73c76e43206cd6ebc26dd13db0fe9adc45c 100755 --- a/server-data-store/src/main/resources/server-data-store-config.properties +++ b/server-data-store/src/main/resources/server-data-store-config.properties @@ -12,7 +12,7 @@ httpServerUri=/data-store-server httpServerPort=8085 httpMaxContentLength=1024 -maxReadSizeInBytes=1024 +maxReadSizeInBytes=1048576 authenticationInfoProviderClass=ch.ethz.sis.afsserver.worker.providers.impl.DummyAuthenticationInfoProvider authorizationInfoProviderClass=ch.ethz.sis.afsserver.worker.providers.impl.DummyAuthorizationInfoProvider poolSize=50 diff --git a/server-data-store/src/test/java/ch/ethz/sis/afsserver/client/BaseApiClientTest.java b/server-data-store/src/test/java/ch/ethz/sis/afsserver/client/BaseApiClientTest.java index c7e0c6b0122ebd302ab5d084c43b622f4adfe909..a7e53cc5f476bb887fba8423153d6f0505c3eab4 100644 --- a/server-data-store/src/test/java/ch/ethz/sis/afsserver/client/BaseApiClientTest.java +++ b/server-data-store/src/test/java/ch/ethz/sis/afsserver/client/BaseApiClientTest.java @@ -17,23 +17,34 @@ package ch.ethz.sis.afsserver.client; -import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.CoreMatchers.containsString; -import static org.junit.Assert.*; - +import static org.hamcrest.MatcherAssert.assertThat; +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +import java.io.FileInputStream; import java.io.IOException; import java.net.URI; +import java.net.URL; import java.nio.file.Path; import java.util.List; +import java.util.Set; import java.util.UUID; -import ch.ethz.sis.afsapi.dto.File; -import ch.ethz.sis.shared.io.IOUtils; -import org.junit.*; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; import ch.ethz.sis.afs.manager.TransactionConnection; +import ch.ethz.sis.afsapi.dto.File; import ch.ethz.sis.afsclient.client.AfsClient; import ch.ethz.sis.afsserver.server.Server; +import ch.ethz.sis.shared.io.IOUtils; public abstract class BaseApiClientTest { @@ -53,8 +64,14 @@ public abstract class BaseApiClientTest protected static final String FILE_B = "B.txt"; + protected static final String FILE_BINARY = "test.png"; + protected static String owner = UUID.randomUUID().toString(); + protected int binarySize = -1; + + protected byte[] binaryData = null; + protected String testDataRoot; @AfterClass @@ -66,12 +83,22 @@ public abstract class BaseApiClientTest @Before public void setUp() throws Exception { - testDataRoot = IOUtils.getPath(storageRoot, owner.toString()); + testDataRoot = IOUtils.getPath(storageRoot, owner); IOUtils.createDirectories(testDataRoot); String testDataFile = IOUtils.getPath(testDataRoot, FILE_A); IOUtils.createFile(testDataFile); IOUtils.write(testDataFile, 0, DATA); + final String binaryTestDataFile = IOUtils.getPath(testDataRoot, FILE_BINARY); + final URL resource = getClass().getClassLoader().getResource("ch/ethz/sis/afsserver/client/test.png"); + final java.io.File file = new java.io.File(resource.toURI()); + this.binarySize = (int) file.length(); + IOUtils.copy(resource.getPath(), binaryTestDataFile); + + try (final FileInputStream fis = new FileInputStream(file)) { + binaryData = fis.readAllBytes(); + } + afsClient = new AfsClient( new URI("http", null, "localhost", httpServerPort, httpServerPath, null, null)); } @@ -140,7 +167,7 @@ public abstract class BaseApiClientTest login(); List<File> list = afsClient.list(owner, "", Boolean.TRUE); - assertEquals(1, list.size()); + assertEquals(2, list.size()); assertEquals(FILE_A, list.get(0).getName()); } @@ -153,6 +180,15 @@ public abstract class BaseApiClientTest assertArrayEquals(DATA, bytes); } + @Test + public void read_binaryFile() throws Exception + { + login(); + + byte[] bytes = afsClient.read(owner, FILE_BINARY, 0L, binarySize); + assertArrayEquals(binaryData, bytes); + } + @Test public void resumeRead_getsDataFromTemporaryFile() throws Exception { @@ -229,7 +265,7 @@ public abstract class BaseApiClientTest assertTrue(deleted); List<ch.ethz.sis.afs.api.dto.File> list = IOUtils.list(testDataRoot, true); - assertEquals(0, list.size()); + assertEquals(1, list.size()); } @Test @@ -253,8 +289,8 @@ public abstract class BaseApiClientTest assertTrue(result); List<ch.ethz.sis.afs.api.dto.File> list = IOUtils.list(testDataRoot, true); - assertEquals(1, list.size()); - assertEquals(FILE_B, list.get(0).getName()); + assertEquals(2, list.size()); + assertEquals(Set.of(FILE_B, FILE_BINARY), Set.of(list.get(0).getName(), list.get(1).getName())); byte[] testDataFile = IOUtils.readFully(IOUtils.getPath(testDataRoot, FILE_B)); assertArrayEquals(DATA, testDataFile); diff --git a/server-data-store/src/test/resources/ch/ethz/sis/afsserver/client/test.png b/server-data-store/src/test/resources/ch/ethz/sis/afsserver/client/test.png new file mode 100644 index 0000000000000000000000000000000000000000..110674996771a7fd361b6364fe94472304556403 Binary files /dev/null and b/server-data-store/src/test/resources/ch/ethz/sis/afsserver/client/test.png differ diff --git a/server-data-store/src/test/resources/test-server-config.properties b/server-data-store/src/test/resources/test-server-config.properties index 430d16f423d418c474557cf5231498484c5a20a6..ae2c6d308127bd2ef5629d40e666f53c3addcdb7 100644 --- a/server-data-store/src/test/resources/test-server-config.properties +++ b/server-data-store/src/test/resources/test-server-config.properties @@ -29,7 +29,7 @@ httpServerPort=8085 httpServerUri=/fileserver httpMaxContentLength=1024 -maxReadSizeInBytes=1024 +maxReadSizeInBytes=1048576 authenticationInfoProviderClass=ch.ethz.sis.afsserver.worker.providers.impl.DummyAuthenticationInfoProvider authorizationInfoProviderClass=ch.ethz.sis.afsserver.worker.providers.impl.DummyAuthorizationInfoProvider poolSize=50 diff --git a/server-data-store/src/test/resources/test-server-with-auth-config.properties b/server-data-store/src/test/resources/test-server-with-auth-config.properties index cd2e462ccfc3ab3131efe26e436d9b92b930d864..1ee88621d7027ed0ebe33e6e60aa3882fa75d79f 100644 --- a/server-data-store/src/test/resources/test-server-with-auth-config.properties +++ b/server-data-store/src/test/resources/test-server-with-auth-config.properties @@ -29,7 +29,7 @@ httpServerPort=8085 httpServerUri=/fileserver httpMaxContentLength=1024 -maxReadSizeInBytes=1024 +maxReadSizeInBytes=1048576 authenticationInfoProviderClass=ch.ethz.sis.afsserver.worker.providers.impl.OpenBISAuthenticationInfoProvider authorizationInfoProviderClass=ch.ethz.sis.afsserver.worker.providers.impl.OpenBISAuthorizationInfoProvider poolSize=50