public void CorrectlyRespondIfRateLimited()
        {
            //arrange
            var logDummy = new RetrieverLogFixture();

            var headers      = new HttpClient();
            var httpResponse = headers.GetAsync("http://test.com").Result;

            httpResponse.Headers.Add("X-RateLimit-Limit", new List <string> {
                "2"
            });
            httpResponse.Headers.Add("X-RateLimit-Remaining", new List <string> {
                "0"
            });

            // act
            var result = httpResponse.Headers.HasGitHubRateLimitedUs(logDummy);

            // assert
            var lastMessage = logDummy.LoggedMessages.Last();

            result.Should().BeTrue();
            lastMessage.MessageTemplate.Should()
            .Be(
                "GitHub API has been rate limited\r\n- If you haven't done so already please provide a token to up your limit");
            lastMessage.Type.Should().Be(LogType.Warning);
        }
        public void CorrectlyRespondIfNotRateLimited()
        {
            //arrange
            var logDummy = new RetrieverLogFixture();

            var headers      = new HttpClient();
            var httpResponse = headers.GetAsync("http://test.com").Result;

            httpResponse.Headers.Add("X-RateLimit-Limit", new List <string> {
                "2"
            });
            httpResponse.Headers.Add("X-RateLimit-Remaining", new List <string> {
                "1"
            });

            // act
            var result = httpResponse.Headers.HasGitHubRateLimitedUs(logDummy);

            // assert
            var logMessages = logDummy.LoggedMessages;

            result.Should().BeFalse();
            logMessages.First().MessageTemplate.Should().Be("GitHub API Rate Limit: 2 per hour");
            logMessages.Last().MessageTemplate.Should().Be("GitHub API Remaining before limit: 1");
        }
        public void NoHeadersRespondAsThoughRateLimited()
        {
            // arrange
            var logDummy = new RetrieverLogFixture();

            var headers      = new HttpClient();
            var httpResponse = headers.GetAsync("http://test.com").Result;

            // act
            var result = httpResponse.Headers.HasGitHubRateLimitedUs(logDummy);

            // assert
            result.Should().BeTrue();
            logDummy.LoggedMessages.Last().MessageTemplate.Should().Be("There were no Rate Limit headers");
            logDummy.LoggedMessages.Last().Type.Should().Be(LogType.Warning);
        }