public async Task ReturnsCheckServerStatusTransitionWhenTheErrorIsTooManyRequestsException() { var exception = new TooManyRequestsException(Substitute.For <IRequest>(), Substitute.For <IResponse>()); var state = new ProcessClientErrorState <TestModel>(); var model = new TestModel(1, SyncStatus.SyncNeeded); var transition = await state.Start((exception, model)); transition.Result.Should().Be(state.UnresolvedTooManyRequests); }
public void SerializableTest() { var request = new HttpRequest(new Uri("http://localhost"), new Dictionary <string, string> { { "hello", "tyria" } }); var response = new HttpResponse <ErrorObject>(new ErrorObject { Text = "Error" }, HttpStatusCode.TooManyRequests, null, null); var exception = new TooManyRequestsException(request, response); exception.Should().BeBinarySerializable(); }
public async Task ShouldReturnSleepsAfterReceivingTooManyRequestsException() { DateTime fromDate = new DateTime(2018, 1, 15); DateTime endDate = fromDate.AddDays(250); var tooManyRequests = new TooManyRequestsException("I'm a little teapot."); //Given _fitbitClient .Setup(x => x.Get100DaysOfSleeps(fromDate, _accessToken)) .Returns(Task.FromResult( new FitbitSleepsResponse { sleep = new List <Sleep> { new Sleep { dateOfSleep = fromDate.AddDays(50), minutesAsleep = 1 }, new Sleep { dateOfSleep = fromDate.AddDays(51), minutesAsleep = 2 }, } })); _fitbitClient.Setup(x => x.Get100DaysOfSleeps(fromDate.AddDays(100), It.IsAny <string>())) .Throws(tooManyRequests); _fitbitClient.Setup(x => x.Get100DaysOfSleeps(fromDate.AddDays(200), _accessToken)).Returns(Task.FromResult( new FitbitSleepsResponse { sleep = new List <Sleep> { new Sleep { dateOfSleep = fromDate.AddDays(201), minutesAsleep = 5 }, } })); var sleeps = await _fitbitClientClientQueryAdapter.GetFitbitSleeps(fromDate, endDate, _accessToken); Assert.Equal(2, sleeps.Count()); Assert.Contains(sleeps, x => x.minutesAsleep == 1); Assert.Contains(sleeps, x => x.minutesAsleep == 2); _logger.Verify(x => x.LogErrorAsync(tooManyRequests), Times.Once); }
private Exception CatchException(Exception ex) { throw ex switch { UsernameExistsException _ => new BusinessException(ErrorCode.UsernameAlreadyExists, ex), NotAuthorizedException _ => new BusinessException(ErrorCode.NotAuthorized, ex), TooManyRequestsException _ => new BusinessException(ErrorCode.TooManyRequests, ex), PasswordResetRequiredException _ => new BusinessException(ErrorCode.PasswordResetRequired, ex), UserNotFoundException _ => new BusinessException(ErrorCode.UserNotFound, ex), UserNotConfirmedException _ => new BusinessException(ErrorCode.UserNotConfirmed, ex), InvalidPasswordException _ => new BusinessException(ErrorCode.InvalidPassword, ex), CodeMismatchException _ => new BusinessException(ErrorCode.CodeMismatch, ex), ExpiredCodeException _ => new BusinessException(ErrorCode.ExpiredCode, ex), LimitExceededException _ => new BusinessException(ErrorCode.LimitExceeded, ex), BusinessException _ => ex, _ => new CriticalException(ErrorCode.InternalServerError, ex), }; }
public async Task Should_Throw_TooManyRequestsException() { const int parallelTaskCount = 250; Task[] requestTasks = new Task[parallelTaskCount]; for (int i = 0; i < parallelTaskCount; i++) { requestTasks[i] = Task.Run(async() => { Message message = await BotClient.SendTextMessageAsync(Fixture.SupergroupChat, "testmessage"); await BotClient.DeleteMessageAsync(Fixture.SupergroupChat, message.MessageId); }); } TooManyRequestsException exception = await Assert.ThrowsAsync <TooManyRequestsException>( async() => await Task.WhenAll(requestTasks) ); Assert.Equal(429, exception.ErrorCode); Assert.Contains("Too Many Requests: retry after", exception.Message); Assert.NotEqual(0, exception.Parameters.RetryAfter); }
public void TestCreation() { var clientProtocolException = new TooManyRequestsException(4); Assert.AreEqual(4, clientProtocolException.RetryAfter); }
public async Task ShouldReturnFitbitHeartActivitiesAfterReceivingTooManyRequestsException() { DateTime fromDate = new DateTime(2018, 1, 15); DateTime toDate = new DateTime(2018, 3, 15); var tooManyRequests = new TooManyRequestsException("I'm a little teapot."); //Given _fitbitClient.Setup(x => x.GetMonthOfFitbitHeartRates(fromDate.AddMonths(1), It.IsAny <string>())).Returns(Task.FromResult( new FitBitActivity { activitiesHeart = new List <ActivitiesHeart> { new ActivitiesHeart { dateTime = new DateTime(2018, 1, 20), value = new Value { restingHeartRate = 11 } }, new ActivitiesHeart { dateTime = new DateTime(2018, 1, 21), value = new Value { restingHeartRate = 12 } }, } })); _fitbitClient.Setup(x => x.GetMonthOfFitbitHeartRates(fromDate.AddMonths(2), It.IsAny <string>())).Throws(tooManyRequests); _fitbitClient.Setup(x => x.GetMonthOfFitbitHeartRates(fromDate.AddMonths(3), It.IsAny <string>())).Returns(Task.FromResult( new FitBitActivity { activitiesHeart = new List <ActivitiesHeart> { new ActivitiesHeart { dateTime = new DateTime(2018, 3, 14), value = new Value { restingHeartRate = 31 } }, new ActivitiesHeart { dateTime = new DateTime(2018, 3, 16), value = new Value { restingHeartRate = 32 } }, } })); //When var heartActivities = await _fitbitClientClientQueryAdapter.GetFitbitHeartActivities(fromDate, toDate, It.IsAny <string>()); Assert.Equal(2, heartActivities.Count()); Assert.Contains(heartActivities, x => x.value.restingHeartRate == 11); Assert.Contains(heartActivities, x => x.value.restingHeartRate == 12); _logger.Verify(x => x.LogErrorAsync(tooManyRequests), Times.Once); }