Example #1
0
        public void DefaultConstructorTest()
        {
            //Arrange
            var githubApiStatusService = new GitHubApiStatusService();

            //Act

            //Assert
            Assert.ThrowsAsync <GitHubApiStatusException>(() => githubApiStatusService.GetApiRateLimits());
        }
Example #2
0
        public void GetApiRateLimits_CancelledRequest()
        {
            //Arrange
            var cancellationTokenSource   = new CancellationTokenSource(TimeSpan.FromMilliseconds(1));
            var authenticationHeaderValue = new AuthenticationHeaderValue(GitHubConstants.AuthScheme, GitHubConstants.PersonalAccessToken);

            //Act

            //Assert
            Assert.ThrowsAsync <TaskCanceledException>(() => GitHubApiStatusService.GetApiRateLimits(cancellationTokenSource.Token));
        }
Example #3
0
        public async Task GetApiRateLimits_ValidGraphQLApiRequest()
        {
            //Arrange
            RateLimitStatus     graphQLApiStatus_Initial, graphQLApiStatus_Final;
            GitHubApiRateLimits gitHubApiRateLimits_Initial, gitHubApiRateLimits_Final;

            var startTime = DateTimeOffset.UtcNow;
            var cancellationTokenSource = new CancellationTokenSource();

            //Act
            gitHubApiRateLimits_Initial = await GitHubApiStatusService.GetApiRateLimits(cancellationTokenSource.Token).ConfigureAwait(false);

            graphQLApiStatus_Initial = gitHubApiRateLimits_Initial.GraphQLApi;

            await SendValidGraphQLApiRequest().ConfigureAwait(false);

            gitHubApiRateLimits_Final = await GitHubApiStatusService.GetApiRateLimits(cancellationTokenSource.Token).ConfigureAwait(false);

            graphQLApiStatus_Final = gitHubApiRateLimits_Final.GraphQLApi;

            //Assert
            Assert.IsNotNull(graphQLApiStatus_Initial);
            Assert.AreEqual(5000, graphQLApiStatus_Initial.RateLimit);
            Assert.GreaterOrEqual(graphQLApiStatus_Initial.RemainingRequestCount, 0);
            Assert.LessOrEqual(graphQLApiStatus_Initial.RemainingRequestCount, graphQLApiStatus_Initial.RateLimit);
            Assert.AreEqual(graphQLApiStatus_Initial.RateLimitReset_DateTime.ToUnixTimeSeconds(), graphQLApiStatus_Initial.RateLimitReset_UnixEpochSeconds);
            Assert.GreaterOrEqual(graphQLApiStatus_Initial.RateLimitReset_DateTime, startTime);
            Assert.GreaterOrEqual(graphQLApiStatus_Initial.RateLimitReset_UnixEpochSeconds, startTime.ToUnixTimeSeconds());

            Assert.IsNotNull(graphQLApiStatus_Final);
            Assert.AreEqual(5000, graphQLApiStatus_Final.RateLimit);
            Assert.GreaterOrEqual(graphQLApiStatus_Final.RemainingRequestCount, 0);
            Assert.LessOrEqual(graphQLApiStatus_Final.RemainingRequestCount, graphQLApiStatus_Final.RateLimit);
            Assert.AreEqual(graphQLApiStatus_Final.RateLimitReset_DateTime.ToUnixTimeSeconds(), graphQLApiStatus_Final.RateLimitReset_UnixEpochSeconds);
            Assert.GreaterOrEqual(graphQLApiStatus_Final.RateLimitReset_DateTime, startTime);
            Assert.GreaterOrEqual(graphQLApiStatus_Final.RateLimitReset_UnixEpochSeconds, startTime.ToUnixTimeSeconds());

            Assert.AreEqual(graphQLApiStatus_Initial.RateLimit, graphQLApiStatus_Final.RateLimit);
            Assert.AreEqual(graphQLApiStatus_Initial.RateLimitReset_DateTime, graphQLApiStatus_Final.RateLimitReset_DateTime);
            Assert.GreaterOrEqual(graphQLApiStatus_Initial.RateLimitReset_TimeRemaining, graphQLApiStatus_Final.RateLimitReset_TimeRemaining);
            Assert.AreEqual(graphQLApiStatus_Initial.RateLimitReset_UnixEpochSeconds, graphQLApiStatus_Final.RateLimitReset_UnixEpochSeconds);
            Assert.Greater(graphQLApiStatus_Initial.RemainingRequestCount, graphQLApiStatus_Final.RemainingRequestCount);
        }
Example #4
0
        public async Task BEARERSchemeHttpClient()
        {
            //Arrange
            var httpClient             = CreateGitHubHttpClient(new AuthenticationHeaderValue(GitHubConstants.AuthScheme.ToUpper(), GitHubConstants.PersonalAccessToken), new ProductHeaderValue(nameof(GitHubApiStatus)));
            var gitHubApiStatusService = new GitHubApiStatusService(httpClient);

            //Act
            var apiRateLimits = await gitHubApiStatusService.GetApiRateLimits().ConfigureAwait(false);

            //Assert
            Assert.IsNotNull(gitHubApiStatusService);
            Assert.IsNotNull(apiRateLimits);
            Assert.IsNotNull(apiRateLimits.AppManifestConfiguration);
            Assert.IsNotNull(apiRateLimits.CodeScanningUpload);
            Assert.IsNotNull(apiRateLimits.GraphQLApi);
            Assert.IsNotNull(apiRateLimits.RestApi);
            Assert.IsNotNull(apiRateLimits.SearchApi);
            Assert.IsNotNull(apiRateLimits.SourceImport);
        }
Example #5
0
        public async Task ValidProductHeaderValueTest()
        {
            //Arrange
            var gitHubApiStatusService = new GitHubApiStatusService();

            gitHubApiStatusService.AddProductHeaderValue(new ProductHeaderValue(nameof(GitHubApiStatus)));
            gitHubApiStatusService.SetAuthenticationHeaderValue(new AuthenticationHeaderValue(GitHubConstants.AuthScheme, GitHubConstants.PersonalAccessToken));

            //Act
            var apiRateLimits = await gitHubApiStatusService.GetApiRateLimits().ConfigureAwait(false);

            //Assert
            Assert.IsNotNull(gitHubApiStatusService);
            Assert.IsTrue(gitHubApiStatusService.IsProductHeaderValueValid);

            Assert.IsNotNull(apiRateLimits);
            Assert.IsNotNull(apiRateLimits.AppManifestConfiguration);
            Assert.IsNotNull(apiRateLimits.CodeScanningUpload);
            Assert.IsNotNull(apiRateLimits.GraphQLApi);
            Assert.IsNotNull(apiRateLimits.RestApi);
            Assert.IsNotNull(apiRateLimits.SearchApi);
            Assert.IsNotNull(apiRateLimits.SourceImport);
        }
Example #6
0
        public void GetApiRateLimits_InvalidBearerToken()
        {
            //Arrange
            var cancellationTokenSource = new CancellationTokenSource();

            GitHubApiStatusService.SetAuthenticationHeaderValue(new AuthenticationHeaderValue(GitHubConstants.AuthScheme, "abc 123"));

            //Act

            //Assert
            var httpRequestException = Assert.ThrowsAsync <HttpRequestException>(() => GitHubApiStatusService.GetApiRateLimits(cancellationTokenSource.Token));

#if NET5_0
            Assert.AreEqual(HttpStatusCode.Unauthorized, httpRequestException?.StatusCode);
#else
            Assert.IsTrue(httpRequestException?.Message.Contains("Unauthorized"));
#endif
        }