Java源码示例:retrofit2.mock.Calls

示例1
@Test
public void test_enter_exit_action() throws Exception {
    ResolveResponse resolveResponse = gson
            .fromJson(Utils.getRawResourceAsString(com.sensorberg.sdk.test.R.raw.resolve_response_enter_exit_action, InstrumentationRegistry
                    .getContext()), ResolveResponse.class);
    Mockito.when(mockRetrofitApiService.getBeacon(Mockito.anyString(), Mockito.anyString(), Matchers.<TreeMap<String, String>>any()))
            .thenReturn(Calls.response(resolveResponse));

    ResolverListener testListener = new ResolverListener() {
        @Override
        public void onResolutionFailed(Throwable cause, ScanEvent scanEvent) {
            Assert.fail(cause.getMessage());
        }

        @Override
        public void onResolutionsFinished(List<BeaconEvent> events) {
            Assertions.assertThat(events).hasSize(1);
        }
    };

    tested.setListener(testListener);
    tested.resolve(TestConstants.RESOLVABLE_ENTRY_EVENT_WITH_ID_3);
}
 
示例2
@Test
public void testRequestGuestAuthToken_guestFailure() {

    service.api = new MockOAuth2Api() {
        @Override
        public Call<GuestTokenResponse> getGuestToken(@Header(OAuthConstants.HEADER_AUTHORIZATION) String auth) {
            return Calls.failure(new IOException());
        }
    };

    service.requestGuestAuthToken(new Callback<GuestAuthToken>() {
        @Override
        public void success(Result<GuestAuthToken> result) {
            fail();
        }

        @Override
        public void failure(TwitterException error) {
            assertNotNull(error);
        }
    });
}
 
示例3
@Test
public void testRequestGuestAuthToken_appAuthFailure() {

    service.api = new MockOAuth2Api() {
        @Override
        public Call<OAuth2Token> getAppAuthToken(@Header(OAuthConstants.HEADER_AUTHORIZATION) String auth,
                @Field(OAuthConstants.PARAM_GRANT_TYPE) String grantType) {
            return Calls.failure(new IOException());
        }
    };

    service.requestGuestAuthToken(new Callback<GuestAuthToken>() {
        @Override
        public void success(Result<GuestAuthToken> result) {
            fail();
        }

        @Override
        public void failure(TwitterException error) {
            assertNotNull(error);
        }
    });
}
 
示例4
@Test
public void testRequestEmail_withSuccess() {
    final User user = new UserBuilder().setEmail(TEST_EMAIL).build();
    final Call<User> call = Calls.response(user);
    setupMockAccountService(call);

    authClient.requestEmail(mock(TwitterSession.class), new Callback<String>() {
        @Override
        public void success(Result<String> result) {
            assertEquals(TEST_EMAIL, result.data);
        }

        @Override
        public void failure(TwitterException exception) {
            fail("Expected Callback#success to be called");
        }
    });
}
 
示例5
@Test
public void testRequestEmail_withFailure() {
    final IOException networkException = new IOException("Network failure");
    final Call<User> call = Calls.failure(networkException);
    setupMockAccountService(call);

    authClient.requestEmail(mock(TwitterSession.class), new Callback<String>() {
        @Override
        public void success(Result<String> result) {
            fail("Expected Callback#failure to be called");
        }

        @Override
        public void failure(TwitterException exception) {
            assertEquals(exception.getCause(), networkException);
        }
    });
}
 
示例6
@Before
public void setUp() throws Exception {
    context = RuntimeEnvironment.application;
    mockMediaService = mock(MediaService.class);
    mockStatusesService = mock(StatusesService.class);
    tweet =  new TweetBuilder().setId(123L).setText(EXPECTED_TWEET_TEXT).build();
    when(mockMediaService
            .upload(any(RequestBody.class), any(RequestBody.class), any(RequestBody.class)))
            .thenReturn(mock(Call.class));
    when(mockStatusesService.update(anyString(), isNull(Long.class), isNull(Boolean.class),
            isNull(Double.class), isNull(Double.class), isNull(String.class),
            isNull(Boolean.class), eq(true), isNull(String.class)))
            .thenReturn(Calls.response(tweet));

    mockTwitterApiClient = mock(TwitterApiClient.class);
    when(mockTwitterApiClient.getStatusesService()).thenReturn(mockStatusesService);
    when(mockTwitterApiClient.getMediaService()).thenReturn(mockMediaService);

    mockDependencyProvider = mock(TweetUploadService.DependencyProvider.class);
    when(mockDependencyProvider.getTwitterApiClient(any(TwitterSession.class)))
            .thenReturn(mockTwitterApiClient);

    service = spy(Robolectric.buildService(TweetUploadService.class).create().get());
    service.dependencyProvider = mockDependencyProvider;
}
 
