diff --git a/src/main/java/com/razorpay/ApiUtils.java b/src/main/java/com/razorpay/ApiUtils.java index 20778b08..e0a6cfeb 100755 --- a/src/main/java/com/razorpay/ApiUtils.java +++ b/src/main/java/com/razorpay/ApiUtils.java @@ -236,13 +236,22 @@ private static X509TrustManager createDefaultTrustManager() throws NoSuchAlgorit return trustManager; } - private static String getMediaType(String fileName){ + static String getMediaType(String fileName) { int extensionIndex = fileName.lastIndexOf('.'); - String extenionName = fileName.substring(extensionIndex + 1); - if(extenionName == "jpg" | extenionName == "jpeg" | extenionName == "png" | extenionName == "jfif"){ - return "image/jpg"; + if (extensionIndex < 0 || extensionIndex == fileName.length() - 1) { + return "application/octet-stream"; } - return "image/pdf"; + String extensionName = fileName.substring(extensionIndex + 1).toLowerCase(); + if ("jpg".equals(extensionName) || "jpeg".equals(extensionName) || "jfif".equals(extensionName)) { + return "image/jpeg"; + } + if ("png".equals(extensionName)) { + return "image/png"; + } + if ("pdf".equals(extensionName)) { + return "application/pdf"; + } + return "application/octet-stream"; } private static RequestBody fileRequestBody(JSONObject requestObject){ diff --git a/src/test/java/com/razorpay/ApiUtilsTest.java b/src/test/java/com/razorpay/ApiUtilsTest.java new file mode 100644 index 00000000..6189513d --- /dev/null +++ b/src/test/java/com/razorpay/ApiUtilsTest.java @@ -0,0 +1,53 @@ +package com.razorpay; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class ApiUtilsTest { + + @Test + public void getMediaType_Jpg_ReturnsImageJpeg() { + assertEquals("image/jpeg", ApiUtils.getMediaType("document.jpg")); + assertEquals("image/jpeg", ApiUtils.getMediaType("doc.JPG")); + } + + @Test + public void getMediaType_Jpeg_ReturnsImageJpeg() { + assertEquals("image/jpeg", ApiUtils.getMediaType("photo.jpeg")); + assertEquals("image/jpeg", ApiUtils.getMediaType("photo.JPEG")); + } + + @Test + public void getMediaType_Png_ReturnsImagePng() { + assertEquals("image/png", ApiUtils.getMediaType("image.png")); + assertEquals("image/png", ApiUtils.getMediaType("image.PNG")); + } + + @Test + public void getMediaType_Jfif_ReturnsImageJpeg() { + assertEquals("image/jpeg", ApiUtils.getMediaType("photo.jfif")); + } + + @Test + public void getMediaType_Pdf_ReturnsApplicationPdf() { + assertEquals("application/pdf", ApiUtils.getMediaType("invoice.pdf")); + assertEquals("application/pdf", ApiUtils.getMediaType("report.PDF")); + } + + @Test + public void getMediaType_UnknownExtension_ReturnsOctetStream() { + assertEquals("application/octet-stream", ApiUtils.getMediaType("file.xyz")); + assertEquals("application/octet-stream", ApiUtils.getMediaType("data.json")); + } + + @Test + public void getMediaType_NoExtension_ReturnsOctetStream() { + assertEquals("application/octet-stream", ApiUtils.getMediaType("README")); + } + + @Test + public void getMediaType_TrailingDot_ReturnsOctetStream() { + assertEquals("application/octet-stream", ApiUtils.getMediaType("file.")); + } +}