public async Task RefreshChildren_AddsPlaceholder_WhenAllAppsAreRemoved() { var fakeInitialApp = new CloudFoundryApp("fake app name", "fake app id", _sut.Space, null); var avm = new AppViewModel(fakeInitialApp, Services); var fakeNoAppsResult = new DetailedResult <List <CloudFoundryApp> >( succeeded: true, content: new List <CloudFoundryApp>(), // simulate space having lost all apps before refresh explanation: null, cmdDetails: FakeSuccessCmdResult); MockCloudFoundryService.Setup(mock => mock. GetAppsForSpaceAsync(_sut.Space, true, It.IsAny <int>())) .ReturnsAsync(fakeNoAppsResult); _sut.Children = new ObservableCollection <TreeViewItemViewModel> { avm }; // simulate space initially having 1 app child Assert.AreEqual(1, _sut.Children.Count); Assert.AreEqual(typeof(AppViewModel), _sut.Children[0].GetType()); await _sut.RefreshChildren(); Assert.AreEqual(1, _sut.Children.Count); Assert.AreEqual(typeof(PlaceholderViewModel), _sut.Children[0].GetType()); Assert.AreEqual(SpaceViewModel.EmptyAppsPlaceholderMsg, _sut.Children[0].DisplayText); }
public async Task NavigateToAuthPage_DoesNotChangePageNumber_AndSetsApiAddressError_WhenSsoPromptRequestFails() { var fakeCertValidationResult = new DetailedResult { Succeeded = true, }; var fakeSsoPromptResult = new DetailedResult <string> { Succeeded = false, FailureType = FailureType.None, }; MockCloudFoundryService.Setup(m => m.TargetApi(_sut.Target, _sut.ProceedWithInvalidCertificate)) .Returns(fakeCertValidationResult); MockCloudFoundryService.Setup(m => m.GetSsoPrompt(_sut.Target, false)) .ReturnsAsync(fakeSsoPromptResult); Assert.AreEqual(1, _sut.PageNum); await _sut.NavigateToAuthPage(); Assert.AreEqual(1, _sut.PageNum); Assert.IsFalse(_sut.ApiAddressIsValid); Assert.AreEqual($"Unable to establish a connection with {_sut.Target}", _sut.ApiAddressError); }
public async Task RefreshChildren_AddsPlaceholder_WhenAllSpacesAreRemoved() { var fakeInitialSpace = new CloudFoundrySpace("fake space name", "fake space id", _sut.Org); var svm = new SpaceViewModel(fakeInitialSpace, null, null, Services); var fakeNoSpacesResult = new DetailedResult <List <CloudFoundrySpace> >( succeeded: true, content: new List <CloudFoundrySpace>(), // simulate org having lost all spaces before refresh explanation: null, cmdDetails: FakeSuccessCmdResult); MockCloudFoundryService.Setup(mock => mock. GetSpacesForOrgAsync(_sut.Org, true, It.IsAny <int>())) .ReturnsAsync(fakeNoSpacesResult); _sut.Children = new ObservableCollection <TreeViewItemViewModel> { svm }; // simulate org initially having 1 space child Assert.AreEqual(1, _sut.Children.Count); Assert.AreEqual(typeof(SpaceViewModel), _sut.Children[0].GetType()); await _sut.RefreshChildren(); Assert.AreEqual(1, _sut.Children.Count); Assert.AreEqual(typeof(PlaceholderViewModel), _sut.Children[0].GetType()); Assert.AreEqual(OrgViewModel._emptySpacesPlaceholderMsg, _sut.Children[0].DisplayText); }
public async Task FetchChildren_ReturnsListOfOrgs_WithoutUpdatingChildren() { var fakeOrgsList = new List <CloudFoundryOrganization> { new CloudFoundryOrganization("fake org name 1", "fake org id 1", FakeCfInstance), new CloudFoundryOrganization("fake org name 2", "fake org id 2", FakeCfInstance), }; var fakeSuccessResult = new DetailedResult <List <CloudFoundryOrganization> >(succeeded: true, content: fakeOrgsList); MockCloudFoundryService.Setup(mock => mock. GetOrgsForCfInstanceAsync(_sut.CloudFoundryInstance, true, It.IsAny <int>())) .ReturnsAsync(fakeSuccessResult); /* pre-check presence of placeholder */ Assert.AreEqual(1, _sut.Children.Count); Assert.AreEqual(typeof(PlaceholderViewModel), _sut.Children[0].GetType()); var orgs = await _sut.FetchChildren(); Assert.AreEqual(2, orgs.Count); foreach (TreeViewItemViewModel child in orgs) { Assert.AreEqual(_sut, child.Parent); } /* confirm presence of placeholder */ Assert.AreEqual(1, _sut.Children.Count); Assert.AreEqual(typeof(PlaceholderViewModel), _sut.Children[0].GetType()); // property changed events should not be raised Assert.AreEqual(0, _receivedEvents.Count); }
public async Task NavigateToAuthPage_SetsPageNumberTo2_AndSetsSsoEnabledOnTargetToFalse_WhenSsoPromptAbsentFromResponse() { var fakeCertValidationResult = new DetailedResult { Succeeded = true, }; var fakeSsoPromptResult = new DetailedResult <string> { Succeeded = false, FailureType = FailureType.MissingSsoPrompt, }; MockCloudFoundryService.Setup(m => m.TargetApi(_sut.Target, _sut.ProceedWithInvalidCertificate)) .Returns(fakeCertValidationResult); MockCloudFoundryService.Setup(m => m.GetSsoPrompt(_sut.Target, false)) .ReturnsAsync(fakeSsoPromptResult); Assert.AreEqual(1, _sut.PageNum); await _sut.NavigateToAuthPage(); Assert.AreEqual(2, _sut.PageNum); Assert.IsFalse(_sut.SsoEnabledOnTarget); }
public async Task RefreshChildren_AddsPlaceholder_WhenAllOrgsAreRemoved() { var fakeInitialOrg = new CloudFoundryOrganization("fake org name", "fake org id", parentCf: _sut.CloudFoundryInstance); var ovm = new OrgViewModel(fakeInitialOrg, null, null, Services); var fakeEmptyOrgsResult = new DetailedResult <List <CloudFoundryOrganization> >( succeeded: true, content: new List <CloudFoundryOrganization>(), // simulate cf having lost all orgs before refresh explanation: null, cmdDetails: FakeSuccessCmdResult); MockCloudFoundryService.Setup(mock => mock. GetOrgsForCfInstanceAsync(_sut.CloudFoundryInstance, true, It.IsAny <int>())) .ReturnsAsync(fakeEmptyOrgsResult); _sut.Children = new ObservableCollection <TreeViewItemViewModel> { ovm }; // simulate cf initially having 1 org child Assert.AreEqual(1, _sut.Children.Count); Assert.AreEqual(typeof(OrgViewModel), _sut.Children[0].GetType()); await _sut.RefreshChildren(); Assert.AreEqual(1, _sut.Children.Count); Assert.AreEqual(typeof(PlaceholderViewModel), _sut.Children[0].GetType()); Assert.AreEqual(CfInstanceViewModel._emptyOrgsPlaceholderMsg, _sut.Children[0].DisplayText); }
public async Task RefreshChildren_RemovesPlaceholder_WhenEmptyCfGainsChildren() { // simulate cf initially having no org children _sut.Children = new ObservableCollection <TreeViewItemViewModel> { _sut.EmptyPlaceholder }; _sut.HasEmptyPlaceholder = true; var fakeNewOrg = new CloudFoundryOrganization("fake org name", "fake org id", _sut.CloudFoundryInstance); var fakeSuccessfulOrgsResult = new DetailedResult <List <CloudFoundryOrganization> >( succeeded: true, content: new List <CloudFoundryOrganization> { fakeNewOrg, // simulate cf having gained an org child before refresh }, explanation: null, cmdDetails: FakeSuccessCmdResult); MockCloudFoundryService.Setup(mock => mock. GetOrgsForCfInstanceAsync(_sut.CloudFoundryInstance, true, It.IsAny <int>())) .ReturnsAsync(fakeSuccessfulOrgsResult); Assert.AreEqual(1, _sut.Children.Count); Assert.AreEqual(typeof(PlaceholderViewModel), _sut.Children[0].GetType()); Assert.AreEqual(CfInstanceViewModel._emptyOrgsPlaceholderMsg, _sut.Children[0].DisplayText); await _sut.RefreshChildren(); Assert.AreEqual(1, _sut.Children.Count); Assert.AreEqual(typeof(OrgViewModel), _sut.Children[0].GetType()); }
public async Task LoadChildren_CollapsesTreeViewItem_WhenOrgsRequestFails() { var expandedViewModel = new CfInstanceViewModel(FakeCfInstance, null, Services) { IsExpanded = true, }; expandedViewModel.PropertyChanged += (sender, e) => { _receivedEvents.Add(e.PropertyName); }; var fakeFailedResult = new DetailedResult <List <CloudFoundryOrganization> >( succeeded: false, content: null, explanation: "junk", cmdDetails: FakeFailureCmdResult); MockCloudFoundryService.Setup(mock => mock. GetOrgsForCfInstanceAsync(expandedViewModel.CloudFoundryInstance, true, 1)) .ReturnsAsync(fakeFailedResult); Assert.IsTrue(expandedViewModel.IsExpanded); await expandedViewModel.LoadChildren(); Assert.IsFalse(expandedViewModel.IsLoading); Assert.IsFalse(expandedViewModel.IsExpanded); Assert.IsTrue(_receivedEvents.Contains("IsExpanded")); MockErrorDialogService.Verify(mock => mock. DisplayErrorDialog(CfInstanceViewModel._getOrgsFailureMsg, fakeFailedResult.Explanation), Times.Once); }
public async Task FetchChildren_ReturnsListOfApps_WithoutUpdatingChildren() { var fakeAppsList = new List <CloudFoundryApp> { new CloudFoundryApp("fake app name 1", "fake app id 1", FakeCfSpace, null), new CloudFoundryApp("fake app name 2", "fake app id 2", FakeCfSpace, null), }; var fakeAppsResult = new DetailedResult <List <CloudFoundryApp> >( succeeded: true, content: fakeAppsList, explanation: null, cmdDetails: FakeSuccessCmdResult); MockCloudFoundryService.Setup(mock => mock. GetAppsForSpaceAsync(_sut.Space, true, It.IsAny <int>())) .ReturnsAsync(fakeAppsResult); /* pre-check presence of placeholder */ Assert.AreEqual(1, _sut.Children.Count); Assert.AreEqual(typeof(PlaceholderViewModel), _sut.Children[0].GetType()); var apps = await _sut.FetchChildren(); Assert.AreEqual(2, apps.Count); /* confirm presence of placeholder */ Assert.AreEqual(1, _sut.Children.Count); Assert.AreEqual(typeof(PlaceholderViewModel), _sut.Children[0].GetType()); // property changed events should not be raised Assert.AreEqual(0, _receivedEvents.Count); }
public async Task LogIn_ClosesDialog_WhenLoginRequestSucceeds() { MockCloudFoundryService.Setup(mock => mock.LoginWithCredentials(FakeTarget, FakeUsername, FakeSecurePw, _sut.ProceedWithInvalidCertificate)) .ReturnsAsync(new DetailedResult(true, null)); await _sut.LogIn(null); Assert.IsFalse(_sut.HasErrors); MockDialogService.Verify(mock => mock.CloseDialog(It.IsAny <object>(), It.IsAny <bool>()), Times.Once); MockDialogService.Verify(ds => ds.CloseDialog(It.IsAny <object>(), true), Times.Once); }
public async Task DeleteApp_ClearsCfAppValue_AndClosesDialog_WhenDeleteAppAsyncSucceeds(bool deleteRoutes) { MockCloudFoundryService.Setup(m => m.DeleteAppAsync(_fakeCfApp, true, deleteRoutes, 1)).ReturnsAsync(FakeSuccessDetailedResult); Assert.AreEqual(_fakeCfApp, _sut.CfApp); _sut.DeleteRoutes = deleteRoutes; await _sut.DeleteApp(_fakeConfirmationWindow); Assert.IsNull(_sut.CfApp); MockDialogService.Verify(ds => ds.CloseDialog(_fakeConfirmationWindow, true), Times.Once); }
public async Task LogIn_SetsErrorMessage_WhenLoginRequestFails() { const string expectedErrorMessage = "my fake error message"; MockCloudFoundryService.Setup(mock => mock.LoginWithCredentials(FakeTarget, FakeUsername, FakeSecurePw, _sut.ProceedWithInvalidCertificate)) .ReturnsAsync(new DetailedResult(false, expectedErrorMessage)); await _sut.LogIn(null); Assert.IsTrue(_sut.HasErrors); Assert.AreEqual(expectedErrorMessage, _sut.ErrorMessage); MockDialogService.Verify(ds => ds.CloseDialog(It.IsAny <object>(), true), Times.Never); }
public async Task LoadChildren_SetsIsLoadingToFalse_WhenOrgsRequestFails() { var fakeFailedResult = new DetailedResult <List <CloudFoundryOrganization> >(succeeded: false, content: null); MockCloudFoundryService.Setup(mock => mock. GetOrgsForCfInstanceAsync(_sut.CloudFoundryInstance, true, It.IsAny <int>())) .ReturnsAsync(fakeFailedResult); _sut.IsLoading = true; await _sut.LoadChildren(); Assert.IsFalse(_sut.IsLoading); }
public async Task DeleteApp_LogsError_DisplaysError_ClearsCfAppValue_AndClosesDialog_WhenDeleteAppAsyncFails(bool deleteRoutes) { MockCloudFoundryService.Setup(m => m.DeleteAppAsync(_fakeCfApp, true, deleteRoutes, 1)).ReturnsAsync(FakeFailureDetailedResult); Assert.AreEqual(_fakeCfApp, _sut.CfApp); _sut.DeleteRoutes = deleteRoutes; await _sut.DeleteApp(_fakeConfirmationWindow); Assert.IsNull(_sut.CfApp); MockDialogService.Verify(ds => ds.CloseDialog(_fakeConfirmationWindow, true), Times.Once); MockLogger.Verify(m => m.Error(It.Is <string>(s => s.Contains(AppDeletionConfirmationViewModel._deleteAppErrorMsg)), It.Is <string>(s => s == _fakeCfApp.AppName), It.Is <string>(s => s == FakeFailureDetailedResult.ToString())), Times.Once); MockErrorDialogService.Verify(m => m.DisplayErrorDialog(It.Is <string>(s => s.Contains(AppDeletionConfirmationViewModel._deleteAppErrorMsg) && s.Contains(_fakeCfApp.AppName)), It.Is <string>(s => s.Contains(FakeFailureDetailedResult.Explanation))), Times.Once); }
public async Task DeleteApp_LogsError_DisplaysError_ClearsCfAppValue_AndClosesDialog_WhenDeleteAppAsyncThrowsException(bool deleteRoutes) { var fakeExceptionMsg = "something went wrong in DeleteAppAsync ;)"; MockCloudFoundryService.Setup(m => m.DeleteAppAsync(_fakeCfApp, true, deleteRoutes, 1)).Throws(new Exception(fakeExceptionMsg)); Assert.AreEqual(_fakeCfApp, _sut.CfApp); _sut.DeleteRoutes = deleteRoutes; await _sut.DeleteApp(_fakeConfirmationWindow); Assert.IsNull(_sut.CfApp); MockDialogService.Verify(ds => ds.CloseDialog(_fakeConfirmationWindow, true), Times.Once); MockLogger.Verify(m => m.Error(It.Is <string>(s => s.Contains(AppDeletionConfirmationViewModel._deleteAppErrorMsg)), It.Is <string>(s => s == _fakeCfApp.AppName), It.Is <string>(s => s == fakeExceptionMsg)), Times.Once); MockErrorDialogService.Verify(m => m.DisplayErrorDialog(It.Is <string>(title => title.Contains(AppDeletionConfirmationViewModel._deleteAppErrorMsg) && title.Contains(_fakeCfApp.AppName)), It.Is <string>(msg => msg.Contains("Something unexpected happened") && msg.Contains(_fakeCfApp.AppName))), Times.Once); }
public async Task LogIn_SetsConnectionOnTasExplorer_WhenLoginRequestSucceeds() { MockCloudFoundryService.Setup(mock => mock. LoginWithCredentials(FakeTarget, FakeUsername, FakeSecurePw, _sut.ProceedWithInvalidCertificate)) .ReturnsAsync(new DetailedResult(true, null)); MockTasExplorerViewModel.Setup(m => m.SetConnection(It.IsAny <CloudFoundryInstance>())).Verifiable(); await _sut.LogIn(null); Assert.IsFalse(_sut.HasErrors); MockDialogService.Verify(mock => mock.CloseDialog(It.IsAny <object>(), It.IsAny <bool>()), Times.Once); MockDialogService.Verify(ds => ds.CloseDialog(It.IsAny <object>(), true), Times.Once); MockTasExplorerViewModel.Verify(m => m.SetConnection(It.Is <CloudFoundryInstance>(cf => cf.ApiAddress == FakeTarget)), Times.Once); }
public async Task NavigateToAuthPage_SetsCertificateInvalidToTrue_WhenCertValidationFails() { var fakeCertValidationResult = new DetailedResult { Succeeded = false, FailureType = FailureType.InvalidCertificate, }; MockCloudFoundryService.Setup(m => m.TargetApi(_sut.Target, _sut.ProceedWithInvalidCertificate)) .Returns(fakeCertValidationResult); Assert.AreEqual(1, _sut.PageNum); await _sut.NavigateToAuthPage(); Assert.AreEqual(1, _sut.PageNum); Assert.IsTrue(_sut.CertificateInvalid); }
public async Task LoadChildren_SetsIsLoadingToFalse_WhenComplete() { var fakeNoSpacesResponse = new DetailedResult <List <CloudFoundrySpace> >( content: EmptyListOfSpaces, succeeded: true, explanation: null, cmdDetails: FakeSuccessCmdResult); MockCloudFoundryService.Setup(mock => mock. GetSpacesForOrgAsync(_sut.Org, true, It.IsAny <int>())) .ReturnsAsync(fakeNoSpacesResponse); _sut.IsLoading = true; await _sut.LoadChildren(); Assert.IsFalse(_sut.IsLoading); }
public async Task LoginWithPasscodeAsync_SetsErrorMessage_WhenLoginAttemptFails() { const string fakePasscode = "fake sso passcode!"; MockCloudFoundryService.Setup(m => m.LoginWithSsoPasscode(_sut.ApiAddress, fakePasscode)) .ReturnsAsync(FakeFailureDetailedResult); _sut.Passcode = fakePasscode; Assert.IsFalse(_sut.HasErrors); Assert.IsNull(_sut.ErrorMessage); await _sut.LoginWithPasscodeAsync(); Assert.IsTrue(_sut.HasErrors); Assert.IsNotNull(_sut.ErrorMessage); Assert.AreEqual(FakeFailureDetailedResult.Explanation, _sut.ErrorMessage); }
public async Task LoadChildren_UpdatesAllSpaces() { var initialSpacesList = new System.Collections.ObjectModel.ObservableCollection <TreeViewItemViewModel> { new SpaceViewModel(new CloudFoundrySpace("initial space 1", "initial space 1 guid", null), null, null, Services), new SpaceViewModel(new CloudFoundrySpace("initial space 2", "initial space 2 guid", null), null, null, Services), new SpaceViewModel(new CloudFoundrySpace("initial space 3", "initial space 3 guid", null), null, null, Services), }; var newSpacesList = new List <CloudFoundrySpace> { new CloudFoundrySpace("initial space 1", "initial space 1 guid", null), new CloudFoundrySpace("initial space 2", "initial space 2 guid", null), }; var fakeSucccessResponse = new DetailedResult <List <CloudFoundrySpace> >( content: newSpacesList, succeeded: true, explanation: null, cmdDetails: FakeSuccessCmdResult); _sut.Children = initialSpacesList; /* erase record of initial "Children" event */ _receivedEvents.Clear(); MockCloudFoundryService.Setup(mock => mock. GetSpacesForOrgAsync(It.IsAny <CloudFoundryOrganization>(), true, It.IsAny <int>())) .ReturnsAsync(fakeSucccessResponse); Assert.AreEqual(initialSpacesList.Count, _sut.Children.Count); await _sut.LoadChildren(); Assert.AreEqual(newSpacesList.Count, _sut.Children.Count); foreach (TreeViewItemViewModel child in _sut.Children) { Assert.AreEqual(_sut, child.Parent); } Assert.AreEqual(1, _receivedEvents.Count); Assert.AreEqual("Children", _receivedEvents[0]); Assert.IsFalse(_sut.HasEmptyPlaceholder); }
public async Task LoadChildren_UpdatesAllOrgs() { var initialOrgsList = new System.Collections.ObjectModel.ObservableCollection <TreeViewItemViewModel> { new OrgViewModel(new CloudFoundryOrganization("initial org 1", "initial org 1 guid", null), null, null, Services), new OrgViewModel(new CloudFoundryOrganization("initial org 2", "initial org 2 guid", null), null, null, Services), new OrgViewModel(new CloudFoundryOrganization("initial org 3", "initial org 3 guid", null), null, null, Services), }; var newOrgsList = new List <CloudFoundryOrganization> { new CloudFoundryOrganization("initial org 1", "initial org 1 guid", null), new CloudFoundryOrganization("initial org 2", "initial org 2 guid", null), }; var fakeSuccessResult = new DetailedResult <List <CloudFoundryOrganization> >(succeeded: true, content: newOrgsList); _sut.Children = initialOrgsList; /* erase record of initial "Children" event */ _receivedEvents.Clear(); MockCloudFoundryService.Setup(mock => mock. GetOrgsForCfInstanceAsync(_sut.CloudFoundryInstance, true, It.IsAny <int>())) .ReturnsAsync(fakeSuccessResult); Assert.AreEqual(initialOrgsList.Count, _sut.Children.Count); await _sut.LoadChildren(); Assert.AreEqual(newOrgsList.Count, _sut.Children.Count); foreach (TreeViewItemViewModel child in _sut.Children) { Assert.AreEqual(_sut, child.Parent); } Assert.AreEqual(1, _receivedEvents.Count); Assert.AreEqual("Children", _receivedEvents[0]); Assert.IsFalse(_sut.HasEmptyPlaceholder); }
public async Task RefreshChildren_UpdatesAppState_ForAllChildren() { var initialState1 = "INITIAL_FAKE_STATE"; var initialState2 = "INITIAL_JUNK_STATE"; var initialState3 = "INITIAL_BOGUS_STATE"; var fakeInitialApp1 = new CloudFoundryApp("fakeApp1", "junk", _sut.Space, initialState1); var fakeInitialApp2 = new CloudFoundryApp("fakeApp2", "junk", _sut.Space, initialState2); var fakeInitialApp3 = new CloudFoundryApp("fakeApp3", "junk", _sut.Space, initialState3); var fakeFreshApp1 = new CloudFoundryApp("fakeApp1", "junk", _sut.Space, initialState1); var fakeFreshApp2 = new CloudFoundryApp("fakeApp2", "junk", _sut.Space, "NEW_FRESH_STATE"); // simulate state change var fakeFreshApp3 = new CloudFoundryApp("fakeApp3", "junk", _sut.Space, "NEW_COOL_STATE"); // simulate state change _sut.Children = new ObservableCollection <TreeViewItemViewModel> { new AppViewModel(fakeInitialApp1, Services), new AppViewModel(fakeInitialApp2, Services), new AppViewModel(fakeInitialApp3, Services), }; var fakeSuccessfulAppsResult = new DetailedResult <List <CloudFoundryApp> >( succeeded: true, content: new List <CloudFoundryApp> { fakeFreshApp1, fakeFreshApp2, fakeFreshApp3, }, explanation: null, cmdDetails: FakeSuccessCmdResult); MockCloudFoundryService.Setup(mock => mock. GetAppsForSpaceAsync(_sut.Space, true, It.IsAny <int>())) .ReturnsAsync(fakeSuccessfulAppsResult); await _sut.RefreshChildren(); Assert.AreEqual(fakeInitialApp1.State, fakeFreshApp1.State); Assert.AreNotEqual(fakeInitialApp2.State, fakeFreshApp2.State); Assert.AreNotEqual(fakeInitialApp3.State, fakeFreshApp3.State); }
public async Task FetchChildren_DisplaysErrorDialog_WhenOrgsRequestFails() { var fakeFailedResult = new DetailedResult <List <CloudFoundryOrganization> >( succeeded: false, content: null, explanation: "junk", cmdDetails: FakeFailureCmdResult); MockCloudFoundryService.Setup(mock => mock. GetOrgsForCfInstanceAsync(_sut.CloudFoundryInstance, true, It.IsAny <int>())) .ReturnsAsync(fakeFailedResult); var result = await _sut.FetchChildren(); CollectionAssert.AreEqual(EmptyListOfOrgs, result); MockErrorDialogService.Verify(mock => mock. DisplayErrorDialog(CfInstanceViewModel._getOrgsFailureMsg, fakeFailedResult.Explanation), Times.Once); }
public async Task LoadChildren_DisplaysErrorDialog_WhenSpacesRequestFails() { var fakeFailedResult = new DetailedResult <List <CloudFoundrySpace> >( succeeded: false, content: null, explanation: "junk", cmdDetails: FakeFailureCmdResult); MockCloudFoundryService.Setup(mock => mock. GetSpacesForOrgAsync(_sut.Org, true, It.IsAny <int>())) .ReturnsAsync(fakeFailedResult); await _sut.LoadChildren(); Assert.IsFalse(_sut.IsLoading); MockErrorDialogService.Verify(mock => mock. DisplayErrorDialog(OrgViewModel._getSpacesFailureMsg, fakeFailedResult.Explanation), Times.Once); }
public async Task LoadChildren_AssignsNoOrgsPlaceholder_WhenThereAreNoOrgs() { var fakeNoOrgsResult = new DetailedResult <List <CloudFoundryOrganization> >(succeeded: true, content: EmptyListOfOrgs); MockCloudFoundryService.Setup(mock => mock. GetOrgsForCfInstanceAsync(_sut.CloudFoundryInstance, true, It.IsAny <int>())) .ReturnsAsync(fakeNoOrgsResult); await _sut.LoadChildren(); Assert.AreEqual(1, _sut.Children.Count); Assert.AreEqual(typeof(PlaceholderViewModel), _sut.Children[0].GetType()); Assert.AreEqual(CfInstanceViewModel._emptyOrgsPlaceholderMsg, _sut.Children[0].DisplayText); Assert.AreEqual(_sut.EmptyPlaceholder, _sut.Children[0]); Assert.IsTrue(_sut.HasEmptyPlaceholder); Assert.AreEqual(1, _receivedEvents.Count); Assert.AreEqual("Children", _receivedEvents[0]); }
public async Task OpenSsoDialog_ShowsSsoDialog_WhenSsoPromptRequestSucceeds() { var fakeTargetApiAddress = "junk"; var fakeSsoPrompt = "some prompt that shows sso url"; var fakeSsoPromptResponse = new DetailedResult <string> { Succeeded = true, Content = fakeSsoPrompt, }; _sut.Target = fakeTargetApiAddress; MockCloudFoundryService.Setup(m => m.GetSsoPrompt(fakeTargetApiAddress, false)) .ReturnsAsync(fakeSsoPromptResponse); await _sut.OpenSsoDialog(); MockSsoViewModel.VerifySet(m => m.ApiAddress = fakeTargetApiAddress); MockSsoViewModel.Verify(m => m.ShowWithPrompt(fakeSsoPrompt, _sut), Times.Once); }
public async Task LoadChildren_UpdatesAllApps() { var initialAppsList = new System.Collections.ObjectModel.ObservableCollection <TreeViewItemViewModel> { new AppViewModel(new CloudFoundryApp("initial app 1", null, null, null), Services), new AppViewModel(new CloudFoundryApp("initial app 2", null, null, null), Services), new AppViewModel(new CloudFoundryApp("initial app 3", null, null, null), Services), }; var newAppsList = new List <CloudFoundryApp> { new CloudFoundryApp("initial app 1", null, null, null), new CloudFoundryApp("initial app 2", null, null, null), }; var fakeAppsResult = new DetailedResult <List <CloudFoundryApp> >( succeeded: true, content: newAppsList, explanation: null, cmdDetails: FakeSuccessCmdResult); _sut.Children = initialAppsList; /* erase record of initial "Children" event */ _receivedEvents.Clear(); MockCloudFoundryService.Setup(mock => mock. GetAppsForSpaceAsync(_sut.Space, true, It.IsAny <int>())) .ReturnsAsync(fakeAppsResult); Assert.AreEqual(initialAppsList.Count, _sut.Children.Count); await _sut.LoadChildren(); Assert.AreEqual(newAppsList.Count, _sut.Children.Count); Assert.AreEqual(1, _receivedEvents.Count); Assert.AreEqual("Children", _receivedEvents[0]); Assert.IsFalse(_sut.HasEmptyPlaceholder); }
public async Task NavigateToAuthPage_SetsPageNumberTo2_AndSetsSsoEnabledOnTargetToTrue_WhenSsoPromptSuccessfullyRetrieved() { var fakeSsoPrompt = "junk"; var fakeSsoPromptResult = new DetailedResult <string> { Succeeded = true, Content = fakeSsoPrompt, }; MockCloudFoundryService.Setup(m => m.TargetApi(_sut.Target, _sut.ProceedWithInvalidCertificate)) .Returns(FakeSuccessDetailedResult); MockCloudFoundryService.Setup(m => m.GetSsoPrompt(_sut.Target, false)) .ReturnsAsync(fakeSsoPromptResult); Assert.AreEqual(1, _sut.PageNum); await _sut.NavigateToAuthPage(); Assert.AreEqual(2, _sut.PageNum); Assert.IsTrue(_sut.SsoEnabledOnTarget); }
public async Task FetchChildren_ReturnsListOfSpaces_WithoutUpdatingChildren() { List <CloudFoundrySpace> fakeSpacesList = new List <CloudFoundrySpace> { new CloudFoundrySpace("fake space name 1", "fake space id 1", FakeCfOrg), new CloudFoundrySpace("fake space name 2", "fake space id 2", FakeCfOrg), }; var fakeSuccessResponse = new DetailedResult <List <CloudFoundrySpace> >( content: fakeSpacesList, succeeded: true, explanation: null, cmdDetails: FakeSuccessCmdResult); MockCloudFoundryService.Setup(mock => mock. GetSpacesForOrgAsync(FakeCfOrg, true, It.IsAny <int>())) .ReturnsAsync(fakeSuccessResponse); /* pre-check presence of placeholder */ Assert.AreEqual(1, _sut.Children.Count); Assert.AreEqual(typeof(PlaceholderViewModel), _sut.Children[0].GetType()); var spaces = await _sut.FetchChildren(); Assert.AreEqual(2, spaces.Count); foreach (TreeViewItemViewModel child in spaces) { Assert.AreEqual(_sut, child.Parent); } /* confirm presence of placeholder */ Assert.AreEqual(1, _sut.Children.Count); Assert.AreEqual(typeof(PlaceholderViewModel), _sut.Children[0].GetType()); // property changed events should not be raised Assert.AreEqual(0, _receivedEvents.Count); }
public async Task LoginWithPasscodeAsync_SetsConnection_AndClosesSsoDialog_AndClosesLoginDialog_WhenLoginAttemptSucceeds() { const string fakePasscode = "fake sso passcode!"; object fakeSsoDialogWindow = new object(); var fakeParentViewModel = MockLoginViewModel.Object; MockCloudFoundryService.Setup(m => m.LoginWithSsoPasscode(_sut.ApiAddress, fakePasscode)) .ReturnsAsync(FakeSuccessDetailedResult); _sut.Passcode = fakePasscode; _sut._loginViewModel = fakeParentViewModel; Assert.IsFalse(_sut.HasErrors); Assert.IsNull(_sut.ErrorMessage); await _sut.LoginWithPasscodeAsync(fakeSsoDialogWindow); Assert.IsFalse(_sut.HasErrors); Assert.IsNull(_sut.ErrorMessage); MockDialogService.Verify(m => m.CloseDialog(fakeSsoDialogWindow, true), Times.Once); MockLoginViewModel.Verify(m => m.SetConnection(), Times.Once); MockLoginViewModel.Verify(m => m.CloseDialog(), Times.Once); }