Skip to content

Commit d68a50a

Browse files
committed
test: adding tests to check multipart are building with correct data or not
1 parent 9dc2f89 commit d68a50a

File tree

2 files changed

+185
-14
lines changed

2 files changed

+185
-14
lines changed
Lines changed: 167 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,167 @@
1+
package io.imagekit.sdk.tasks;
2+
3+
import com.google.gson.Gson;
4+
import io.imagekit.sdk.models.FileCreateRequest;
5+
import io.imagekit.sdk.models.FileUpdateRequest;
6+
import okhttp3.*;
7+
import okhttp3.mockwebserver.Dispatcher;
8+
import okhttp3.mockwebserver.MockResponse;
9+
import okhttp3.mockwebserver.MockWebServer;
10+
import okhttp3.mockwebserver.RecordedRequest;
11+
import org.junit.After;
12+
import org.junit.Before;
13+
import org.junit.Test;
14+
import java.util.ArrayList;
15+
import java.util.HashMap;
16+
import java.util.List;
17+
import java.util.Map;
18+
import java.util.concurrent.TimeUnit;
19+
import static org.junit.Assert.assertEquals;
20+
21+
22+
public class MultipartBuilderTest {
23+
MockWebServer server;
24+
Map<String, String> headers;
25+
OkHttpClient okHttpClient;
26+
MultipartBuilder SUT;
27+
28+
@Before
29+
public void setUp() throws Exception {
30+
SUT=new MultipartBuilder();
31+
32+
String credential = Credentials.basic("private_key_test","");
33+
headers=new HashMap<>();
34+
headers.put("Accept-Encoding","application/json");
35+
headers.put("Content-Type","application/json");
36+
headers.put("Authorization",credential);
37+
38+
server = new MockWebServer();
39+
MockResponse response=new MockResponse()
40+
.setResponseCode(200)
41+
.setBody("{isSuccessful=true, message='Your request contains invalid file.', help='For support kindly contact us at [email protected] .', fileId='null', name='null', url='null', thumbnail='null', height=0, width=0, size=0, filePath='null', tags='null', isPrivateFile=false, customCoordinates='null', fileType='null'}");
42+
43+
server.setDispatcher(new Dispatcher() {
44+
@Override
45+
public MockResponse dispatch(RecordedRequest request) throws InterruptedException {
46+
return response;
47+
}
48+
});
49+
server.start();
50+
51+
okHttpClient= new OkHttpClient.Builder()
52+
.connectTimeout(2, TimeUnit.SECONDS)
53+
.readTimeout(2, TimeUnit.SECONDS)
54+
.writeTimeout(2, TimeUnit.SECONDS)
55+
.build();
56+
57+
}
58+
59+
@After
60+
public void tearDown() throws Exception {
61+
server.shutdown();
62+
}
63+
64+
@Test
65+
public void build_test_with_FileCreateRequest() throws Exception{
66+
67+
FileCreateRequest fileCreateRequest=new FileCreateRequest("f06830ca9f1e3e90","demo.jpg");
68+
fileCreateRequest.setPrivateFile(true);
69+
70+
MultipartBody body = SUT.build(fileCreateRequest);
71+
72+
HttpUrl baseUrl = server.url("/api/v1/files/upload");
73+
Request request=new Request.Builder()
74+
.url(baseUrl)
75+
.post(body)
76+
.headers(Headers.of(headers))
77+
.build();
78+
79+
Response response = okHttpClient.newCall(request).execute();
80+
81+
String boundary=body.boundary();
82+
83+
String expectedMultipartData="--"+boundary+"\r\n" +
84+
"Content-Disposition: form-data; name=\"file\"\r\n" +
85+
"Content-Length: 16\r\n\r\n" +
86+
"f06830ca9f1e3e90\r\n" +
87+
"--"+boundary+"\r\n" +
88+
"Content-Disposition: form-data; name=\"fileName\"\r\n" +
89+
"Content-Length: 8\r\n\r\n" +
90+
"demo.jpg\r\n" +
91+
"--"+boundary+"\r\n" +
92+
"Content-Disposition: form-data; name=\"useUniqueFileName\"\r\n" +
93+
"Content-Length: 4\r\n\r\n" +
94+
"true\r\n" +
95+
"--"+boundary+"\r\n" +
96+
"Content-Disposition: form-data; name=\"isPrivateFile\"\r\n" +
97+
"Content-Length: 4\r\n\r\n" +
98+
"true\r\n" +
99+
"--"+boundary+"--\r\n";
100+
101+
// It's capture multipart request
102+
RecordedRequest recordedRequest=server.takeRequest();
103+
104+
String data=recordedRequest.getBody().readUtf8();
105+
106+
assertEquals(expectedMultipartData, data);
107+
}
108+
109+
@Test
110+
public void build_test_with_FileUpdateRequest() throws Exception{
111+
112+
FileUpdateRequest fileUpdateRequest=new FileUpdateRequest("598821f949c0a938d57563bd");
113+
List<String> tags=new ArrayList<>();
114+
tags.add("t-shirt");
115+
tags.add("round-neck");
116+
tags.add("sale2020");
117+
fileUpdateRequest.setTags(tags);
118+
119+
RequestBody body=SUT.build(fileUpdateRequest);
120+
121+
HttpUrl baseUrl = server.url(String.format("/v1/files/%s/details",fileUpdateRequest.getFileId()));
122+
Request request=new Request.Builder()
123+
.url(baseUrl)
124+
.post(body)
125+
.headers(Headers.of(headers))
126+
.build();
127+
128+
Response response = okHttpClient.newCall(request).execute();
129+
130+
131+
String expectedRequestObject="{\"fileId\":\"598821f949c0a938d57563bd\",\"tags\":[\"t-shirt\",\"round-neck\",\"sale2020\"]}";
132+
133+
// It's capture multipart request
134+
RecordedRequest recordedRequest=server.takeRequest();
135+
136+
String data=recordedRequest.getBody().readUtf8();
137+
138+
assertEquals(expectedRequestObject, data);
139+
}
140+
141+
@Test
142+
public void build_test_with_From_Json_String() throws Exception{
143+
144+
String json="{\"fileIds\":[\"598821f949c0a938d57534bd\",\"338821f949c0a938d57563bz\",\"987821f949c0a938d57563rt\"]}";
145+
146+
RequestBody body=SUT.build(json);
147+
148+
HttpUrl baseUrl = server.url("/v1/files/batch/deleteByFileIds");
149+
Request request=new Request.Builder()
150+
.url(baseUrl)
151+
.post(body)
152+
.headers(Headers.of(headers))
153+
.build();
154+
155+
Response response = okHttpClient.newCall(request).execute();
156+
157+
158+
String expectedRequestObject="{\"fileIds\":[\"598821f949c0a938d57534bd\",\"338821f949c0a938d57563bz\",\"987821f949c0a938d57563rt\"]}";
159+
160+
// It's capture multipart request
161+
RecordedRequest recordedRequest=server.takeRequest();
162+
163+
String data=recordedRequest.getBody().readUtf8();
164+
165+
assertEquals(expectedRequestObject, data);
166+
}
167+
}

