1111import okhttp3 .*;
1212import org .junit .jupiter .api .Assertions ;
1313import org .junit .jupiter .api .Test ;
14+ import org .mockito .stubbing .Answer ;
1415
1516import static org .junit .jupiter .api .Assertions .*;
17+ import static org .mockito .ArgumentMatchers .any ;
18+ import static org .mockito .Mockito .doAnswer ;
1619import static org .mockito .Mockito .mock ;
20+ import static org .mockito .Mockito .when ;
1721import static com .microsoft .kiota .serialization .ParseNodeFactoryRegistry .defaultInstance ;
1822
23+ import java .io .IOException ;
1924import java .net .HttpURLConnection ;
2025import 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