|
9 | 9 |
|
10 | 10 | import com.microsoft.graph.core.GraphErrorCodes; |
11 | 11 | import com.microsoft.graph.core.IBaseClient; |
| 12 | +import com.microsoft.graph.httpcore.middlewareoption.IShouldRedirect; |
| 13 | +import com.microsoft.graph.httpcore.middlewareoption.IShouldRetry; |
| 14 | +import com.microsoft.graph.httpcore.middlewareoption.RedirectOptions; |
| 15 | +import com.microsoft.graph.httpcore.middlewareoption.RetryOptions; |
12 | 16 | import com.microsoft.graph.logger.ILogger; |
13 | 17 | import com.microsoft.graph.logger.LoggerLevel; |
14 | 18 | import com.microsoft.graph.options.HeaderOption; |
|
21 | 25 | import java.io.ByteArrayInputStream; |
22 | 26 | import java.io.IOException; |
23 | 27 | import java.io.InputStream; |
| 28 | +import java.net.MalformedURLException; |
24 | 29 | import java.net.URL; |
25 | 30 | import java.nio.charset.StandardCharsets; |
26 | 31 | import java.util.ArrayList; |
|
37 | 42 |
|
38 | 43 | import static org.junit.jupiter.api.Assertions.assertEquals; |
39 | 44 | import static org.junit.jupiter.api.Assertions.assertFalse; |
| 45 | +import static org.junit.jupiter.api.Assertions.assertNotNull; |
40 | 46 | import static org.junit.jupiter.api.Assertions.assertNull; |
41 | 47 | import static org.junit.jupiter.api.Assertions.assertTrue; |
42 | 48 | import static org.junit.jupiter.api.Assertions.fail; |
@@ -198,5 +204,88 @@ private void setCoreHttpProvider(final Object toSerialize) throws IOException { |
198 | 204 | mock(ILogger.class), |
199 | 205 | mClient); |
200 | 206 | } |
| 207 | + @Test |
| 208 | + public void getHttpRequestDoesntSetRetryOrRedirectOptionsOnDefaultValues() throws MalformedURLException { |
| 209 | + final IHttpRequest absRequest = mock(IHttpRequest.class); |
| 210 | + when(absRequest.getRequestUrl()).thenReturn(new URL("https://graph.microsoft.com/v1.0/me")); |
| 211 | + when(absRequest.getHttpMethod()).thenReturn(HttpMethod.GET); |
| 212 | + final ISerializer serializer = mock(ISerializer.class); |
| 213 | + final ILogger logger = mock(ILogger.class); |
| 214 | + |
| 215 | + mProvider = new CoreHttpProvider(serializer, |
| 216 | + logger, |
| 217 | + new OkHttpClient.Builder().build()); |
| 218 | + |
| 219 | + when(absRequest.getMaxRedirects()).thenReturn(RedirectOptions.DEFAULT_MAX_REDIRECTS); |
| 220 | + when(absRequest.getShouldRedirect()).thenReturn(RedirectOptions.DEFAULT_SHOULD_REDIRECT); |
| 221 | + Request request = mProvider.getHttpRequest(absRequest, String.class, null); |
| 222 | + RedirectOptions redirectOptions = request.tag(RedirectOptions.class); |
| 223 | + |
| 224 | + assertNull(redirectOptions); |
| 225 | + |
| 226 | + when(absRequest.getShouldRetry()).thenReturn(RetryOptions.DEFAULT_SHOULD_RETRY); |
| 227 | + when(absRequest.getMaxRetries()).thenReturn(RetryOptions.DEFAULT_MAX_RETRIES); |
| 228 | + when(absRequest.getDelay()).thenReturn(RetryOptions.DEFAULT_DELAY); |
| 229 | + |
| 230 | + request = mProvider.getHttpRequest(absRequest, String.class, null); |
| 231 | + RetryOptions retryOptions = request.tag(RetryOptions.class); |
| 232 | + |
| 233 | + assertNull(retryOptions); |
| 234 | + } |
| 235 | + |
| 236 | + @Test |
| 237 | + public void getHttpRequestSetsRetryOrRedirectOptionsOnNonDefaultValues() throws MalformedURLException { |
| 238 | + final IHttpRequest absRequest = mock(IHttpRequest.class); |
| 239 | + when(absRequest.getRequestUrl()).thenReturn(new URL("https://graph.microsoft.com/v1.0/me")); |
| 240 | + when(absRequest.getHttpMethod()).thenReturn(HttpMethod.GET); |
| 241 | + final ISerializer serializer = mock(ISerializer.class); |
| 242 | + final ILogger logger = mock(ILogger.class); |
201 | 243 |
|
| 244 | + mProvider = new CoreHttpProvider(serializer, |
| 245 | + logger, |
| 246 | + new OkHttpClient.Builder().build()); |
| 247 | + |
| 248 | + // testing all pairs to cover all branches |
| 249 | + when(absRequest.getMaxRedirects()).thenReturn(RedirectOptions.DEFAULT_MAX_REDIRECTS -1); |
| 250 | + when(absRequest.getShouldRedirect()).thenReturn(mock(IShouldRedirect.class)); |
| 251 | + Request request = mProvider.getHttpRequest(absRequest, String.class, null); |
| 252 | + RedirectOptions redirectOptions = request.tag(RedirectOptions.class); |
| 253 | + |
| 254 | + assertNotNull(redirectOptions); |
| 255 | + |
| 256 | + when(absRequest.getMaxRedirects()).thenReturn(RedirectOptions.DEFAULT_MAX_REDIRECTS); |
| 257 | + when(absRequest.getShouldRedirect()).thenReturn(mock(IShouldRedirect.class)); |
| 258 | + request = mProvider.getHttpRequest(absRequest, String.class, null); |
| 259 | + redirectOptions = request.tag(RedirectOptions.class); |
| 260 | + |
| 261 | + assertNotNull(redirectOptions); |
| 262 | + |
| 263 | + // testing all pairs to cover all branches |
| 264 | + when(absRequest.getShouldRetry()).thenReturn(mock(IShouldRetry.class)); |
| 265 | + when(absRequest.getMaxRetries()).thenReturn(RetryOptions.DEFAULT_MAX_RETRIES-1); |
| 266 | + when(absRequest.getDelay()).thenReturn(RetryOptions.DEFAULT_DELAY-1); |
| 267 | + |
| 268 | + request = mProvider.getHttpRequest(absRequest, String.class, null); |
| 269 | + RetryOptions retryOptions = request.tag(RetryOptions.class); |
| 270 | + |
| 271 | + assertNotNull(retryOptions); |
| 272 | + |
| 273 | + when(absRequest.getShouldRetry()).thenReturn(mock(IShouldRetry.class)); |
| 274 | + when(absRequest.getMaxRetries()).thenReturn(RetryOptions.DEFAULT_MAX_RETRIES); |
| 275 | + when(absRequest.getDelay()).thenReturn(RetryOptions.DEFAULT_DELAY-1); |
| 276 | + |
| 277 | + request = mProvider.getHttpRequest(absRequest, String.class, null); |
| 278 | + retryOptions = request.tag(RetryOptions.class); |
| 279 | + |
| 280 | + assertNotNull(retryOptions); |
| 281 | + |
| 282 | + when(absRequest.getShouldRetry()).thenReturn(mock(IShouldRetry.class)); |
| 283 | + when(absRequest.getMaxRetries()).thenReturn(RetryOptions.DEFAULT_MAX_RETRIES); |
| 284 | + when(absRequest.getDelay()).thenReturn(RetryOptions.DEFAULT_DELAY); |
| 285 | + |
| 286 | + request = mProvider.getHttpRequest(absRequest, String.class, null); |
| 287 | + retryOptions = request.tag(RetryOptions.class); |
| 288 | + |
| 289 | + assertNotNull(retryOptions); |
| 290 | + } |
202 | 291 | } |
0 commit comments