public void DefaultConstructorTest() { //Arrange var githubApiStatusService = new GitHubApiStatusService(); //Act //Assert Assert.ThrowsAsync <GitHubApiStatusException>(() => githubApiStatusService.GetApiRateLimits()); }
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)); }
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); }
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); }
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); }
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 }