示例7
@Test
public void testUploadTweet_withNoMediaFailure() {
    when(mockStatusesService.update(anyString(), isNull(Long.class), isNull(Boolean.class),
            isNull(Double.class), isNull(Double.class), isNull(String.class),
            isNull(Boolean.class), eq(true), isNull(String.class)))
            .thenReturn(Calls.failure(new IOException("")));

    service.uploadTweet(mock(TwitterSession.class), EXPECTED_TWEET_TEXT, null);

    verify(mockStatusesService).update(eq(EXPECTED_TWEET_TEXT), isNull(Long.class),
            isNull(Boolean.class), isNull(Double.class), isNull(Double.class),
            isNull(String.class), isNull(Boolean.class), eq(true), isNull(String.class));
    verifyZeroInteractions(mockMediaService);
    verify(service).fail(any(TwitterException.class));
    verify(service).stopSelf();
}
 
示例8
@Override
public Observable<AuthToken> refreshAuthToken(@Body RefreshReqBody credentials) {
    if (credentials.refreshToken.equals("refresh-token")) {
        AuthToken token = new AuthToken();
        token.setAccessToken("refreshed-access-token");
        // token.setRefreshToken("refresh-token");      // refreshed tokens don't have a new refresh token
        token.setCreatedAt(System.currentTimeMillis());
        token.setExpiresIn(60 * 1000);
        return mDelegate
                .returningResponse(token)
                .refreshAuthToken(credentials);
    } else {
        // expired / invalid refresh token
        ResponseBody body = ResponseBody.create(MediaType.parse("application/json"),
                "{\"errors\":[{\"message\":\"Expired or invalid refresh token\",\"errorType\":\"UnauthorizedError\"}]}");
        Response<Object> res = Response.error(401, body);
        return mDelegate
                .returning(Calls.response(res))
                .refreshAuthToken(credentials);
    }
}
 
示例9
@Override
public Call<QuoteOfTheDayResponse> getQuoteOfTheDay() {
    za.co.riggaroo.retrofittestexample.pojo.Error error = new Error();
    error.setCode(404);
    error.setMessage("Quote Not Found");
    QuoteOfTheDayErrorResponse quoteOfTheDayErrorResponse = new QuoteOfTheDayErrorResponse();
    quoteOfTheDayErrorResponse.setError(error);

    ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
    String json = "";
    try {
        json = ow.writeValueAsString(quoteOfTheDayErrorResponse);
        Response response = Response.error(404, ResponseBody.create(MediaType.parse("application/json") ,json));
        return delegate.returning(Calls.response(response)).getQuoteOfTheDay();
       // return delegate.returningResponse(response).getQuoteOfTheDay();
    } catch (JsonProcessingException e) {
        Log.e(TAG, "JSON Processing exception:",e);
        return Calls.failure(e);
    }

}
 
示例10
@Test
public void callback_with_retry_should_retry_3_times() throws Exception {
    Call<SettingsResponse> exceptionResponse = Calls.failure(new UnsupportedEncodingException());
    Mockito.when(mockRetrofitApiService.getSettings()).thenReturn(exceptionResponse);
    Call<SettingsResponse> call = mockRetrofitApiService.getSettings();
    Callback<SettingsResponse> mockedOriginalCallback = Mockito.spy(Callback.class);
    CallbackWithRetry<SettingsResponse> retryCallback = new CallbackWithRetry<>(mockedOriginalCallback);
    CallbackWithRetry<SettingsResponse> spiedRetryCallback = Mockito.spy(retryCallback);

    call.enqueue(spiedRetryCallback);

    Mockito.verify(mockedOriginalCallback, times(1)).onFailure(any(Call.class), any(Exception.class));
    Mockito.verify(mockedOriginalCallback, times(0)).onResponse(any(Call.class), any(Response.class));
    Mockito.verify(spiedRetryCallback, times(3)).onFailure(any(Call.class), any(Exception.class));
    Mockito.verify(spiedRetryCallback, times(0)).onResponse(any(Call.class), any(Response.class));
}
 
示例11
@Test
public void test_failures() throws Exception {
    Call<SettingsResponse> exceptionResponse = Calls.failure(new UnsupportedEncodingException());
    Mockito.when(mockRetrofitApiService.getSettings()).thenReturn(exceptionResponse);

    tested.loadSettings(new TransportSettingsCallback() {
        @Override
        public void nothingChanged() {
            Assert.fail();
        }

        @Override
        public void onFailure(Exception e) {
            Assert.assertNotNull(e);
        }

        @Override
        public void onSettingsFound(SettingsResponse settings) {
            Assert.fail();
        }
    });
}
 
