public void CreatePayload_ConnectedMode_ServerNotificationsAreSent() { var binding = CreateConfiguration(SonarLintMode.Connected, "https://sonarcloud.io"); var telemetryData = new TelemetryData { ServerNotifications = new ServerNotifications { IsDisabled = true, ServerNotificationCounters = new Dictionary <string, ServerNotificationCounter> { { "QUALITY_GATE", new ServerNotificationCounter { ReceivedCount = 22, ClickedCount = 11 } }, { "NEW_ISSUES", new ServerNotificationCounter { ReceivedCount = 44, ClickedCount = 33 } } } } }; var result = TelemetryHelper.CreatePayload(telemetryData, new DateTimeOffset(), binding, null); result.ServerNotifications.Should().NotBeNull(); result.ServerNotifications.IsDisabled.Should().BeTrue(); result.ServerNotifications.ServerNotificationCounters["QUALITY_GATE"].ClickedCount.Should().Be(11); result.ServerNotifications.ServerNotificationCounters["QUALITY_GATE"].ReceivedCount.Should().Be(22); result.ServerNotifications.ServerNotificationCounters["NEW_ISSUES"].ClickedCount.Should().Be(33); result.ServerNotifications.ServerNotificationCounters["NEW_ISSUES"].ReceivedCount.Should().Be(44); }
public void CreatePayload_Creates_Payload_Using_SonarCloud() { // Arrange var now = new DateTime(2017, 7, 25, 0, 0, 0, DateTimeKind.Local).AddHours(2); var telemetryData = new TelemetryData { InstallationDate = now.AddDays(-10), IsAnonymousDataShared = true, NumberOfDaysOfUse = 5 }; var binding = CreateConfiguration(SonarLintMode.Connected, "https://sonarcloud.io"); VisualStudioHelpers.VisualStudioVersion = "1.2.3.4"; // Act var result = TelemetryHelper.CreatePayload( telemetryData, new DateTimeOffset(now), binding); // Assert result.IsUsingConnectedMode.Should().BeTrue(); result.IsUsingSonarCloud.Should().BeTrue(); result.NumberOfDaysOfUse.Should().Be(5); result.NumberOfDaysSinceInstallation.Should().Be(10); result.SonarLintProduct.Should().Be("SonarLint Visual Studio"); result.SonarLintVersion.Should().Be( typeof(TelemetryData).Assembly.GetCustomAttribute <AssemblyFileVersionAttribute>().Version); result.VisualStudioVersion.Should().Be("1.2.3.4"); result.InstallDate.Should().Be(new DateTimeOffset(now.AddDays(-10))); result.SystemDate.Should().Be(new DateTimeOffset(now)); }
public void CreatePayload_Creates_Payload() { // Arrange var now = new DateTime(2017, 7, 25); var telemetryData = new TelemetryData { InstallationDate = now.AddDays(-10), IsAnonymousDataShared = true, NumberOfDaysOfUse = 5 }; VisualStudioHelpers.VisualStudioVersion = "1.2.3.4"; // Act var result = TelemetryHelper.CreatePayload( telemetryData, new DateTimeOffset(now, TimeSpan.FromHours(2)), isConnected: true); // Assert result.IsUsingConnectedMode.Should().BeTrue(); result.NumberOfDaysOfUse.Should().Be(5); result.NumberOfDaysSinceInstallation.Should().Be(10); result.SonarLintProduct.Should().Be("SonarLint Visual Studio"); result.SonarLintVersion.Should().Be( typeof(TelemetryData).Assembly.GetCustomAttribute <AssemblyFileVersionAttribute>().Version); result.VisualStudioVersion.Should().Be("1.2.3.4"); result.InstallDate.Should().Be(new DateTimeOffset(now.AddDays(-10), TimeSpan.FromHours(2))); result.SystemDate.Should().Be(new DateTimeOffset(now, TimeSpan.FromHours(2))); }
public void CreatePayload_InvalidArg_Throws() { Action action = () => TelemetryHelper.CreatePayload(null, DateTimeOffset.Now, BindingConfiguration.Standalone); action.Should().ThrowExactly <ArgumentNullException>().And.ParamName.Should().Be("telemetryData"); action = () => TelemetryHelper.CreatePayload(new TelemetryData(), DateTimeOffset.Now, null); action.Should().ThrowExactly <ArgumentNullException>().And.ParamName.Should().Be("bindingConfiguration"); }
public void CreatePayload_VsVersionIsNull_NullVsVersionInformation() { var binding = CreateConfiguration(SonarLintMode.Connected, "https://sonarcloud.io"); var result = TelemetryHelper.CreatePayload( new TelemetryData(), new DateTimeOffset(), binding, null); result.VisualStudioVersionInformation.Should().BeNull(); }
public void CreatePayload_NumberOfDaysSinceInstallation_On_InstallationDate() { var now = new DateTime(2017, 7, 25); var telemetryData = new TelemetryData { InstallationDate = now.Subtract(new TimeSpan(23, 59, 59)) // Less than a day }; var result = TelemetryHelper.CreatePayload(telemetryData, now, isConnected: true); result.NumberOfDaysSinceInstallation.Should().Be(0); }
public void CreatePayload_NumberOfDaysSinceInstallation_Day_After_InstallationDate() { var now = new DateTime(2017, 7, 25); var telemetryData = new TelemetryData { InstallationDate = now.AddDays(-1) }; var result = TelemetryHelper.CreatePayload(telemetryData, now, isConnected: true); result.NumberOfDaysSinceInstallation.Should().Be(1); }
public void CreatePayload_StandaloneMode_ServerNotificationsAreNotSent() { var binding = BindingConfiguration.Standalone; var telemetryData = new TelemetryData { ServerNotifications = new ServerNotifications { IsDisabled = false } }; var result = TelemetryHelper.CreatePayload(telemetryData, new DateTimeOffset(), binding, null); result.ServerNotifications.Should().BeNull(); }
public void CreatePayload_NumberOfDaysSinceInstallation_Day_After_InstallationDate() { var now = new DateTime(2017, 7, 25); var telemetryData = new TelemetryData { InstallationDate = now.AddDays(-1) }; var binding = CreateConfiguration(SonarLintMode.Connected, "http://localhost"); var result = TelemetryHelper.CreatePayload(telemetryData, now, binding); result.NumberOfDaysSinceInstallation.Should().Be(1); }
public void CreatePayload_NumberOfDaysSinceInstallation_On_InstallationDate() { var now = new DateTime(2017, 7, 25); var telemetryData = new TelemetryData { InstallationDate = now.Subtract(new TimeSpan(23, 59, 59)) // Less than a day }; var binding = CreateConfiguration(SonarLintMode.LegacyConnected, "http://localhost"); var result = TelemetryHelper.CreatePayload(telemetryData, now, binding); result.NumberOfDaysSinceInstallation.Should().Be(0); }
public void CreatePayload_NotConnected() { // Arrange var now = new DateTime(2017, 7, 25); var telemetryData = new TelemetryData { InstallationDate = now.Subtract(new TimeSpan(10, 0, 0)) }; // Act var result = TelemetryHelper.CreatePayload(telemetryData, now, BindingConfiguration.Standalone); // Assert result.IsUsingConnectedMode.Should().BeFalse(); result.IsUsingSonarCloud.Should().BeFalse(); }
public void CreatePayload_Connected_But_Not_Using_SonarCloud() { // Arrange var now = new DateTime(2017, 7, 25); var telemetryData = new TelemetryData { InstallationDate = now.Subtract(new TimeSpan(10, 0, 0)) }; var binding = CreateConfiguration(SonarLintMode.Connected, "http://localhost"); // Act var result = TelemetryHelper.CreatePayload(telemetryData, now, binding); // Assert result.IsUsingConnectedMode.Should().BeTrue(); result.IsUsingSonarCloud.Should().BeFalse(); }
public void CreatePayload_Creates_Payload_ReturnsCorrectProductAndDates() { // Arrange var now = new DateTime(2017, 7, 25, 0, 0, 0, DateTimeKind.Local).AddHours(2); var telemetryData = new TelemetryData { InstallationDate = now.AddDays(-10), IsAnonymousDataShared = true, NumberOfDaysOfUse = 5, ShowHotspot = new ShowHotspot { NumberOfRequests = 11 }, TaintVulnerabilities = new TaintVulnerabilities { NumberOfIssuesInvestigatedRemotely = 44, NumberOfIssuesInvestigatedLocally = 55 } }; var binding = CreateConfiguration(SonarLintMode.Connected, "https://sonarcloud.io"); VisualStudioHelpers.VisualStudioVersion = "1.2.3.4"; // Act var result = TelemetryHelper.CreatePayload( telemetryData, new DateTimeOffset(now), binding, null); // Assert result.NumberOfDaysOfUse.Should().Be(5); result.NumberOfDaysSinceInstallation.Should().Be(10); result.SonarLintProduct.Should().Be("SonarLint Visual Studio"); result.SonarLintVersion.Should().Be( typeof(TelemetryData).Assembly.GetCustomAttribute <AssemblyFileVersionAttribute>().Version); result.VisualStudioVersion.Should().Be("1.2.3.4"); result.InstallDate.Should().Be(new DateTimeOffset(now.AddDays(-10))); result.SystemDate.Should().Be(new DateTimeOffset(now)); result.ShowHotspot.NumberOfRequests.Should().Be(11); result.TaintVulnerabilities.NumberOfIssuesInvestigatedRemotely.Should().Be(44); result.TaintVulnerabilities.NumberOfIssuesInvestigatedLocally.Should().Be(55); }
public void CreatePayload_ReturnsCorrectConnectionData(SonarLintMode mode, string serverUrl, bool expectedIsConnected, bool expectedIsLegacyConnected, bool expectedIsSonarCloud) { // Arrange var now = new DateTime(2017, 7, 25); var telemetryData = new TelemetryData { InstallationDate = now.Subtract(new TimeSpan(10, 0, 0)) }; var binding = CreateConfiguration(mode, serverUrl); // Act var result = TelemetryHelper.CreatePayload(telemetryData, now, binding, null); // Assert result.IsUsingConnectedMode.Should().Be(expectedIsConnected); result.IsUsingLegacyConnectedMode.Should().Be(expectedIsLegacyConnected); result.IsUsingSonarCloud.Should().Be(expectedIsSonarCloud); }
public void CreatePayload_VsVersionIsNotNull_VsVersionInformation() { var vsVersion = new Mock <IVsVersion>(); vsVersion.Setup(x => x.DisplayName).Returns("Visual Studio Enterprise 2019"); vsVersion.Setup(x => x.InstallationVersion).Returns("16.9.30914.41"); vsVersion.Setup(x => x.DisplayVersion).Returns("16.9.0 Preview 3.0"); var binding = CreateConfiguration(SonarLintMode.Connected, "https://sonarcloud.io"); // Act var result = TelemetryHelper.CreatePayload( new TelemetryData(), new DateTimeOffset(), binding, vsVersion.Object); result.VisualStudioVersionInformation.Should().NotBeNull(); result.VisualStudioVersionInformation.DisplayName.Should().Be("Visual Studio Enterprise 2019"); result.VisualStudioVersionInformation.InstallationVersion.Should().Be("16.9.30914.41"); result.VisualStudioVersionInformation.DisplayVersion.Should().Be("16.9.0 Preview 3.0"); }
public void CreatePayload_Creates_Payload() { var now = new DateTime(2017, 7, 25); var telemetryData = new TelemetryData { InstallationDate = now.AddDays(-10), IsAnonymousDataShared = true, NumberOfDaysOfUse = 5 }; var result = TelemetryHelper.CreatePayload(telemetryData, now, isConnected: true); result.IsUsingConnectedMode.Should().BeTrue(); result.NumberOfDaysOfUse.Should().Be(5); result.NumberOfDaysSinceInstallation.Should().Be(10); result.SonarLintProduct.Should().Be("SonarLint Visual Studio"); result.SonarLintVersion.Should().Be( typeof(TelemetryData).Assembly.GetCustomAttribute <AssemblyFileVersionAttribute>().Version); // Cannot test result.VisualStudioVersion because it is string.Empty when running tests }
public void CreatePayload_IncludesAnalyses() { var telemetryData = new TelemetryData { Analyses = new [] { new Analysis { Language = "cs" }, new Analysis { Language = "vbnet" } }.ToList() }; var binding = CreateConfiguration(SonarLintMode.Connected, "http://localhost"); var result = TelemetryHelper.CreatePayload(telemetryData, new DateTime(2017, 7, 25), binding); result.Analyses.Count.Should().Be(2); result.Analyses[0].Language.Should().Be("cs"); result.Analyses[1].Language.Should().Be("vbnet"); }