diff --git a/api/src/main/java/com/javadiscord/jdi/core/api/utils/DiscordImageUtil.java b/api/src/main/java/com/javadiscord/jdi/core/api/utils/DiscordImageUtil.java index 8ef8a3f4..de1a9cd8 100644 --- a/api/src/main/java/com/javadiscord/jdi/core/api/utils/DiscordImageUtil.java +++ b/api/src/main/java/com/javadiscord/jdi/core/api/utils/DiscordImageUtil.java @@ -23,7 +23,7 @@ public static String toDiscordString(Path path) throws IOException { } public static boolean isNotImage(Path path) { - return IMAGE_EXTENSIONS.contains(getExtension(path)); + return !IMAGE_EXTENSIONS.contains(getExtension(path)); } private static String getExtension(Path path) { diff --git a/api/src/test/resources/file.txt b/api/src/test/resources/file.txt new file mode 100644 index 00000000..71c5533f --- /dev/null +++ b/api/src/test/resources/file.txt @@ -0,0 +1 @@ +This is just an ordinary file. \ No newline at end of file diff --git a/api/src/test/resources/image.jpg b/api/src/test/resources/image.jpg new file mode 100644 index 00000000..06554645 Binary files /dev/null and b/api/src/test/resources/image.jpg differ diff --git a/api/src/test/resources/image.png b/api/src/test/resources/image.png new file mode 100644 index 00000000..854b2cbe Binary files /dev/null and b/api/src/test/resources/image.png differ diff --git a/api/src/test/unit/com/javadiscord/jdi/internal/api/utils/DiscordImageUtilTest.java b/api/src/test/unit/com/javadiscord/jdi/internal/api/utils/DiscordImageUtilTest.java new file mode 100644 index 00000000..7abcde91 --- /dev/null +++ b/api/src/test/unit/com/javadiscord/jdi/internal/api/utils/DiscordImageUtilTest.java @@ -0,0 +1,52 @@ +package com.javadiscord.jdi.internal.api.utils; + +import static org.junit.jupiter.api.Assertions.*; + +import com.javadiscord.jdi.core.api.utils.DiscordImageUtil; + +import org.junit.jupiter.api.Test; + +import java.net.URL; +import java.nio.file.Path; +import java.nio.file.Paths; + +class DiscordImageUtilTest { + private static final String IMAGE_JPG_BASE64 = + "/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAP//////////////////////////////////////////////////////////////////////////////////////2wBDAf//////////////////////////////////////////////////////////////////////////////////////wAARCADqATkDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAECA//EACQQAQEBAAIBBAMBAQEBAAAAAAABESExQQISUXFhgZGxocHw/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAH/xAAWEQEBAQAAAAAAAAAAAAAAAAAAEQH/2gAMAwEAAhEDEQA/AMriLyCKgg1gQwCgs4FTMOdutepjQak+FzMSVqgxZdRdPPIIvH5WzzGdBriphtTeAXg2ZjKA1pqKDUGZca3foBek8gFv8Ie3fKdA1qb8s7hoL6eLVt51FsAnql3Ut1M7AWbflLMDkEMX/F6/YjK/pADFQAUNA6alYagKk72m/j9p4Bq2fDDSYKLNXPNLoHE/NT6RYC31cJxZ3yWVM+aBYi/S2ZgiAsnYJx5D21vPmqrm3PTfpQQwyAC8JZvSKDni41ZrMuUVVl+Uz9w9v/1QWrZsZ5nFPHYH+JZyureQSF5M+fJ0CAfwRAVRBQA1DAWVUayoJUWoDpsxntPsueBV4+VxhdyAtv8AjOLGpIDMLbeGvbF4iozJfr/WukAVABAXAQXEAAASzVAZdO2WNordm+emFl7XcQSNZiFtv0C9w90nhJf4mA1u+GcJFwIyAqL/AOovwgGNfSRqdIrNa29M0gKCAojU9PAMjWXpckEJFNFEAAXEUBABYz6rZ0ureQc9vyt9XxDF2QAXtABcQAs0AZywkvluJbyipifas52DcyxjlZweAO0xri/hc+wZOEKIu6nSyeToVZyWXwvCg53gW81QQ7aTNAn5dGZJPs1UXURQAUEMCXQLZE93PRZ5hPTgNMrbIzKCm52LZwCs+2M8w2g3sjPuZAXb4IsMAUACzVUGM4/K+md6vEXUUyM5PDR0IxYe6ramih0VNBrS4xoqN8Q1BFQk3yqyAsioioAAKgDSJL4/jQIn5igLrPqtOuf6oOaxbMoAltUAhhIoJiiggrPu+AaOIxtAX3JbaAIaLwi4t9X4T3fg2AFtqcrUUarP20zUDAmqoE0WRBZPNVUVEAAAAVAC8kvih2DSKxOdBqs7Z0l0gI0mKAC4AuHE7ZtBriM+744QAAAAABAFsveIttBICyaikvy1+r/Cen5rWQHIBQa4rIDRqSl5qDWqziqgAAAATA7BpGdqXb2C2+J/UgAtRQBSQtkBWb6vhLbQAAAAAEBRAAAAAUbm+GZNdPxAP+ql2Tjwx7/wIgZ8iKvBk+CJoCXii9gaqZ/qqihAAAEVABGkBFUwBftNkZ3QW34QAAABFAQAVAAAAAARVkl8gs/43sk1jL45LvHArepk+E9XTG35oLqsmIKmLAEygKg0y1AFQBUXwgAAAoBC34S3UAAABAVAAAAAABAUQAVABdRQa1PcYyit2z58M8C4ouM2NXpOEGeWtNZUatiAIoAKIoCoAoG4C9MW6dgIoAIAAAAAAACKWAgL0CAAAALiANCKioNLgM1CrLihmTafkt1EF3SZ5ZVUW4mnIKvAi5fhEURVDWVQBRAAAAAAAAQFRVyAyulgAqCKlF8IqLsEgC9mGoC+IusqCrv5ZEUVOk1RuJfwSLOOkGFi4XPCoYYrNiKauosBGi9ICstM1UAAAAAAFQ0VcTBAXUGgIqGoKhKAzRRUQUAwxoSrGRpkQA/qiosOL9oJptMRRVZa0VUqSiChE6BqMgCwqKqIogAIAqKCKgKoogg0lBFuIKgAAAKNRlf2gqsftsEtZWoAAqAACKoMqAAeSoqp39kL2AqLOlE8rEBFQARYALhigrNC9gGmooLp4TweEQFFBFAECgIoAu0ifIAqAAA//9k="; + + private Path getPathFromString(String path) throws Exception { + URL url = DiscordImageUtilTest.class.getResource(path); + if (url != null) { + return Paths.get(url.toURI()); + } + return null; + } + + @Test + void testBase64EncodePng() throws Exception { + assertEquals( + IMAGE_JPG_BASE64, DiscordImageUtil.base64Encode(getPathFromString("/image.jpg"))); + } + + @Test + void testNullImage() { + assertThrows(NullPointerException.class, () -> DiscordImageUtil.base64Encode(null)); + } + + @Test + void testToDiscordString() throws Exception { + String expected = String.format("data:image/jpg;base64,%s", IMAGE_JPG_BASE64); + assertEquals(expected, DiscordImageUtil.toDiscordString(getPathFromString("/image.jpg"))); + } + + @Test + void testIsNotImage() throws Exception { + Path txt = getPathFromString("/file.txt"); + Path jpg = getPathFromString("/image.jpg"); + Path png = getPathFromString("/image.png"); + + assertTrue(DiscordImageUtil.isNotImage(txt)); + assertFalse(DiscordImageUtil.isNotImage(jpg)); + assertFalse(DiscordImageUtil.isNotImage(png)); + } +}