示例12
@Test
    public void test_a_beacon_request() throws Exception {
        ResolveResponse response = gson.fromJson(
                Utils.getRawResourceAsString(com.sensorberg.sdk.test.R.raw.resolve_response_005, InstrumentationRegistry.getContext()),
                ResolveResponse.class);
        Mockito.when(mockRetrofitApiService.getBeacon(anyString(), anyString(), Matchers.<TreeMap<String, String>>any())).thenReturn(Calls.response(response));

        Assertions.assertThat(response).isNotNull();
        tested.getBeacon(TestConstants.BEACON_SCAN_ENTRY_EVENT(clock.now()), null, new BeaconResponseHandler() {
            @Override
            public void onSuccess(List<BeaconEvent> foundBeaconEvents) {
                Assertions
                        .assertThat(foundBeaconEvents)
//                        .overridingErrorMessage("There should be 1 action to the Beacon %s at %s there were %d",
//                                TestConstants.BEACON_SCAN_ENTRY_EVENT(clock.now()).getBeaconId().toTraditionalString(),
//                                foundBeaconEvents.size())
                        .isNotNull()
                        .hasSize(1);
            }

            @Override
            public void onFailure(Throwable cause) {
                Assert.fail("there was a failure with this request");
            }
        });
    }
 
示例13
@Test
public void test_a_settings_request() {
    Mockito.when(mockRetrofitApiService.getSettings()).thenReturn(Calls.response(new SettingsResponse(0, new Settings())));

    tested.loadSettings(new TransportSettingsCallback() {
        @Override
        public void nothingChanged() {
            Assert.fail("there should be changes to no settings");
        }

        @Override
        public void onFailure(Exception e) {
            Assert.fail();
        }

        @Override
        public void onSettingsFound(SettingsResponse settings) {
            Assertions.assertThat(settings).isNotNull();
        }
    });
}
 
示例14
@Test
public void test_resolve_in_app_function() throws Exception {
    ResolveResponse resolveResponse = gson
            .fromJson(Utils.getRawResourceAsString(com.sensorberg.sdk.test.R.raw.resolve_response_inapp_action, InstrumentationRegistry
                    .getContext()), ResolveResponse.class);
    Mockito.when(mockRetrofitApiService.getBeacon(Mockito.anyString(), Mockito.anyString(), Matchers.<TreeMap<String, String>>any()))
            .thenReturn(Calls.response(resolveResponse));

    ResolverListener mockListener = new ResolverListener() {
        @Override
        public void onResolutionFailed(Throwable cause, ScanEvent scanEvent) {
            Assert.fail(cause.getMessage());
        }

        @Override
        public void onResolutionsFinished(List<BeaconEvent> events) {
            Assertions.assertThat(events).hasSize(3);
        }

    };

    tested.setListener(mockListener);
    tested.resolve(TestConstants.RESOLVABLE_ENTRY_EVENT_WITH_INAPP_ACTIONS);
}
 
示例15
@Override public Observable onLegalMock(final Object mock, final Metadata<RxRetrofit> metadata) {
  checkReturnMethodTypeIsObservable(metadata);
  checkTypeMockIsNotObservableNeitherResponse(metadata, mock);

  NetworkBehavior networkBehavior = networkBehaviour(metadata);
  return callAdapter.adapt(metadata.getMethod(),
      networkBehavior, Calls.response(mock));
}
 
示例16
@Override public Observable onIllegalMock(final AssertionError assertionError, final Metadata<RxRetrofit> metadata) {
  checkReturnMethodTypeIsObservable(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)));
}
 
示例17
@Override public Object onLegalMock(final Object mock, final Metadata<Rx2Retrofit> metadata) {
  checkReturnMethodTypeIsSingleOrCompletable(metadata);
  checkTypeMockIsNotSingleNeitherResponse(metadata, mock);

  NetworkBehavior networkBehavior = networkBehaviour(metadata);
  return callAdapter.adapt(metadata.getMethod(),
      networkBehavior, Calls.response(mock));
}
 
示例18
@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)));
}
 
示例19
@Override public Call onLegalMock(Object mock, Metadata<Retrofit> metadata) {
  checkReturnMethodTypeIsCall(metadata);
  checkTypeMockIsNotCall(metadata, mock);

  NetworkBehavior networkBehavior = networkBehaviour(metadata);
  return callAdapter.adapt(metadata.getMethod(),
      networkBehavior, Calls.response(mock));
}
 
