private async Task Method_WhenRequestIsNotSuccess_ReturnsDefaultAndErrorCode <T>( Func <SonarQubeClient, CancellationToken, Task <Result <T> > > call, HttpStatusCode errorStatusCode) { var httpHandler = new Mock <HttpMessageHandler>(); httpHandler.Protected() .Setup <Task <HttpResponseMessage> >("SendAsync", ItExpr.IsAny <HttpRequestMessage>(), ItExpr.IsAny <CancellationToken>()) .Returns(Task.FromResult(new HttpResponseMessage { StatusCode = errorStatusCode, Content = null })); var connection = new ConnectionRequest { ServerUri = new Uri("http://mysq.com/") }; var client = new SonarQubeClient(connection, httpHandler.Object, TimeSpan.FromSeconds(10)); // Act var result = await call(client, CancellationToken.None); // Assert result.IsSuccess.Should().BeFalse(); result.Value.Should().Be(default(T)); result.StatusCode.Should().Be(errorStatusCode); }
private void Method_WhenCancellationRequested_ThrowsException <T>( Func <SonarQubeClient, CancellationToken, Task <Result <T> > > call) { // Arrange var httpHandler = new Mock <HttpMessageHandler>(); httpHandler.Protected() .Setup <Task <HttpResponseMessage> >("SendAsync", ItExpr.IsAny <HttpRequestMessage>(), ItExpr.IsAny <CancellationToken>()) .Returns(Task.FromResult(new HttpResponseMessage { StatusCode = HttpStatusCode.OK, Content = new StringContent("") })); var connection = new ConnectionRequest { ServerUri = new Uri("http://mysq.com/") }; var client = new SonarQubeClient(connection, httpHandler.Object, TimeSpan.FromSeconds(10)); var cancellationToken = new CancellationTokenSource(); cancellationToken.Cancel(); // Act & Assert Func <Task <Result <T> > > funct = async() => await call(client, cancellationToken.Token); // Assert funct.ShouldThrow <OperationCanceledException>(); }
private async Task Method_WhenRequestIsSuccesful_ReturnsIsSuccessAndNotNullData <T>( Func <SonarQubeClient, CancellationToken, Task <Result <T> > > call, string resultContent, Action <T> extraAssertions) { // Arrange var httpHandler = new Mock <HttpMessageHandler>(); httpHandler.Protected() .Setup <Task <HttpResponseMessage> >("SendAsync", ItExpr.IsAny <HttpRequestMessage>(), ItExpr.IsAny <CancellationToken>()) .Returns(Task.FromResult(new HttpResponseMessage { StatusCode = HttpStatusCode.OK, Content = new StringContent(resultContent) })); var connection = new ConnectionRequest { ServerUri = new Uri("http://mysq.com/") }; var client = new SonarQubeClient(connection, httpHandler.Object, TimeSpan.FromSeconds(10)); // Act var result = await call(client, CancellationToken.None); // Assert result.IsSuccess.Should().BeTrue(); result.Value.Should().NotBeNull(); result.StatusCode.Should().Be(HttpStatusCode.OK); extraAssertions(result.Value); }
private async Task Method_CallsTheExpectedUri <T>(Uri expectedRelativeUri, string resultContent, Func <SonarQubeClient, CancellationToken, Task <Result <T> > > call) { // Arrange var httpHandler = new Mock <HttpMessageHandler>(); var serverUri = new Uri("http://mysq.com/"); var connection = new ConnectionRequest { ServerUri = serverUri }; var client = new SonarQubeClient(connection, httpHandler.Object, TimeSpan.FromSeconds(10)); httpHandler.Protected() .Setup <Task <HttpResponseMessage> >("SendAsync", ItExpr.IsAny <HttpRequestMessage>(), ItExpr.IsAny <CancellationToken>()) .Returns(Task.FromResult(new HttpResponseMessage { StatusCode = HttpStatusCode.OK, Content = new StringContent(resultContent) })) .Callback <HttpRequestMessage, CancellationToken>((request, token) => { request.Method.Should().Be(HttpMethod.Get); request.RequestUri.Should().Be(new Uri(serverUri, expectedRelativeUri)); }); // Act await call(client, CancellationToken.None); }
public SonarQubeClientShould() { var configurationUrl = $"http://localhost/{nameof(SonarQube)}.{nameof(SonarQube.Net)}.{nameof(SonarQube.Net.Tests)}"; var userName = "******"; var password = string.Empty; _client = new SonarQubeClient(configurationUrl, new BasicAuthentication(userName, password)); }
public SonarQubeClientShould() { var configuration = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) .Build(); _client = new SonarQubeClient(configuration["url"], new BasicAuthentication(configuration["userName"], configuration["password"])); }
/// <inheritdoc/> public async Task <ISonarQubeClient> LogInAsync(Uri baseUrl, string userName, string password) { var client = new SonarQubeClient(baseUrl); if (await client.Authentication.CheckCredentials(userName, password)) { return(client); } return(null); }
public void Dispose_ShouldDisposeTheRightObject() { // Arrange var httpHandler = new Mock <HttpMessageHandler>(); httpHandler.Protected().Setup("Dispose", true).Verifiable(); var connection = new ConnectionRequest { ServerUri = new Uri("http://mysq.com/") }; var client = new SonarQubeClient(connection, httpHandler.Object, TimeSpan.FromSeconds(2)); // Act client.Dispose(); // Assert httpHandler.VerifyAll(); }
public void Dispose_WhenCalledMultipleTimes_DoesNotThrow() { // Arrange var httpHandler = new Mock <HttpMessageHandler>(); int callCount = 0; httpHandler.Protected().Setup("Dispose", true).Callback(() => callCount++); var connection = new ConnectionRequest { ServerUri = new Uri("http://mysq.com/") }; var client = new SonarQubeClient(connection, httpHandler.Object, TimeSpan.FromSeconds(2)); client.Dispose(); // Act client.Dispose(); // Assert httpHandler.VerifyAll(); callCount.Should().Be(1); }
private void Method_WhenExceptionThrown_PropagateIt <T>(Func <SonarQubeClient, CancellationToken, Task <Result <T> > > call) { // Arrange var expectedException = new Exception("foo text."); var httpHandler = new Mock <HttpMessageHandler>(); httpHandler.Protected() .Setup <Task <HttpResponseMessage> >("SendAsync", ItExpr.IsAny <HttpRequestMessage>(), ItExpr.IsAny <CancellationToken>()) .Returns(() => { throw expectedException; }); var connection = new ConnectionRequest { ServerUri = new Uri("http://mysq.com/") }; var client = new SonarQubeClient(connection, httpHandler.Object, TimeSpan.FromSeconds(10)); // Act & Assert Func <Task <Result <T> > > funct = async() => await call(client, CancellationToken.None); // Assert funct.ShouldThrow <Exception>().And.Message.Should().Be(expectedException.Message); }