Skip to content

Commit 8cd9696

Browse files
committed
Update tests to use mock HTTP client
1 parent 61baa39 commit 8cd9696

File tree

1 file changed

+43
-13
lines changed

1 file changed

+43
-13
lines changed

src/test/java/com/microsoft/graph/core/requests/upload/UploadResponseHandlerTest.java

Lines changed: 43 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,16 @@
1111
import okhttp3.*;
1212
import org.junit.jupiter.api.Assertions;
1313
import org.junit.jupiter.api.Test;
14+
import org.mockito.stubbing.Answer;
1415

1516
import static org.junit.jupiter.api.Assertions.*;
17+
import static org.mockito.ArgumentMatchers.any;
18+
import static org.mockito.Mockito.doAnswer;
1619
import static org.mockito.Mockito.mock;
20+
import static org.mockito.Mockito.when;
1721
import static com.microsoft.kiota.serialization.ParseNodeFactoryRegistry.defaultInstance;
1822

23+
import java.io.IOException;
1924
import java.net.HttpURLConnection;
2025
import java.time.OffsetDateTime;
2126

@@ -24,7 +29,7 @@ class UploadResponseHandlerTest {
2429
ParseNodeFactoryRegistry registry = defaultInstance;
2530

2631
@Test
27-
void GetUploadItemOnCompletedUpload() {
32+
void GetUploadItemOnCompletedUpload() throws IOException {
2833
registry.contentTypeAssociatedFactories.put(CoreConstants.MimeTypeNames.APPLICATION_JSON, new JsonParseNodeFactory());
2934

3035
UploadResponseHandler responseHandler = new UploadResponseHandler(null);
@@ -41,8 +46,9 @@ void GetUploadItemOnCompletedUpload() {
4146
.body(body)
4247
.code(HttpURLConnection.HTTP_CREATED)
4348
.build();
49+
OkHttpClient mockHttpClient = getMockClient(response);
4450
UploadResult<TestDriveItem> result = responseHandler
45-
.handleResponse(response, TestDriveItem::createFromDiscriminatorValue);
51+
.handleResponse(mockHttpClient.newCall(mock(Request.class)).execute(), TestDriveItem::createFromDiscriminatorValue);
4652
responseHandler.handleResponse(response, parseNode -> {return new TestDriveItem();});
4753
TestDriveItem item = result.itemResponse;
4854
assertTrue(result.isUploadSuccessful());
@@ -53,7 +59,7 @@ void GetUploadItemOnCompletedUpload() {
5359
}
5460

5561
@Test
56-
void GetUploadItemOnCompletedUpdate() {
62+
void GetUploadItemOnCompletedUpdate() throws IOException {
5763
registry.contentTypeAssociatedFactories.put(CoreConstants.MimeTypeNames.APPLICATION_JSON, new JsonParseNodeFactory());
5864

5965
UploadResponseHandler responseHandler = new UploadResponseHandler(null);
@@ -70,8 +76,9 @@ void GetUploadItemOnCompletedUpdate() {
7076
.code(HttpURLConnection.HTTP_OK)
7177
.message("OK")
7278
.build();
79+
OkHttpClient mockHttpClient = getMockClient(response);
7380
UploadResult<TestDriveItem> result = responseHandler
74-
.handleResponse(response, TestDriveItem::createFromDiscriminatorValue);
81+
.handleResponse(mockHttpClient.newCall(mock(Request.class)).execute(), TestDriveItem::createFromDiscriminatorValue);
7582
responseHandler.handleResponse(response, parseNode -> {return new TestDriveItem();});
7683
TestDriveItem item = result.itemResponse;
7784
assertTrue(result.isUploadSuccessful());
@@ -82,28 +89,29 @@ void GetUploadItemOnCompletedUpdate() {
8289
}
8390

8491
@Test
85-
void getFileAttachmentLocationOnCompletedUpload() {
92+
void getFileAttachmentLocationOnCompletedUpload() throws IOException {
8693
registry.contentTypeAssociatedFactories.put(CoreConstants.MimeTypeNames.APPLICATION_JSON, new JsonParseNodeFactory());
8794

8895
UploadResponseHandler responseHandler = new UploadResponseHandler(null);
8996
Response response = new Response.Builder()
9097
.request(mock(Request.class))
9198
.protocol(mock(Protocol.class))
9299
.message("success")
93-
.body(ResponseBody.create("", MediaType.parse(CoreConstants.MimeTypeNames.APPLICATION_JSON)))
94100
.code(HttpURLConnection.HTTP_CREATED)
95101
.header("location", "http://localhost")
96102
.build();
103+
OkHttpClient mockClient = getMockClient(response);
97104
UploadResult<TestDriveItem> result = responseHandler
98-
.handleResponse(response,TestDriveItem::createFromDiscriminatorValue);
105+
.handleResponse(mockClient.newCall(mock(Request.class)).execute()
106+
,TestDriveItem::createFromDiscriminatorValue);
99107
TestDriveItem item = result.itemResponse;
100108

101109
assertTrue(result.isUploadSuccessful());
102110
assertNull(item);
103111
assertEquals("http://localhost", result.location.toString());
104112
}
105113
@Test
106-
void getUploadSessionOnProgressingUpload() {
114+
void getUploadSessionOnProgressingUpload() throws IOException {
107115
registry.contentTypeAssociatedFactories.put(CoreConstants.MimeTypeNames.APPLICATION_JSON, new JsonParseNodeFactory());
108116

109117
UploadResponseHandler responseHandler = new UploadResponseHandler(null);
@@ -123,8 +131,9 @@ void getUploadSessionOnProgressingUpload() {
123131
.body(body)
124132
.code(HttpURLConnection.HTTP_ACCEPTED)
125133
.build();
134+
OkHttpClient mockHttpClient = getMockClient(response);
126135
UploadResult<TestDriveItem> result = responseHandler
127-
.handleResponse(response, TestDriveItem::createFromDiscriminatorValue);
136+
.handleResponse(mockHttpClient.newCall(mock(Request.class)).execute(), TestDriveItem::createFromDiscriminatorValue);
128137
UploadSession session = (UploadSession) result.uploadSession;
129138

130139
assertFalse(result.isUploadSuccessful());
@@ -137,7 +146,7 @@ void getUploadSessionOnProgressingUpload() {
137146
}
138147

139148
@Test
140-
void throwsServiceExceptionOnErrorResponse() {
149+
void throwsServiceExceptionOnErrorResponse() throws IOException {
141150
UploadResponseHandler responseHandler = new UploadResponseHandler(null);
142151
ResponseBody body = ResponseBody.create("{\n" +
143152
" \"error\": {\n"+
@@ -157,17 +166,18 @@ void throwsServiceExceptionOnErrorResponse() {
157166
.body(body)
158167
.code(HttpURLConnection.HTTP_UNAUTHORIZED)
159168
.build();
169+
OkHttpClient mockHttpClient = getMockClient(response);
160170

161171
try {
162172
responseHandler
163-
.handleResponse(response, TestDriveItem::createFromDiscriminatorValue);
173+
.handleResponse(mockHttpClient.newCall(mock(Request.class)).execute(), TestDriveItem::createFromDiscriminatorValue);
164174
} catch (ApiException ex) {
165175
Assertions.assertEquals(ErrorConstants.Codes.GENERAL_EXCEPTION, ex.getMessage());
166176
assertEquals(HttpURLConnection.HTTP_UNAUTHORIZED, ex.getResponseStatusCode());
167177
}
168178
}
169179
@Test
170-
void throwsSerializationErrorOnInvalidJson() {
180+
void throwsSerializationErrorOnInvalidJson() throws IOException {
171181
UploadResponseHandler responseHandler = new UploadResponseHandler(null);
172182
String malformedResponse =
173183
" \"error\": {\n"+
@@ -188,11 +198,31 @@ void throwsSerializationErrorOnInvalidJson() {
188198
.body(body)
189199
.code(HttpURLConnection.HTTP_UNAUTHORIZED)
190200
.build();
201+
OkHttpClient mockHttpClient = getMockClient(response);
191202
try {
192203
responseHandler
193-
.handleResponse(response, TestDriveItem::createFromDiscriminatorValue);
204+
.handleResponse(mockHttpClient.newCall(mock(Request.class)).execute(), TestDriveItem::createFromDiscriminatorValue);
194205
} catch (ApiException ex) {
195206
assertEquals(ErrorConstants.Codes.GENERAL_EXCEPTION, ex.getMessage());
196207
}
197208
}
209+
210+
public static OkHttpClient getMockClient(final Response response) throws IOException {
211+
final OkHttpClient mockClient = mock(OkHttpClient.class);
212+
final Call remoteCall = mock(Call.class);
213+
final Dispatcher dispatcher = new Dispatcher();
214+
when(remoteCall.execute()).thenReturn(response);
215+
doAnswer(
216+
(Answer<Void>)
217+
invocation -> {
218+
Callback callback = invocation.getArgument(0);
219+
callback.onResponse(null, response);
220+
return null;
221+
})
222+
.when(remoteCall)
223+
.enqueue(any(Callback.class));
224+
when(mockClient.dispatcher()).thenReturn(dispatcher);
225+
when(mockClient.newCall(any())).thenReturn(remoteCall);
226+
return mockClient;
227+
}
198228
}

0 commit comments

Comments
 (0)