示例20
@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)));
}
 
示例21
@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());
}
 
示例22
@Test
public void testVerifySession_catchesRetrofitExceptionsAndFinishesVerification() {
    doReturn(Calls.failure(new IOException()))
            .when(mockAccountService).verifyCredentials(true, false, false);

    verifier.verifySession(session);

    verify(mockAccountService).verifyCredentials(true, false, false);
    // success, we caught the exception
}
 
示例23
@Override
public Observable<AuthToken> getAuthToken(@Body AuthReqBody credentials) {
    if ((mUseGhostAuth && credentials.authorizationCode.equals("auth-code"))
            || (!mUseGhostAuth && credentials.password.equals("password"))) {
        AuthToken token = new AuthToken();
        token.setAccessToken("access-token");
        token.setRefreshToken("refresh-token");
        token.setCreatedAt(System.currentTimeMillis());
        token.setExpiresIn(60 * 1000);
        return mDelegate
                .returningResponse(token)
                .getAuthToken(credentials);
    } else {
        // wrong Ghost auth code or password
        // Mock Retrofit doesn't set the correct request URL, it sets just http://localhost
        String tokenUrl = "http://localhost/authentication/token/";
        ResponseBody body = ResponseBody.create(MediaType.parse("application/json"),
                "{\"errors\":[{\"message\":\"Your password is incorrect.\",\"context\":\"Your password is incorrect.\",\"errorType\":\"ValidationError\"}]}");
        final okhttp3.Response rawResponse = new okhttp3.Response.Builder()
                .protocol(Protocol.HTTP_1_1)
                .request(new Request.Builder().url(tokenUrl).build())
                .code(HttpURLConnection.HTTP_UNAUTHORIZED).message("Unauthorized")
                .body(body)
                .build();
        final Response<Object> res = Response.error(body, rawResponse);
        return mDelegate
                .returning(Calls.response(res))
                .getAuthToken(credentials);
    }
}
 
示例24
@Test
public void whenProfileObserved_withGetAccountError_emitsError() {
    final IOException exception = new IOException();
    when(userService.getAccount(ProfileValues.USERNAME)).thenReturn(Calls.<Account>failure(exception));
    createAndObserveInteractor();
    verify(profileObserver).onError(exception);
}
 
示例25
@NonNull
private Account configureBareMockAccount() {
    final Account account = mock(Account.class);
    when(account.getUsername()).thenReturn(ProfileValues.USERNAME);
    when(account.getProfileImage()).thenReturn(mock(ProfileImage.class));
    when(userService.getAccount(ProfileValues.USERNAME)).thenReturn(Calls.response(account));
    return account;
}
 
示例26
@Test
    public void test_an_instant_action_workflow() throws Exception {
        //enqueue the layout with a beacon for report immediately
        Mockito.when(mockRetrofitApiService.getBeacon( Mockito.anyString(), Mockito.anyString(), Matchers.<TreeMap<String, String>>any()))
                .thenReturn(Calls.response(RESOLVE_RESPONSE_WITH_REPORT_IMMEDIATELY));

        //enqueue the reporting result
        Mockito.when(mockRetrofitApiService.publishHistory(Mockito.any(HistoryBody.class)))
                .thenReturn(Calls.response(PUBLISH_HISTORY_RESPONSE));

        System.out.println("TheInternalBootstrapperIntegration start test_an_instant_action_workflow");

        //simulate the entry
        spiedInternalApplicationBootstrapper.onScanEventDetected(new ScanEvent.Builder()
                .withBeaconId(TestConstants.ANY_BEACON_ID)
                .withEntry(true)
                .build());

        //we should have exactly one notification
        Mockito.verify(spiedTransportWithMockService, Mockito.timeout(5000).times(1))
                .getBeacon(Mockito.any(ScanEvent.class), Matchers.<TreeMap<String, String>>any(), Mockito.any(BeaconResponseHandler.class));

        //TODO this does get called in real code and during debugging, but Mockito says it doesn't
//        Mockito.verify(spiedTransportWithMockService, Mockito.timeout(5000).times(1))
//                .publishHistory(Mockito.anyList(), Mockito.anyList(), Mockito.any(TransportHistoryCallback.class));
//        Mockito.verify(spiedInternalApplicationBootstrapper, Mockito.timeout(5000).times(1))
//                .presentBeaconEvent(Mockito.any(BeaconEvent.class));

        System.out.println("TheInternalBootstrapperIntegration end");
    }
 
