public void ConnectionWorkflow_ConnectionStep_WhenMissingCSharpPluginAndVBNetPlugin_AbortsWorkflowAndDisconnects() { // Setup var connectionInfo = new ConnectionInformation(new Uri("http://server")); ConnectionWorkflow testSubject = new ConnectionWorkflow(this.host, new RelayCommand(() => { })); var controller = new ConfigurableProgressController(); this.sonarQubeService.AllowConnections = true; this.sonarQubeService.ReturnProjectInformation = new ProjectInformation[0]; this.sonarQubeService.ClearServerPlugins(); this.host.SetActiveSection(ConfigurableSectionController.CreateDefault()); ConfigurableUserNotification notifications = (ConfigurableUserNotification)this.host.ActiveSection.UserNotifications; var executionEvents = new ConfigurableProgressStepExecutionEvents(); // Act testSubject.ConnectionStep(controller, CancellationToken.None, connectionInfo, executionEvents); // Verify controller.AssertNumberOfAbortRequests(1); executionEvents.AssertProgressMessages( connectionInfo.ServerUri.ToString(), Strings.DetectingServerPlugins, Strings.ConnectionResultFailure); notifications.AssertNotification(NotificationIds.BadServerPluginId, Strings.ServerHasNoSupportedPluginVersion); }
private void ConnectionWorkflow_ConnectionStep_WhenXPluginAndNoXProject_AbortsWorkflowAndDisconnects(string projectName, string projectKind, MinimumSupportedServerPlugin minimumSupportedServerPlugin) { // Arrange var connectionInfo = new ConnectionInformation(new Uri("http://server")); var projects = new ProjectInformation[] { new ProjectInformation { Key = "project1" } }; this.sonarQubeService.ReturnProjectInformation = projects; this.sonarQubeService.ClearServerPlugins(); this.sonarQubeService.RegisterServerPlugin(new ServerPlugin { Key = minimumSupportedServerPlugin.Key, Version = minimumSupportedServerPlugin.MinimumVersion }); this.projectSystemHelper.Projects = new[] { new ProjectMock(projectName) { ProjectKind = projectKind } }; bool projectChangedCallbackCalled = false; this.host.TestStateManager.SetProjectsAction = (c, p) => { projectChangedCallbackCalled = true; c.Should().Be(connectionInfo, "Unexpected connection"); CollectionAssert.AreEqual(projects, p.ToArray(), "Unexpected projects"); }; var controller = new ConfigurableProgressController(); var executionEvents = new ConfigurableProgressStepExecutionEvents(); string connectionMessage = connectionInfo.ServerUri.ToString(); var testSubject = new ConnectionWorkflow(this.host, new RelayCommand(AssertIfCalled)); ConfigurableUserNotification notifications = (ConfigurableUserNotification)this.host.ActiveSection.UserNotifications; // Act testSubject.ConnectionStep(controller, CancellationToken.None, connectionInfo, executionEvents); // Assert controller.NumberOfAbortRequests.Should().Be(1); executionEvents.AssertProgressMessages( connectionInfo.ServerUri.ToString(), Strings.ConnectionStepValidatinCredentials, Strings.DetectingServerPlugins, Strings.ConnectionResultFailure); projectChangedCallbackCalled.Should().BeFalse("ConnectedProjectsCallaback was called"); notifications.AssertNotification(NotificationIds.BadServerPluginId, string.Format(Strings.OnlySupportedPluginHasNoProjectInSolution, minimumSupportedServerPlugin.Language.Name)); }
private void ConnectionWorkflow_ConnectionStep_WhenXPluginAndAnyXProject_SuccessfulConnection(string projectName, string projectKind) { // Arrange var connectionInfo = new ConnectionInformation(new Uri("http://server")); var projects = new ProjectInformation[] { new ProjectInformation { Key = "project1" } }; this.sonarQubeService.ReturnProjectInformation = projects; this.projectSystemHelper.Projects = new[] { new ProjectMock(projectName) { ProjectKind = projectKind } }; bool projectChangedCallbackCalled = false; this.host.TestStateManager.SetProjectsAction = (c, p) => { projectChangedCallbackCalled = true; c.Should().Be(connectionInfo, "Unexpected connection"); CollectionAssert.AreEqual(projects, p.ToArray(), "Unexpected projects"); }; var controller = new ConfigurableProgressController(); var executionEvents = new ConfigurableProgressStepExecutionEvents(); string connectionMessage = connectionInfo.ServerUri.ToString(); var testSubject = new ConnectionWorkflow(this.host, new RelayCommand(AssertIfCalled)); // Act testSubject.ConnectionStep(controller, CancellationToken.None, connectionInfo, executionEvents); // Assert controller.NumberOfAbortRequests.Should().Be(0); executionEvents.AssertProgressMessages( connectionMessage, Strings.ConnectionStepValidatinCredentials, Strings.DetectingServerPlugins, Strings.ConnectionStepRetrievingProjects, Strings.ConnectionResultSuccess); projectChangedCallbackCalled.Should().BeTrue("ConnectedProjectsCallaback was not called"); sonarQubeService.ConnectionRequestsCount.Should().Be(1); testSubject.ConnectedServer.Should().Be(connectionInfo); ((ConfigurableUserNotification)this.host.ActiveSection.UserNotifications).AssertNoShowErrorMessages(); ((ConfigurableUserNotification)this.host.ActiveSection.UserNotifications).AssertNoNotification(NotificationIds.FailedToConnectId); }
public void ConnectionWorkflow_ConnectionStep_WhenPluginOkAndNoProjects_AbortsWorkflowAndDisconnects() { // Arrange var connectionInfo = new ConnectionInformation(new Uri("http://server")); var projects = new ProjectInformation[] { new ProjectInformation { Key = "project1" } }; this.sonarQubeService.ReturnProjectInformation = projects; bool projectChangedCallbackCalled = false; this.host.TestStateManager.SetProjectsAction = (c, p) => { projectChangedCallbackCalled = true; c.Should().Be(connectionInfo, "Unexpected connection"); CollectionAssert.AreEqual(projects, p.ToArray(), "Unexpected projects"); }; var controller = new ConfigurableProgressController(); var executionEvents = new ConfigurableProgressStepExecutionEvents(); string connectionMessage = connectionInfo.ServerUri.ToString(); var testSubject = new ConnectionWorkflow(this.host, new RelayCommand(AssertIfCalled)); ConfigurableUserNotification notifications = (ConfigurableUserNotification)this.host.ActiveSection.UserNotifications; // Act testSubject.ConnectionStep(controller, CancellationToken.None, connectionInfo, executionEvents); // Assert controller.NumberOfAbortRequests.Should().Be(1); executionEvents.AssertProgressMessages( connectionInfo.ServerUri.ToString(), Strings.ConnectionStepValidatinCredentials, Strings.DetectingServerPlugins, Strings.ConnectionResultFailure); projectChangedCallbackCalled.Should().BeFalse("ConnectedProjectsCallaback was called"); notifications.AssertNotification(NotificationIds.BadServerPluginId, Strings.SolutionContainsNoSupportedProject); }
public void ConnectionWorkflow_ConnectionStep_UnsuccessfulConnection() { // Setup var connectionInfo = new ConnectionInformation(new Uri("http://server")); bool projectChangedCallbackCalled = false; this.host.TestStateManager.SetProjectsAction = (c, p) => { projectChangedCallbackCalled = true; Assert.AreSame(connectionInfo, c, "Unexpected connection"); Assert.IsNull(p, "Not expecting any projects"); }; this.projectSystemHelper.Projects = new[] { new ProjectMock("foo.csproj") { ProjectKind = ProjectSystemHelper.CSharpProjectKind } }; var controller = new ConfigurableProgressController(); this.sonarQubeService.AllowConnections = false; var executionEvents = new ConfigurableProgressStepExecutionEvents(); string connectionMessage = connectionInfo.ServerUri.ToString(); var testSubject = new ConnectionWorkflow(this.host, new RelayCommand(AssertIfCalled)); // Act testSubject.ConnectionStep(controller, CancellationToken.None, connectionInfo, executionEvents); // Verify executionEvents.AssertProgressMessages( connectionMessage, Strings.DetectingServerPlugins, Strings.ConnectionResultFailure); Assert.IsFalse(projectChangedCallbackCalled, "Callback should not have been called"); this.sonarQubeService.AssertConnectRequests(1); Assert.IsFalse(this.host.VisualStateManager.IsConnected); ((ConfigurableUserNotification)this.host.ActiveSection.UserNotifications).AssertNotification(NotificationIds.FailedToConnectId, Strings.ConnectionFailed); // Act (reconnect with same bad connection) executionEvents.Reset(); projectChangedCallbackCalled = false; testSubject.ConnectionStep(controller, CancellationToken.None, connectionInfo, executionEvents); // Verify executionEvents.AssertProgressMessages( connectionMessage, Strings.DetectingServerPlugins, Strings.ConnectionResultFailure); Assert.IsFalse(projectChangedCallbackCalled, "Callback should not have been called"); this.sonarQubeService.AssertConnectRequests(2); Assert.IsFalse(this.host.VisualStateManager.IsConnected); ((ConfigurableUserNotification)this.host.ActiveSection.UserNotifications).AssertNotification(NotificationIds.FailedToConnectId, Strings.ConnectionFailed); // Canceled connections CancellationTokenSource tokenSource = new CancellationTokenSource(); executionEvents.Reset(); projectChangedCallbackCalled = false; CancellationToken token = tokenSource.Token; tokenSource.Cancel(); // Act testSubject.ConnectionStep(controller, token, connectionInfo, executionEvents); // Verify executionEvents.AssertProgressMessages( connectionMessage, Strings.DetectingServerPlugins, Strings.ConnectionResultCancellation); Assert.IsFalse(projectChangedCallbackCalled, "Callback should not have been called"); this.sonarQubeService.AssertConnectRequests(3); Assert.IsFalse(this.host.VisualStateManager.IsConnected); ((ConfigurableUserNotification)this.host.ActiveSection.UserNotifications).AssertNotification(NotificationIds.FailedToConnectId, Strings.ConnectionFailed); }