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);
        }
Ejemplo n.º 5
0
        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));
        }
Ejemplo n.º 6
0
        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"]));
        }
Ejemplo n.º 7
0
        /// <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);
        }