示例27
@Test
    public void test_precaching() {
        try {
            ResolveResponse updateLayoutResponse = gson
                    .fromJson(Utils.getRawResourceAsString(com.sensorberg.sdk.test.R.raw.response_resolve_precaching,
                            InstrumentationRegistry.getContext()), ResolveResponse.class);
            Mockito.when(mockRetrofitApiService.updateBeaconLayout(Matchers.<TreeMap<String, String>>any())).thenReturn(Calls.response(updateLayoutResponse));

            ResolveResponse getBeaconResponse = gson.fromJson(Utils.getRawResourceAsString(com.sensorberg.sdk.test.R.raw.response_resolve_precaching,
                    InstrumentationRegistry.getContext()), ResolveResponse.class);
            Mockito.when(mockRetrofitApiService.getBeacon(Mockito.anyString(), Mockito.anyString(), Matchers.<TreeMap<String, String>>any()))
                    .thenReturn(Calls.response(getBeaconResponse));
        } catch (Exception e) {
            Assertions.fail(e.toString());
        }

        System.out.println("TheInternalBootstrapperIntegration start test_precaching");
        spiedInternalApplicationBootstrapper.updateBeaconLayout();

        //simulate the entry
        spiedInternalApplicationBootstrapper.onScanEventDetected(TestConstants.BEACON_SCAN_ENTRY_EVENT(0));

        Mockito.verify(spiedTransportWithMockService, Mockito.timeout(5000).times(1))
                .getBeacon(Mockito.any(ScanEvent.class), Matchers.<TreeMap<String, String>>any(), Mockito.any(BeaconResponseHandler.class));
        Mockito.verify(spiedTransportWithMockService, Mockito.timeout(5000).times(1))
                .updateBeaconLayout(Matchers.<TreeMap<String, String>>any());

        //TODO this does get called in real code and during debugging, but Mockito says it doesn't
//        Mockito.verify(spiedInternalApplicationBootstrapper, Mockito.timeout(5000).times(1))
//                .presentBeaconEvent(Mockito.any(BeaconEvent.class));
    }
 
示例28
@Test
public void test_should_forward_the_layout_upload_interval_to_the_settings() throws Exception {
    BeaconHistoryUploadIntervalListener mockListener = mock(BeaconHistoryUploadIntervalListener.class);
    tested.setBeaconHistoryUploadIntervalListener(mockListener);

    ResolveResponse resolveResponse = new ResolveResponse.Builder().withReportTrigger(1337).build();
    Mockito.when(mockRetrofitApiService.getBeacon(anyString(), anyString(), Matchers.<TreeMap<String, String>>any()))
            .thenReturn(Calls.response(resolveResponse));

    tested.getBeacon(TestConstants.BEACON_SCAN_ENTRY_EVENT(clock.now()), null, BeaconResponseHandler.NONE);
    Mockito.verify(mockListener).historyUploadIntervalChanged(1337L * 1000);
}
 
示例29
@Test
public void transport_settings_call_should_call_enqueue_with_retry() throws Exception {
    Mockito.when(mockRetrofitApiService.getSettings()).thenReturn(Calls.response(new SettingsResponse(0, new Settings())));
    TransportSettingsCallback transportSettingsCallback = mock(TransportSettingsCallback.class);
    RetrofitApiTransport spiedTransport = (RetrofitApiTransport) Mockito.spy(tested);

    spiedTransport.loadSettings(transportSettingsCallback);
    Mockito.verify(spiedTransport, times(1)).enqueueWithRetry(any(Call.class), any(retrofit2.Callback.class));
}
 
示例30
@Test
public void test_parsing_settings_from_network_response() throws Exception {
    SettingsResponse settingsResponse = gson.fromJson(
            Utils.getRawResourceAsString(com.sensorberg.sdk.test.R.raw.response_settings_newdefaults, InstrumentationRegistry
                    .getContext()), SettingsResponse.class);
    Mockito.when(mockRetrofitApiService.getSettings()).thenReturn(Calls.response(settingsResponse));

    Assertions.assertThat(settingsResponse).isNotNull();
    Assertions.assertThat(settingsResponse.getRevision()).isEqualTo(1L);
    Assertions.assertThat(settingsResponse.getSettings().getBackgroundWaitTime()).isEqualTo(100000L);
    Assertions.assertThat(settingsResponse.getSettings().getBeaconReportLevel()).isEqualTo(1);
    Assertions.assertThat(settingsResponse.getSettings().getScannerMinRssi()).isEqualTo(-10);
    Assertions.assertThat(settingsResponse.getSettings().getScannerMaxDistance()).isEqualTo(5);
}