public void ConnectionWorkflow_ConnectionStep_SuccessfulConnection() { // Setup 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; Assert.AreSame(connectionInfo, c, "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); // Verify executionEvents.AssertProgressMessages(connectionMessage, Strings.ConnectionResultSuccess); Assert.IsTrue(projectChangedCallbackCalled, "ConnectedProjectsCallaback was not called"); sonarQubeService.AssertConnectRequests(1); Assert.AreEqual(connectionInfo, testSubject.ConnectedServer); ((ConfigurableUserNotification)this.host.ActiveSection.UserNotifications).AssertNoShowErrorMessages(); ((ConfigurableUserNotification)this.host.ActiveSection.UserNotifications).AssertNoNotification(NotificationIds.FailedToConnectId); }
void IConnectionWorkflowExecutor.EstablishConnection(ConnectionInformation information) { ConnectionWorkflow workflow = new ConnectionWorkflow(this.host, this.ConnectCommand); IProgressEvents progressEvents = workflow.Run(information); SetConnectionInProgress(progressEvents); }
public void ConnectionWorkflow_ConnectionStep_WhenGivenANullParentCommand_ThrowsArgumentNullException() { // Arrange & Act ConnectionWorkflow testSubject = new ConnectionWorkflow(this.host, null); // Assert Assert.Fail("Expected exception of type ArgumentNullException but no exception was thrown."); }
public void ConnectionWorkflow_ConnectionStep_WhenGivenANullHost_ThrowsArgumentNullException() { // Arrange & Act ConnectionWorkflow testSubject = new ConnectionWorkflow(null, new RelayCommand(() => { })); // Assert Assert.Fail("Expected exception of type ArgumentNullException but no exception was thrown."); }
void IConnectionWorkflowExecutor.EstablishConnection(ConnectionInformation information) { ConnectionWorkflow workflow = new ConnectionWorkflow(this.host, this.ConnectCommand); IProgressEvents progressEvents = workflow.Run(information); this.SetConnectionInProgress(progressEvents); }
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"); }; 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.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.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); // Cancelled 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.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); }
private ConnectionWorkflow SetTestSubjectWithConnectedServer() { ConnectionWorkflow testSubject = new ConnectionWorkflow(this.host, new RelayCommand(AssertIfCalled)); var connectionInfo = new ConnectionInformation(new Uri("http://server")); testSubject.ConnectedServer = connectionInfo; return testSubject; }
public void ConnectionWorkflow_ConnectionStep_MissingCSharpPlugin_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(); string expectedErrorMsg = string.Format(CultureInfo.CurrentCulture, Strings.ServerDoesNotHaveCorrectVersionOfCSharpPlugin, ServerPlugin.CSharpPluginMinimumVersion); // Act testSubject.ConnectionStep(controller, CancellationToken.None, connectionInfo, executionEvents); // Verify controller.AssertNumberOfAbortRequests(1); executionEvents.AssertProgressMessages( connectionInfo.ServerUri.ToString(), expectedErrorMsg, Strings.ConnectionResultFailure); notifications.AssertNotification(NotificationIds.BadServerPluginId, expectedErrorMsg); }
public void ConnectionWorkflow_ConnectionStep_ConnectedServerCanBeGetAndSet() { // Arrange var connectionInfo = new ConnectionInformation(new Uri("http://server")); ConnectionWorkflow testSubject = new ConnectionWorkflow(this.host, new RelayCommand(() => { })); // Act testSubject.ConnectedServer = connectionInfo; // Assert Assert.AreEqual(testSubject.ConnectedServer, connectionInfo); }
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; Assert.AreSame(connectionInfo, c, "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); // Verify controller.AssertNumberOfAbortRequests(1); executionEvents.AssertProgressMessages( connectionInfo.ServerUri.ToString(), Strings.DetectingServerPlugins, Strings.ConnectionResultFailure); Assert.IsFalse(projectChangedCallbackCalled, "ConnectedProjectsCallaback was called"); notifications.AssertNotification(NotificationIds.BadServerPluginId, string.Format(Strings.OnlySupportedPluginHasNoProjectInSolution, minimumSupportedServerPlugin.Language.Name)); }
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; Assert.AreSame(connectionInfo, c, "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); // Verify controller.AssertNumberOfAbortRequests(1); executionEvents.AssertProgressMessages( connectionInfo.ServerUri.ToString(), Strings.DetectingServerPlugins, Strings.ConnectionResultFailure); Assert.IsFalse(projectChangedCallbackCalled, "ConnectedProjectsCallaback was called"); notifications.AssertNotification(NotificationIds.BadServerPluginId, Strings.SolutionContainsNoSupportedProject); }
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); }