Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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);
        }
Exemple #6
0
        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);
        }
Exemple #7
0
        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());
        }
Exemple #8
0
        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);
        }
Exemple #9
0
        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);
        }
Exemple #10
0
        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);
        }
Exemple #12
0
        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);
        }
Exemple #13
0
        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);
        }
Exemple #16
0
        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);
        }
Exemple #17
0
        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);
        }
Exemple #18
0
        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);
        }
Exemple #19
0
        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);
        }
Exemple #20
0
        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);
        }
Exemple #21
0
        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);
        }
Exemple #22
0
        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);
        }
Exemple #23
0
        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);
        }
Exemple #24
0
        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);
        }
Exemple #25
0
        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]);
        }
Exemple #26
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);
        }
Exemple #27
0
        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);
        }
Exemple #28
0
        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);
        }
Exemple #29
0
        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);
        }
Exemple #30
0
        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);
        }