imagekit-sdk/src/test/java/io/imagekit/sdk/tasks/RestClientTest.java

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@
99
import io.imagekit.sdk.models.results.*;
1010
import io.imagekit.sdk.utils.Utils;
1111
import okhttp3.*;
12+
import okhttp3.mockwebserver.Dispatcher;
13+
import okhttp3.mockwebserver.MockResponse;
14+
import okhttp3.mockwebserver.MockWebServer;
15+
import okhttp3.mockwebserver.RecordedRequest;
1216
import org.junit.Before;
1317
import org.junit.Test;
1418
import org.mockito.ArgumentCaptor;
@@ -19,6 +23,7 @@
1923
import java.util.HashMap;
2024
import java.util.List;
2125
import java.util.Map;
26+
import java.util.concurrent.TimeUnit;
2227
import java.util.concurrent.TimeoutException;
2328

2429
import static org.hamcrest.CoreMatchers.is;
@@ -39,8 +44,7 @@ public void setUp() throws Exception {
3944

4045
@Test
4146
public void valid_upload_expectSuccess() {
42-
OkHttpClientStub clientStub= new OkHttpClientStub("{}",
43-
200, "Ok");
47+
OkHttpClientStub clientStub= new OkHttpClientStub("{}", 200, "Ok");
4448
SUT.setClient(clientStub);
4549

4650
MultipartBuilder multipartBuilder=mock(MultipartBuilder.class);
@@ -253,12 +257,6 @@ public void valid_getFileList_expectSuccess() {
253257

254258
OkHttpClientStub clientStub= new OkHttpClientStub(resp, 200, "Ok");
255259

256-
// OkHttpClient clientStub=mock(OkHttpClient.class);
257-
258-
// ArgumentCaptor<Request> ac=ArgumentCaptor.forClass(Request.class);
259-
260-
// when(clientStub.newCall(ac.capture())).thenReturn();
261-
262260
SUT.setClient(clientStub);
263261

264262
Map<String , String> options=new HashMap<>();
@@ -268,13 +266,9 @@ public void valid_getFileList_expectSuccess() {
268266
ResultList result = SUT.getFileList(options);
269267

270268

271-
// System.out.println(SUT.request.url());
272269
assertEquals("https://api.imagekit.io/v1/files?limit=10&skip=0",SUT.request.url().toString());
273270

274-
// System.out.println(ac.getAllValues());
275-
276-
// assertEquals(1,result.getResults().size());
277-
// assertThat(resp,is(result.getRaw()));
271+
assertThat(resp,is(result.getRaw()));
278272
}
279273

280274
@Test
@@ -326,6 +320,9 @@ public void getFileDetails_valid_request_expect_success() {
326320
200, "Ok");
327321
SUT.setClient(clientStub);
328322
Result result = SUT.getFileDetail("598821f949c0a938d57563bd");
323+
// Asserting endpoint sending to server
324+
assertEquals("https://api.imagekit.io/v1/files/598821f949c0a938d57563bd/details",SUT.request.url().toString());
325+
// Asserting mock response getting from server.
329326
assertThat(resp, is(result.getRaw()));
330327
}
331328

@@ -370,6 +367,7 @@ public void getFileMetaData_valid_request_expect_success() {
370367
200, "Ok");
371368
SUT.setClient(clientStub);
372369
ResultMetaData result = SUT.getFileMetaData("598821f949c0a938d57563bd");
370+
assertEquals("https://api.imagekit.io/v1/files/598821f949c0a938d57563bd/metadata",SUT.request.url().toString());
373371
assertThat(resp, is(result.getRaw()));
374372
}
375373

@@ -414,6 +412,8 @@ public void getRemoteFileMetaData_valid_request_expect_success() {
414412
200, "Ok");
415413
SUT.setClient(clientStub);
416414
ResultMetaData result = SUT.getRemoteFileMetaData("http://remote_url.example.com/demo.png");
415+
416+
assertEquals("https://api.imagekit.io/v1/metadata?url=http://remote_url.example.com/demo.png",SUT.request.url().toString());
417417
assertThat(resp, is(result.getRaw()));
418418
}
419419

@@ -447,7 +447,9 @@ public void deleteFile_valid_request_expect_success() {
447447
OkHttpClientStub clientStub= new OkHttpClientStub(obj.toString(),
448448
204, "Ok");
449449
SUT.setClient(clientStub);
450-
Result result = SUT.deleteFile("fileId");
450+
Result result = SUT.deleteFile("598821f949c0a938d57563bd");
451+
452+
assertEquals("https://api.imagekit.io/v1/files/598821f949c0a938d57563bd",SUT.request.url().toString());
451453
assertThat("File deleted successfully!", is(result.getMessage()));
452454
}
453455

@@ -574,6 +576,8 @@ public void getPurgeCacheStatus_valid_request_expect_success() {
574576
200, "Ok");
575577
SUT.setClient(clientStub);
576578
ResultCacheStatus result = SUT.getPurgeCacheStatus("requestId");
579+
580+
assertEquals("https://api.imagekit.io/v1/files/purge/requestId",SUT.request.url().toString());
577581
assertThat("Complete", is(result.getStatus()));
578582
}
579583

0 commit comments

Comments
 (0)