Skip to content

Commit ba0d5fd

Browse files
committed
- adds unit test on getHttpReqest method to test for default retry and redirect behavior
1 parent 804f36b commit ba0d5fd

File tree

1 file changed

+89
-0
lines changed

1 file changed

+89
-0
lines changed

src/test/java/com/microsoft/graph/http/CoreHttpProviderTests.java

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@
99

1010
import com.microsoft.graph.core.GraphErrorCodes;
1111
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;
1216
import com.microsoft.graph.logger.ILogger;
1317
import com.microsoft.graph.logger.LoggerLevel;
1418
import com.microsoft.graph.options.HeaderOption;
@@ -21,6 +25,7 @@
2125
import java.io.ByteArrayInputStream;
2226
import java.io.IOException;
2327
import java.io.InputStream;
28+
import java.net.MalformedURLException;
2429
import java.net.URL;
2530
import java.nio.charset.StandardCharsets;
2631
import java.util.ArrayList;
@@ -37,6 +42,7 @@
3742

3843
import static org.junit.jupiter.api.Assertions.assertEquals;
3944
import static org.junit.jupiter.api.Assertions.assertFalse;
45+
import static org.junit.jupiter.api.Assertions.assertNotNull;
4046
import static org.junit.jupiter.api.Assertions.assertNull;
4147
import static org.junit.jupiter.api.Assertions.assertTrue;
4248
import static org.junit.jupiter.api.Assertions.fail;
@@ -198,5 +204,88 @@ private void setCoreHttpProvider(final Object toSerialize) throws IOException {
198204
mock(ILogger.class),
199205
mClient);
200206
}
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);
201243

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+
}
202291
}

0 commit comments

Comments
 (0)