public void TestShouldRetry() { DfaErrorHandler errorHandler = null; // Should not retry if RetryCount == 0 errorHandler = new DfaErrorHandler(adRemoteService); user.Config.RetryCount = 0; Assert.IsFalse(errorHandler.ShouldRetry(new DfaCredentialsExpiredException(USER_TOKEN))); // Should not retry if exception is not DfaCredentialsExpiredException. errorHandler = new DfaErrorHandler(adRemoteService); user.Config.RetryCount = 1; Assert.IsFalse(errorHandler.ShouldRetry(new ArgumentNullException())); // Should retry if exception is DfaCredentialsExpiredException and // RetryCount > 0 errorHandler = new DfaErrorHandler(adRemoteService); user.Config.RetryCount = 1; Assert.IsTrue(errorHandler.ShouldRetry(new DfaCredentialsExpiredException(USER_TOKEN))); }
public void TestPrepareForRetry() { LoginUtil.Cache.AddToken(USER_NAME, USER_TOKEN); (user.Config as DfaAppConfig).DfaAuthToken = PASSWORD; adRemoteService.Token = USER_TOKEN; user.Config.RetryCount = 1; // PrepareForRetry should reset all relevant values when presented with // correct values. DfaErrorHandler errorHandler = new DfaErrorHandler(adRemoteService); errorHandler.PrepareForRetry(new DfaCredentialsExpiredException(USER_TOKEN)); Assert.IsNull(LoginUtil.Cache.GetToken(USER_NAME)); Assert.IsNull(adRemoteService.Token); Assert.IsNull((user.Config as DfaAppConfig).DfaAuthToken); // Indirectly test retryCount. This should become 1 after // PrepareForRetry() and another attempt to retry should fail. Assert.IsFalse(errorHandler.ShouldRetry(new DfaCredentialsExpiredException(USER_TOKEN))); // PrepareRetry should rethrow any exception that is not // DfaCredentialsExpiredException errorHandler = new DfaErrorHandler(adRemoteService); Exception ex = new Exception(); try { errorHandler.PrepareForRetry(ex); Assert.Fail("Should not prepare for retry if exception is not " + "DfaCredentialsExpiredException."); } catch (Exception e) { Assert.AreSame(ex, e); } }