Skip to content

Commit 44cd44c

Browse files
committed
fix: correct MIME type detection for file uploads
getMediaType() used reference equality (==) for string comparison, which always failed in Java. All uploaded files were incorrectly sent as "image/pdf" regardless of extension. - Replace == with .equals() for extension checks - Fix typo: extenionName -> extensionName - Return correct MIME types: image/jpeg, image/png, application/pdf - Handle missing/trailing extension via application/octet-stream - Add unit tests for getMediaType Made-with: Cursor
1 parent c249a83 commit 44cd44c

2 files changed

Lines changed: 67 additions & 5 deletions

File tree

src/main/java/com/razorpay/ApiUtils.java

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -236,13 +236,22 @@ private static X509TrustManager createDefaultTrustManager() throws NoSuchAlgorit
236236
return trustManager;
237237
}
238238

239-
private static String getMediaType(String fileName){
239+
static String getMediaType(String fileName) {
240240
int extensionIndex = fileName.lastIndexOf('.');
241-
String extenionName = fileName.substring(extensionIndex + 1);
242-
if(extenionName == "jpg" | extenionName == "jpeg" | extenionName == "png" | extenionName == "jfif"){
243-
return "image/jpg";
241+
if (extensionIndex < 0 || extensionIndex == fileName.length() - 1) {
242+
return "application/octet-stream";
244243
}
245-
return "image/pdf";
244+
String extensionName = fileName.substring(extensionIndex + 1).toLowerCase();
245+
if ("jpg".equals(extensionName) || "jpeg".equals(extensionName) || "jfif".equals(extensionName)) {
246+
return "image/jpeg";
247+
}
248+
if ("png".equals(extensionName)) {
249+
return "image/png";
250+
}
251+
if ("pdf".equals(extensionName)) {
252+
return "application/pdf";
253+
}
254+
return "application/octet-stream";
246255
}
247256

248257
private static RequestBody fileRequestBody(JSONObject requestObject){
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package com.razorpay;
2+
3+
import org.junit.Test;
4+
5+
import static org.junit.Assert.assertEquals;
6+
7+
public class ApiUtilsTest {
8+
9+
@Test
10+
public void getMediaType_Jpg_ReturnsImageJpeg() {
11+
assertEquals("image/jpeg", ApiUtils.getMediaType("document.jpg"));
12+
assertEquals("image/jpeg", ApiUtils.getMediaType("doc.JPG"));
13+
}
14+
15+
@Test
16+
public void getMediaType_Jpeg_ReturnsImageJpeg() {
17+
assertEquals("image/jpeg", ApiUtils.getMediaType("photo.jpeg"));
18+
assertEquals("image/jpeg", ApiUtils.getMediaType("photo.JPEG"));
19+
}
20+
21+
@Test
22+
public void getMediaType_Png_ReturnsImagePng() {
23+
assertEquals("image/png", ApiUtils.getMediaType("image.png"));
24+
assertEquals("image/png", ApiUtils.getMediaType("image.PNG"));
25+
}
26+
27+
@Test
28+
public void getMediaType_Jfif_ReturnsImageJpeg() {
29+
assertEquals("image/jpeg", ApiUtils.getMediaType("photo.jfif"));
30+
}
31+
32+
@Test
33+
public void getMediaType_Pdf_ReturnsApplicationPdf() {
34+
assertEquals("application/pdf", ApiUtils.getMediaType("invoice.pdf"));
35+
assertEquals("application/pdf", ApiUtils.getMediaType("report.PDF"));
36+
}
37+
38+
@Test
39+
public void getMediaType_UnknownExtension_ReturnsOctetStream() {
40+
assertEquals("application/octet-stream", ApiUtils.getMediaType("file.xyz"));
41+
assertEquals("application/octet-stream", ApiUtils.getMediaType("data.json"));
42+
}
43+
44+
@Test
45+
public void getMediaType_NoExtension_ReturnsOctetStream() {
46+
assertEquals("application/octet-stream", ApiUtils.getMediaType("README"));
47+
}
48+
49+
@Test
50+
public void getMediaType_TrailingDot_ReturnsOctetStream() {
51+
assertEquals("application/octet-stream", ApiUtils.getMediaType("file."));
52+
}
53+
}

0 commit comments

Comments
 (0)