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);
        }
Example #2
0
        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),
           };
 }
Example #5
0
        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);
        }