@Override public Response<?> call() { return Response.error(500, ResponseBody.create(null, new byte[0])); } };
/** * Create a synthetic error response with an HTTP status code of {@code code} and {@code body} * as the error body. */ public static <T> Response<T> error(int code, ResponseBody body) { if (code < 400) throw new IllegalArgumentException("code < 400: " + code); return error(body, new okhttp3.Response.Builder() // .code(code) .message("Response.error()") .protocol(Protocol.HTTP_1_1) .request(new Request.Builder().url("http://localhost/").build()) .build()); }
private Response<T> tooManyRequestsError() { return Response.error(ERROR_CODE, ResponseBody.create(MediaType.parse("text/plain"), ERROR_MESSAGE)); } };
/** * Create a synthetic error response with an HTTP status code of {@code code} and {@code body} * as the error body. */ public static <T> Response<T> error(int code, ResponseBody body) { if (code < 400) throw new IllegalArgumentException("code < 400: " + code); return error(body, new okhttp3.Response.Builder() // .code(code) .message("Response.error()") .protocol(Protocol.HTTP_1_1) .request(new Request.Builder().url("http://localhost/").build()) .build()); }
return Response.error(bufferedBody, rawResponse); } finally { rawBody.close();
@Test public void loadRepositoriesCallsShowMessage_withUsernameNotFoundString() { String username = "ivacf"; HttpException mockHttpException = new HttpException(Response.error(404, mock(ResponseBody.class))); when(githubService.publicRepositories(username)) .thenReturn(Observable.<List<Repository>>error(mockHttpException)); mainPresenter.loadRepositories(username); verify(mainMvpView).showProgressIndicator(); verify(mainMvpView).showMessage(R.string.error_username_not_found); } }
return Response.error(bufferedBody, rawResponse); } finally { rawBody.close();
@Test public void shouldSearchInvalidUsername() { String username = "invalidUsername"; TextView textView = new TextView(application); textView.setText(username); HttpException mockHttpException = new HttpException(Response.error(404, mock(ResponseBody.class))); when(githubService.publicRepositories(username)) .thenReturn(Observable.<List<Repository>>error(mockHttpException)); mainViewModel.onSearchAction(textView, EditorInfo.IME_ACTION_SEARCH, null); verify(dataListener, never()).onRepositoriesChanged(anyListOf(Repository.class)); assertEquals(mainViewModel.infoMessage.get(), application.getString(R.string.error_username_not_found)); assertEquals(mainViewModel.infoMessageVisibility.get(), View.VISIBLE); assertEquals(mainViewModel.progressVisibility.get(), View.INVISIBLE); assertEquals(mainViewModel.recyclerViewVisibility.get(), View.INVISIBLE); }
@Test public void signInFailedWithRibotProfileNotFoundError() { //Stub mock data manager HttpException http403Exception = new HttpException(Response.error(403, ResponseBody.create(MediaType.parse("type"), ""))); stubDataManagerSignIn(Observable.error(http403Exception)); mSignInPresenter.signInWithGoogle(mAccount); //Check that the right methods are called verify(mMockSignInMvpView).showProgress(true); verify(mMockSignInMvpView).setSignInButtonEnabled(true); verify(mMockSignInMvpView).showProfileNotFoundError(mAccount.name); verify(mMockSignInMvpView).showProgress(false); verify(mMockSignInMvpView).setSignInButtonEnabled(false); }
@Test public void signInFailsWithProfileNotFound() { main.launchActivity(SignInActivity.getStartIntent(component.getContext(), false)); stubAccountPickerIntent(); // Stub with http 403 error HttpException http403Exception = new HttpException(Response.error(403, ResponseBody.create(MediaType.parse("type"), ""))); doReturn(Observable.error(http403Exception)) .when(component.getMockDataManager()) .signIn(mSelectedAccount); onView(withId(R.id.button_sign_in)) .perform(click()); allowPermissionsIfNeeded(); String expectedWelcome = main.getActivity() .getString(R.string.error_ribot_profile_not_found, mSelectedAccount.name); onView(withText(expectedWelcome)) .check(matches(isDisplayed())); }
@Test public void exceptionInConvertFallbackedTest() { final ResponseBody responseBody = mock(ResponseBody.class); when(responseBody.source()).thenThrow(new RuntimeException()); final LineMessagingException result = target.apply(Response.error(401, responseBody)); assertThat(result) .isInstanceOf(GeneralLineMessagingException.class); }
@Override public Object onIllegalMock(final AssertionError assertionError, final Metadata<Rx2Retrofit> metadata) { checkReturnMethodTypeIsSingleOrCompletable(metadata); final String errorMessage = assertionError.getMessage() != null ? assertionError.getMessage() : ""; final String adaptedErrorMessage = adaptErrorResponse(errorMessage, metadata); NetworkBehavior networkBehavior = networkBehaviour(metadata); final ResponseBody responseBody = ResponseBody .create(MediaType.parse("application/json"), adaptedErrorMessage); return callAdapter.adapt(metadata.getMethod(), networkBehavior, Calls.response(Response.error(404, responseBody))); }
@Override public Call onIllegalMock(AssertionError assertionError, Metadata<Retrofit> metadata) { checkReturnMethodTypeIsCall(metadata); String errorMessage = assertionError.getMessage() != null ? assertionError.getMessage() : ""; String safeErrorMessage = adaptErrorResponse(errorMessage, metadata); ResponseBody responseBody = ResponseBody .create(MediaType.parse("application/json"), safeErrorMessage); NetworkBehavior networkBehavior = networkBehaviour(metadata); return callAdapter.adapt(metadata.getMethod(), networkBehavior, Calls.response(Response.error(404, responseBody))); }
@Test public void convertTest() { final ResponseBody responseBody = ResponseBody.create(MediaType.parse("application/json"), "{}"); final LineMessagingException result = target.apply(Response.error(401, responseBody)); assertThat(result) .isInstanceOf(UnauthorizedException.class); }
@Test public void convertUnknownExceptionTest() { final ResponseBody responseBody = ResponseBody.create(MediaType.parse("application/json"), "{}"); final LineMessagingException result = target.apply(Response.error(999, responseBody)); assertThat(result) .isInstanceOf(GeneralLineMessagingException.class); }
@Test public void onResponseFailTest() throws Exception { Response<ResponseBody> response = Response.error(401, ResponseBody.create(MediaType.parse("text/javascript"), "{}")); // Do target.onResponse(call, response); // Verify assertThat(target).isCompletedExceptionally(); final Throwable t = target.handle((ignored, e) -> e).get(); assertThat(t).isInstanceOf(UnauthorizedException.class); }
@Test public void onResponseWithErrorTest() throws Exception { Response<Object> response = Response.error(400, ResponseBody.create(parse("application/json"), "{}")); // Do target.onResponse(call, response); // Verify assertThat(target).isCompletedExceptionally(); }
@Test(expected = ConversionError.class) public void testConvertNetworkFailure() throws IOException { Alternative selected = new Alternative("green"); Call<ConvertResponse> mockCall = mock(Call.class); when(mockCall.execute()).thenReturn(retrofit2.Response.<ConvertResponse>error(404, ResponseBody.create(MediaType.parse("application/json"), "{}"))); when(mockApi.convert(Matchers.<Experiment>anyObject(), Matchers.anyString())).thenReturn(mockCall); Sixpack sixpack = new Sixpack(mockApi); Experiment experiment = new Experiment(sixpack, "test-experience", new HashSet<Alternative>(), null, 1.0d); ParticipatingExperiment participating = new ParticipatingExperiment(sixpack, experiment, selected); sixpack.convert(participating, "test_kpi"); }
@Test public void When_Call_Validate_With_Single_Response_Error_Then_Throw_Assertion_Error() throws NoSuchMethodException { Method method = Providers.class.getDeclaredMethod("single"); Rx2Retrofit annotation = PlaceholderRetrofitAnnotation.class.getAnnotation(Rx2Retrofit.class); Metadata<Rx2Retrofit> metadata = new Metadata(Providers.class, method, null, annotation, method.getGenericReturnType()); ResponseBody responseBody = ResponseBody .create(MediaType.parse("application/json"), "BOOM!"); Response<Mock> response = Response.error(404, responseBody); exception.expect(AssertionError.class); rx2RetrofitInterceptor.validate(Single.just(response), metadata); }
@Test public void When_Call_Validate_With_Call_Error_Then_Throw_Assertion() { final ResponseBody responseBody = ResponseBody .create(MediaType.parse("application/json"), "BOOM!"); exception.expect(AssertionError.class); retrofitInterceptor.validate( Calls.response(Response.error(404, responseBody)), metadataRetrofit()); }