From 54be05c41bfbda459545e9c9161167645adb46e2 Mon Sep 17 00:00:00 2001 From: =?utf8?q?David=20=E2=80=98Bombe=E2=80=99=20Roden?= Date: Tue, 31 Dec 2024 21:07:03 +0100 Subject: [PATCH] =?utf8?q?=E2=9C=85=20Add=20tests=20for=20file=20entries?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../java/net/pterodactylus/fcp/FileEntryTest.java | 128 +++++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 src/test/java/net/pterodactylus/fcp/FileEntryTest.java diff --git a/src/test/java/net/pterodactylus/fcp/FileEntryTest.java b/src/test/java/net/pterodactylus/fcp/FileEntryTest.java new file mode 100644 index 0000000..c516eaa --- /dev/null +++ b/src/test/java/net/pterodactylus/fcp/FileEntryTest.java @@ -0,0 +1,128 @@ +package net.pterodactylus.fcp; + +import org.junit.Test; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; + +import static java.nio.charset.StandardCharsets.UTF_8; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.hasEntry; +import static org.hamcrest.Matchers.hasKey; +import static org.hamcrest.Matchers.not; + +public class FileEntryTest { + + @Test + public void directFileEntryHasCorrectType() { + FileEntry fileEntry = FileEntry.createDirectFileEntry("direct.entry", null, 0, null); + assertThat(fileEntry.getFields(), hasEntry("UploadFrom", "direct")); + } + + @Test + public void directFileEntryHasCorrectName() { + FileEntry fileEntry = FileEntry.createDirectFileEntry("direct.entry", null, 0, null); + assertThat(fileEntry.getFields(), hasEntry("Name", "direct.entry")); + } + + @Test + public void directFileEntryHasUploadFromSetToDirect() { + FileEntry fileEntry = FileEntry.createDirectFileEntry("direct.entry", null, 0, null); + assertThat(fileEntry.getFields(), hasEntry("UploadFrom", "direct")); + } + + @Test + public void directFileEntryHasCorrectContentType() { + FileEntry fileEntry = FileEntry.createDirectFileEntry("direct.entry", "application/test", 0, null); + assertThat(fileEntry.getFields(), hasEntry("Metadata.ContentType", "application/test")); + } + + @Test + public void directFileHasNoContentTypeIfContentTypeIsNull() { + FileEntry fileEntry = FileEntry.createDirectFileEntry("direct.entry", null, 0, null); + assertThat(fileEntry.getFields(), not(hasKey("Metadata.ContentType"))); + } + + @Test + public void directFileEntryHasCorrectDataLength() { + FileEntry fileEntry = FileEntry.createDirectFileEntry("direct.entry", "application/test", 12, null); + assertThat(fileEntry.getFields(), hasEntry("DataLength", "12")); + } + + @Test + public void directFileEntryHasCorrectInputStream() throws IOException { + FileEntry fileEntry = FileEntry.createDirectFileEntry("direct.entry", "application/test", 12, new ByteArrayInputStream("Hello World!".getBytes(UTF_8))); + try (InputStream inputStream = fileEntry.getInputStream(); ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) { + FcpUtils.copy(inputStream, outputStream); + assertThat(outputStream.toByteArray(), equalTo("Hello World!".getBytes(UTF_8))); + } + } + + @Test + public void diskFileEntryHasCorrectType() { + FileEntry fileEntry = FileEntry.createDiskFileEntry("file.entry", null, null); + assertThat(fileEntry.getFields(), hasEntry("UploadFrom", "disk")); + } + + @Test + public void diskFileEntryHasCorrectName() { + FileEntry fileEntry = FileEntry.createDiskFileEntry("file.entry", null, null); + assertThat(fileEntry.getFields(), hasEntry("Name", "file.entry")); + } + + @Test + public void diskFileEntryHasCorrectFileName() { + FileEntry fileEntry = FileEntry.createDiskFileEntry("file.entry", "some/file.name", null); + assertThat(fileEntry.getFields(), hasEntry("Filename", "some/file.name")); + } + + @Test + public void diskFileEntryHasCorrectContentType() { + FileEntry fileEntry = FileEntry.createDiskFileEntry("file.entry", null, "application/test"); + assertThat(fileEntry.getFields(), hasEntry("Metadata.ContentType", "application/test")); + } + + @Test + public void diskFileEntryWithNullContentTypeHasNoContentType() { + FileEntry fileEntry = FileEntry.createDiskFileEntry("file.entry", null, null); + assertThat(fileEntry.getFields(), not(hasKey("Metadata.ContentType"))); + } + + @Test + public void diskFileEntryHasEmptyInputStream() throws IOException { + FileEntry fileEntry = FileEntry.createDiskFileEntry("file.entry", null, null); + try (InputStream inputStream = fileEntry.getInputStream()) { + assertThat(inputStream.read(), equalTo(-1)); + } + } + + @Test + public void redirectFileEntryHasCorrectType() { + FileEntry fileEntry = FileEntry.createRedirectFileEntry("file.entry", "target-uri"); + assertThat(fileEntry.getFields(), hasEntry("UploadFrom", "redirect")); + } + + @Test + public void redirectFileEntryHasCorrectName() { + FileEntry fileEntry = FileEntry.createRedirectFileEntry("file.entry", "target-uri"); + assertThat(fileEntry.getFields(), hasEntry("Name", "file.entry")); + } + + @Test + public void redirectFileEntryHasCorrectTarget() { + FileEntry fileEntry = FileEntry.createRedirectFileEntry("file.entry", "target-uri"); + assertThat(fileEntry.getFields(), hasEntry("TargetURI", "target-uri")); + } + + @Test + public void redirectFileEntryHasEmptyInputStream() throws IOException { + FileEntry fileEntry = FileEntry.createRedirectFileEntry("file.entry", "target-uri"); + try (InputStream inputStream = fileEntry.getInputStream()) { + assertThat(inputStream.read(), equalTo(-1)); + } + } + +} -- 2.7.4