Esempio n. 1
0
        public void ThrowWhenNotConnected()
        {
            // Arrange
            var client    = new Mock <ISonarQubeClient>();
            var sqService = new SonarQubeService(WrapInMockFactory(client));

            // Act & Assert
            AssertExceptionThrownWhenNotConnected(() =>
                                                  sqService.GetAllOrganizationsAsync(CancellationToken.None));

            AssertExceptionThrownWhenNotConnected(() =>
                                                  sqService.GetAllPluginsAsync(CancellationToken.None));

            AssertExceptionThrownWhenNotConnected(() =>
                                                  sqService.GetAllProjectsAsync("organizationKey", CancellationToken.None));

            AssertExceptionThrownWhenNotConnected(() =>
                                                  sqService.GetAllPropertiesAsync(CancellationToken.None));

            AssertExceptionThrownWhenNotConnected(() =>
            {
                sqService.GetProjectDashboardUrl("projectKey");
                return(Task.Delay(0));
            });

            AssertExceptionThrownWhenNotConnected(() =>
                                                  sqService.GetQualityProfileAsync("projectKey", "some org", SonarQubeLanguage.CSharp, CancellationToken.None));

            AssertExceptionThrownWhenNotConnected(() =>
                                                  sqService.GetRoslynExportProfileAsync("qualityProfileName", "some org", SonarQubeLanguage.CSharp, CancellationToken.None));

            AssertExceptionThrownWhenNotConnected(() =>
                                                  sqService.GetNotificationEventsAsync("projectKey", DateTimeOffset.Now, CancellationToken.None));
        }
        public async Task GetQualityProfileAsync_WhenOnlyOneProfile_ReturnsExpectedQualityProfile()
        {
            // Arrange
            var client = GetMockSqClientWithCredentialAndVersion("0.0");

            client.Setup(x => x.GetQualityProfilesAsync(It.IsAny <QualityProfileRequest>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(new Result <QualityProfileResponse[]>(new HttpResponseMessage(),
                                                                new[] { new QualityProfileResponse {
                                                                            Key = "QP_KEY", Language = "cs"
                                                                        } }));
            client.Setup(x => x.GetQualityProfileChangeLogAsync(It.IsAny <QualityProfileChangeLogRequest>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(new Result <QualityProfileChangeLogResponse>(new HttpResponseMessage(),
                                                                       new QualityProfileChangeLogResponse {
                Events =
                    new[] { new QualityProfileChangeLogEventResponse {
                                Date = DateTime.MaxValue
                            } }
            }));
            var service = new SonarQubeService(WrapInMockFactory(client));
            await service.ConnectAsync(new ConnectionInformation(new Uri("http://mysq.com")), CancellationToken.None);

            // Act
            var result = await service.GetQualityProfileAsync("PROJECT_KEY", SonarQubeLanguage.CSharp, CancellationToken.None);

            // Assert
            client.Verify(x => x.GetQualityProfilesAsync(It.IsAny <QualityProfileRequest>(), It.IsAny <CancellationToken>()),
                          Times.Once);
            client.Verify(x => x.GetQualityProfileChangeLogAsync(It.IsAny <QualityProfileChangeLogRequest>(),
                                                                 It.IsAny <CancellationToken>()), Times.Once);
            result.Key.Should().Be("QP_KEY");
            result.Language.Should().Be("cs");
            result.TimeStamp.Should().Be(DateTime.MaxValue);
        }
Esempio n. 3
0
        public async Task GetQualityProfileAsync_WhenError404_CallsAgainWithNoProjectKey()
        {
            // Arrange
            var client = GetMockSqClientWithCredentialAndVersion("0.0");

            client
            .SetupSequence(x => x.GetQualityProfilesAsync(It.IsAny <QualityProfileRequest>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(Result.NotFound(new QualityProfileResponse[0]))
            .ReturnsAsync(Result.Ok(new[] { new QualityProfileResponse {
                                                Key = "QP_KEY", Language = "cs"
                                            } }));

            client
            .Setup(x => x.GetQualityProfileChangeLogAsync(It.IsAny <QualityProfileChangeLogRequest>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(Result.Ok(new QualityProfileChangeLogResponse
            {
                Events = new[] { new QualityProfileChangeLogEventResponse {
                                     Date = DateTime.MaxValue
                                 } }
            }));

            var service = new SonarQubeService(WrapInMockFactory(client));
            await service.ConnectAsync(new ConnectionInformation(new Uri("http://mysq.com")), CancellationToken.None);

            // Act
            var result = await service.GetQualityProfileAsync("PROJECT_KEY", "ORG_KEY", SonarQubeLanguage.CSharp, CancellationToken.None);

            // Assert
            client.Verify(x => x.GetQualityProfilesAsync(
                              // Defaults is set to true in the client
                              It.Is <QualityProfileRequest>(r => r.Defaults == null && r.ProjectKey == null && r.OrganizationKey == "ORG_KEY"),
                              It.IsAny <CancellationToken>()),
                          Times.Once);
            client.Verify(x => x.GetQualityProfilesAsync(
                              It.Is <QualityProfileRequest>(r => r.Defaults == null && r.ProjectKey == "PROJECT_KEY" && r.OrganizationKey == "ORG_KEY"),
                              It.IsAny <CancellationToken>()),
                          Times.Once);
            client.Verify(x => x.GetQualityProfileChangeLogAsync(It.IsAny <QualityProfileChangeLogRequest>(),
                                                                 It.IsAny <CancellationToken>()), Times.Once);
            result.Key.Should().Be("QP_KEY");
            result.Language.Should().Be("cs");
            result.TimeStamp.Should().Be(DateTime.MaxValue);
        }