public void Should_NotDownloadInstalledUpdates_When_DownloadUpdates() { var session = new UpdateSessionFake(true); var update1 = new UpdateFake("update1", true); update1.IsInstalled = false; update1.IsDownloaded = false; var update2 = new UpdateFake("update2", true); update2.IsInstalled = false; update2.IsDownloaded = false; session.SearcherMock.FakeSearchResult = CommonMocks.GetSearchResult(ToUpdateCollection(update1, update2)); using (WuApiController wu = new WuApiController(session, UpdateCollectionFactory, SystemInfo)) { wu.AutoAcceptEulas = true; wu.BeginSearchUpdates(); WaitForStateChange(wu, WuStateId.SearchCompleted); update1.IsInstalled = true; wu.BeginDownloadUpdates(); WaitForStateChange(wu, WuStateId.DownloadCompleted); Assert.AreEqual(wu.GetAvailableUpdates().Count, 2); Assert.IsNotNull(wu.GetAvailableUpdates().SingleOrDefault(u => u.ID.Equals("update1") && !u.IsDownloaded && u.IsInstalled)); Assert.IsNotNull(wu.GetAvailableUpdates().SingleOrDefault(u => u.ID.Equals("update2") && u.IsDownloaded && !u.IsInstalled)); } }
public void Should_EnterDownloadFailedState_When_DownloadFailed() { var session = new UpdateSessionFake(true); session.SearcherMock.FakeSearchResult = CommonMocks.GetSearchResult(ToUpdateCollection(new UpdateFake("update1", true))); List <IDownloadResult> results = new List <IDownloadResult>(); results.Add(CommonMocks.GetDownloadResult(OperationResultCode.orcFailed)); results.Add(CommonMocks.GetDownloadResult(OperationResultCode.orcAborted)); results.Add(CommonMocks.GetDownloadResult(OperationResultCode.orcNotStarted)); foreach (var result in results) { session.DownloaderMock.FakeDownloadResult = result; using (WuApiController wu = new WuApiController(session, UpdateCollectionFactory, SystemInfo)) { wu.AutoAcceptEulas = true; wu.BeginSearchUpdates(); WaitForStateChange(wu, WuStateId.SearchCompleted); wu.BeginDownloadUpdates(); WaitForStateChange(wu, WuStateId.DownloadFailed); } } }
public void Should_AcceptEula_When_EulaIsNotAccepted() { UpdateSessionFake session = new UpdateSessionFake(true); var update1 = new UpdateFake("update1", true); var update2 = new UpdateFake("update2", true); session.SearcherMock.FakeSearchResult = CommonMocks.GetSearchResult(ToUpdateCollection(update1, update2)); update1.EulaAccepted = false; update1.Identity = CommonMocks.GetUpdateIdentity("update1Id"); update2.EulaAccepted = false; update2.Identity = CommonMocks.GetUpdateIdentity("update2Id"); using (WuApiController wu = new WuApiController(session, UpdateCollectionFactory, SystemInfo)) { wu.AutoAcceptEulas = false; wu.BeginSearchUpdates(); WaitForStateChange(wu, WuStateId.SearchCompleted); var updates = wu.GetAvailableUpdates(); Assert.IsNotNull(updates.Single(u => u.ID.Equals("update1Id"))); Assert.IsNotNull(updates.Single(u => u.ID.Equals("update2Id"))); wu.AcceptEula(updates.Single(u => u.ID.Equals("update1Id"))); Assert.IsTrue(wu.GetAvailableUpdates().Single(u => u.ID.Equals("update1Id")).EulaAccepted); wu.AcceptEula(updates.Single(u => u.ID.Equals("update2Id")).ID); Assert.IsTrue(wu.GetAvailableUpdates().Single(u => u.ID.Equals("update2Id")).EulaAccepted); } }
public void Should_NotEnterDonwloadingState_When_NoUpdatesAvailable() { var session = new UpdateSessionFake(true); var update1 = new UpdateFake("update1", true); update1.IsInstalled = true; update1.IsDownloaded = false; var update2 = new UpdateFake("update2", true); update2.IsDownloaded = true; using (WuApiController wu = new WuApiController(session, UpdateCollectionFactory, SystemInfo)) { try { wu.BeginDownloadUpdates(); // nerver searched for updates, no updates should be available Assert.Fail("exception expected"); } catch (InvalidStateTransitionException) { } session.SearcherMock.FakeSearchResult = CommonMocks.GetSearchResult(ToUpdateCollection(update1, update2)); wu.BeginSearchUpdates(); WaitForStateChange(wu, WuStateId.SearchCompleted); try { wu.BeginDownloadUpdates(); // available updates are already installed or downloaded Assert.Fail("exception expected"); } catch (InvalidStateTransitionException) { } } }
public void Should_NotAcceptEula_When_UpdateIsNotSelected() { UpdateSessionFake session = new UpdateSessionFake(true); var update1 = new UpdateFake("update1", false); var update2 = new UpdateFake("update2", false); session.SearcherMock.FakeSearchResult = CommonMocks.GetSearchResult(ToUpdateCollection(update1, update2)); update1.EulaAccepted = false; update2.EulaAccepted = false; using (WuApiController wu = new WuApiController(session, UpdateCollectionFactory, SystemInfo)) { wu.AutoAcceptEulas = true; wu.AutoSelectUpdates = false; wu.BeginSearchUpdates(); WaitForStateChange(wu, WuStateId.SearchCompleted); wu.SelectUpdate(update2.Identity.UpdateID); wu.BeginDownloadUpdates(); WaitForStateChange(wu, WuStateId.DownloadCompleted); var updates = wu.GetAvailableUpdates(); Assert.IsFalse(updates.Single(u => u.ID.Equals("update1")).SelectedForInstallation); Assert.IsFalse(updates.Single(u => u.ID.Equals("update1")).EulaAccepted); Assert.IsTrue(updates.Single(u => u.ID.Equals("update2")).EulaAccepted); Assert.IsTrue(updates.Single(u => u.ID.Equals("update2")).SelectedForInstallation); } }
public void Should_AcceptEulas_When_BeginDownloadingAndAutoAcceptEnabled() { var session = new UpdateSessionFake(true); var update1 = new UpdateFake("update1", true); update1.EulaAccepted = false; var update2 = new UpdateFake("update2", true); update2.EulaAccepted = true; session.SearcherMock.FakeSearchResult = CommonMocks.GetSearchResult(ToUpdateCollection(update1, update2)); using (WuApiController wu = new WuApiController(session, UpdateCollectionFactory, SystemInfo)) { wu.AutoAcceptEulas = true; wu.BeginSearchUpdates(); WaitForStateChange(wu, WuStateId.SearchCompleted); wu.BeginDownloadUpdates(); WaitForStateChange(wu, WuStateId.DownloadCompleted); Assert.IsTrue(update1.EulaAccepted); Assert.IsTrue(update2.EulaAccepted); Assert.AreEqual(wu.GetAvailableUpdates().Count, 2); Assert.IsTrue(wu.GetAvailableUpdates().All(u => u.IsDownloaded && u.EulaAccepted)); } }
public void Should_ThrowException_When_RequestedStateChangeIsInvalid() { UpdateSessionFake session = new UpdateSessionFake(true); using (WuApiController wu = new WuApiController(session, UpdateCollectionFactory, SystemInfo)) { wu.AbortDownloadUpdates(); } }
public void Should_ThrowException_When_UnselectUnkownUpdate() { UpdateSessionFake session = new UpdateSessionFake(true); using (WuApiController wu = new WuApiController(session, UpdateCollectionFactory, SystemInfo)) { wu.SelectUpdate("update"); } }
public void Should_TestPreConditions_When_BeforeStateChange() { UpdateSessionFake session = new UpdateSessionFake(true); using (WuApiController wu = new WuApiController(session, UpdateCollectionFactory, SystemInfo)) { wu.BeginSearchUpdates(); WaitForStateChange(wu, WuStateId.SearchCompleted); wu.BeginInstallUpdates(); } }
public void Should_ReturnDefaults_When_CreateWuApiController() { var session = new UpdateSessionFake(true); using (WuApiController wu = new WuApiController(session, UpdateCollectionFactory, SystemInfo)) { Assert.IsFalse(wu.AutoAcceptEulas); Assert.IsTrue(wu.AutoSelectUpdates); Assert.IsFalse(wu.GetAvailableUpdates().Any()); } }
public void Should_EnterTimeoutState_When_SearchTimeRunsOut() { var session = new UpdateSessionFake(true); session.SearcherMock.FakeSearchTimeMs = 10000; WuApiController Wu = new WuApiController(session, UpdateCollectionFactory, SystemInfo); Wu.BeginSearchUpdates(1); WaitForStateChange(Wu, WuStateId.SearchFailed); }
public void Should_EnterSearchCompletedState_When_SearchCompleted() { var session = new UpdateSessionFake(true); session.SearcherMock.FakeSearchTimeMs = 1; WuApiController wu = new WuApiController(session, UpdateCollectionFactory, SystemInfo); wu.BeginSearchUpdates(); WaitForStateChange(wu, WuStateId.SearchCompleted); }
public void Should_EnterSearchFailedState_When_AbortSearch() { var session = new UpdateSessionFake(true); session.SearcherMock.FakeSearchTimeMs = 10000; using (WuApiController wu = new WuApiController(session, UpdateCollectionFactory, SystemInfo)) { wu.BeginSearchUpdates(); Assert.AreEqual(WuStateId.SearchFailed, wu.AbortSearchUpdates()); Assert.AreEqual(WuStateId.SearchFailed, wu.GetWuStatus().StateId); } }
public void Should_NotEnterDownloadingState_When_InstallerRequiresReboot() { var session = new UpdateSessionFake(true); session.SearcherMock.FakeSearchResult = CommonMocks.GetSearchResult(ToUpdateCollection(new UpdateFake("update1", true))); session.InstallerMock.RebootRequiredBeforeInstallation = true; using (WuApiController wu = new WuApiController(session, UpdateCollectionFactory, SystemInfo)) { wu.BeginSearchUpdates(); WaitForStateChange(wu, WuStateId.SearchCompleted); wu.BeginInstallUpdates(); } }
public void Should_NotInstallAlreadyInstalledUpdates_When_BeginInstallUpdates() { var session = new UpdateSessionFake(true); var update1 = new UpdateFake("update1", true); update1.IsInstalled = true; session.SearcherMock.FakeSearchResult = CommonMocks.GetSearchResult(ToUpdateCollection(update1)); using (WuApiController wu = new WuApiController(session, UpdateCollectionFactory, SystemInfo)) { wu.BeginSearchUpdates(); WaitForStateChange(wu, WuStateId.SearchCompleted); wu.BeginInstallUpdates(); } }
public void Should_EnterDownloadCompletedState_When_DownloadCompleted() { var session = new UpdateSessionFake(true); session.SearcherMock.FakeSearchResult = CommonMocks.GetSearchResult(ToUpdateCollection(new UpdateFake("update1", true))); using (WuApiController wu = new WuApiController(session, UpdateCollectionFactory, SystemInfo)) { wu.AutoAcceptEulas = true; wu.BeginSearchUpdates(); WaitForStateChange(wu, WuStateId.SearchCompleted); wu.BeginDownloadUpdates(); WaitForStateChange(wu, WuStateId.DownloadCompleted); } }
public void Should_ThrowException_When_SelectUnkownUpdate() { UpdateSessionFake session = new UpdateSessionFake(true); var update1 = new UpdateFake("update1", false); session.SearcherMock.FakeSearchResult = CommonMocks.GetSearchResult(ToUpdateCollection(update1)); using (WuApiController wu = new WuApiController(session, UpdateCollectionFactory, SystemInfo)) { wu.BeginSearchUpdates(); WaitForStateChange(wu, WuStateId.SearchCompleted); wu.SelectUpdate("update2"); } }
public void Should_MarkUpdateAsSelected_When_SelectUpdate() { UpdateSessionFake session = new UpdateSessionFake(true); var update1 = new UpdateFake("update1", false); session.SearcherMock.FakeSearchResult = CommonMocks.GetSearchResult(ToUpdateCollection(update1)); using (WuApiController wu = new WuApiController(session, UpdateCollectionFactory, SystemInfo)) { wu.BeginSearchUpdates(); WaitForStateChange(wu, WuStateId.SearchCompleted); wu.SelectUpdate("update1"); Assert.IsTrue(wu.GetAvailableUpdates().Single().SelectedForInstallation); } }
public void Should_ReturnChangedSettings_When_ChangingSettings() { var session = new UpdateSessionFake(true); using (WuApiController wu = new WuApiController(session, UpdateCollectionFactory, SystemInfo)) { var autoAccept = wu.AutoAcceptEulas; var autoSelect = wu.AutoSelectUpdates; wu.AutoAcceptEulas = !autoAccept; wu.AutoSelectUpdates = !autoSelect; Assert.AreEqual(!autoAccept, wu.AutoAcceptEulas); Assert.AreEqual(!autoSelect, wu.AutoSelectUpdates); } }
public void Should_FireStateChangedEvent_When_StateHasChanged() { var session = new UpdateSessionFake(true); using (WuApiController wu = new WuApiController(session, UpdateCollectionFactory, SystemInfo)) { bool validEventState = false; WuStateId oldStateExpected = WuStateId.Searching; WuStateId newStateExpected = WuStateId.SearchCompleted; wu.OnStateChanged += (sender, args) => validEventState = (args.OldState == oldStateExpected && args.NewState == newStateExpected) ? true : false; wu.BeginSearchUpdates(); WaitForStateChange(wu, WuStateId.SearchCompleted); Assert.IsTrue(validEventState); } }
public void Should_UpdateSetProgressDescription_When_BeginSearch() { UpdateSessionFake session = new UpdateSessionFake(true); UpdateFake update = new UpdateFake("update1", true); session.SearcherMock.FakeSearchResult = CommonMocks.GetSearchResult(ToUpdateCollection(update)); session.SearcherMock.FakeSearchTimeMs = 10000; using (WuApiController wu = new WuApiController(session, UpdateCollectionFactory, SystemInfo)) { wu.BeginSearchUpdates(); Assert.IsNotNull(wu.GetWuStatus().Progress); Assert.IsNull(wu.GetWuStatus().Progress.Count); wu.AbortSearchUpdates(); } }
public void Should_EnterDownloadFailedState_When_AbortDownload() { var session = new UpdateSessionFake(true); session.SearcherMock.FakeSearchResult = CommonMocks.GetSearchResult(ToUpdateCollection(new UpdateFake("update1", true))); session.DownloaderMock.FakeDownloadTimeMs = 10000; using (WuApiController wu = new WuApiController(session, UpdateCollectionFactory, SystemInfo)) { wu.AutoAcceptEulas = true; wu.BeginSearchUpdates(); WaitForStateChange(wu, WuStateId.SearchCompleted); wu.BeginDownloadUpdates(); Assert.AreEqual(WuStateId.DownloadFailed, wu.AbortDownloadUpdates()); Assert.AreEqual(WuStateId.DownloadFailed, wu.GetWuStatus().StateId); } }
public void Should_SkipInstalledUpdates_When_SearchCompleted() { UpdateFake update = new UpdateFake("update1"); update.IsInstalled = true; IUpdateCollection updateCollection = ToUpdateCollection(update); var session = new UpdateSessionFake(true); session.SearcherMock.FakeSearchResult = CommonMocks.GetSearchResult(updateCollection); using (WuApiController wu = new WuApiController(session, UpdateCollectionFactory, SystemInfo)) { wu.BeginSearchUpdates(); WaitForStateChange(wu, WuStateId.SearchCompleted); Assert.IsTrue(wu.GetAvailableUpdates().Count == 0); } }
public void Should_ThrowException_When_AcceptEulaOfUnkownUpdate() { UpdateSessionFake session = new UpdateSessionFake(true); var update1 = new UpdateFake("update1", true); session.SearcherMock.FakeSearchResult = CommonMocks.GetSearchResult(ToUpdateCollection(update1)); update1.EulaAccepted = true; update1.Identity = CommonMocks.GetUpdateIdentity("update1Id"); using (WuApiController wu = new WuApiController(session, UpdateCollectionFactory, SystemInfo)) { wu.AutoAcceptEulas = false; wu.BeginSearchUpdates(); WaitForStateChange(wu, WuStateId.SearchCompleted); wu.AcceptEula("update2Id"); } }
public void Should_NotEnterDownloadingState_When_NotEnoughFreeSpaceAvailable() { var system = MoqFactory.Create <ISystemInfo>(MockBehavior.Loose); int freespace = 100; system.Setup(s => s.GetFreeSpace()).Returns(freespace); system.Setup(s => s.GetFQDN()).Returns("fqdn"); system.Setup(s => s.GetOperatingSystemName()).Returns("osname"); system.Setup(s => s.GetWuServer()).Returns("update server"); system.Setup(s => s.GetTargetGroup()).Returns("target group"); UpdateFake update = new UpdateFake("update1"); update.IsMandatory = true; update.EulaAccepted = true; update.MaxDownloadSize = freespace; UpdateFake update2 = new UpdateFake("update2"); update2.IsMandatory = true; update2.EulaAccepted = true; update2.RecommendedHardDiskSpace = 10; IUpdateCollection updateCollection = ToUpdateCollection(update, update2); var session = new UpdateSessionFake(true); session.SearcherMock.FakeSearchResult = CommonMocks.GetSearchResult(updateCollection); WuApiController wu = new WuApiController(session, UpdateCollectionFactory, system.Object); wu.BeginSearchUpdates(); WaitForStateChange(wu, WuStateId.SearchCompleted); try { wu.BeginDownloadUpdates(); Assert.Fail("exception expected"); } catch (InvalidStateTransitionException e) { Assert.IsTrue(e.Message.Contains("free space")); Assert.IsTrue(wu.GetWuStatus().Equals(WuStateId.SearchCompleted)); } }
public void Should_EnterRebootRequiredState_When_UpdateInstallationRequiresReboot() { var session = new UpdateSessionFake(true); var update = new UpdateFake("update1", true); update.IsDownloaded = true; session.SearcherMock.FakeSearchResult = CommonMocks.GetSearchResult(ToUpdateCollection(update)); session.InstallerMock.FakeInstallResult = CommonMocks.GetInstallationResult(OperationResultCode.orcSucceeded, 0, true); using (WuApiController wu = new WuApiController(session, UpdateCollectionFactory, SystemInfo)) { wu.AutoAcceptEulas = true; wu.BeginSearchUpdates(); WaitForStateChange(wu, WuStateId.SearchCompleted); wu.BeginInstallUpdates(); WaitForStateChange(wu, WuStateId.RebootRequired); } }
public void Should_EnterDownloadFailedState_When_DownloadTimeRunsOut() { UpdateFake update = new UpdateFake("update1", true); IUpdateCollection updateCollection = ToUpdateCollection(update); var session = new UpdateSessionFake(true); session.SearcherMock.FakeSearchResult = CommonMocks.GetSearchResult(updateCollection); session.DownloaderMock.FakeDownloadTimeMs = 10000; using (WuApiController wu = new WuApiController(session, UpdateCollectionFactory, SystemInfo)) { wu.AutoAcceptEulas = true; wu.BeginSearchUpdates(); WaitForStateChange(wu, WuStateId.SearchCompleted); wu.BeginDownloadUpdates(1); WaitForStateChange(wu, WuStateId.DownloadFailed, 2000); Assert.IsTrue(wu.GetWuStatus().Description.Contains("Timeout")); } }
public void Should_ThrowException_When_TimeoutValueIsToHigh() { UpdateSessionFake session = new UpdateSessionFake(true); session.SearcherMock.FakeSearchResult = CommonMocks.GetSearchResult(ToUpdateCollection(new UpdateFake("update1", true))); int max = int.MaxValue / 1000; int outOfRange = max + 1; using (WuApiController wu = new WuApiController(session, UpdateCollectionFactory, SystemInfo)) { wu.AutoAcceptEulas = true; try { wu.BeginSearchUpdates(outOfRange); Assert.Fail("exception expected"); } catch (ArgumentOutOfRangeException) { } wu.BeginSearchUpdates(max); WaitForStateChange(wu, WuStateId.SearchCompleted); try { wu.BeginDownloadUpdates(outOfRange); Assert.Fail("exception expected"); } catch (ArgumentOutOfRangeException) { } wu.BeginDownloadUpdates(max); WaitForStateChange(wu, WuStateId.DownloadCompleted); try { wu.BeginInstallUpdates(outOfRange); Assert.Fail("exception expected"); } catch (ArgumentOutOfRangeException) { } wu.BeginInstallUpdates(max); WaitForStateChange(wu, WuStateId.InstallCompleted); } }
public void Should_EnterUserInputRequiredState_When_NotInstalledUpdateCanRequestInput() { var session = new UpdateSessionFake(true); var behavMock = new Mock <IInstallationBehavior>(); behavMock.Setup(b => b.CanRequestUserInput).Returns(true); var update = new UpdateFake("update1", true); update.IsDownloaded = true; update.InstallationBehavior = behavMock.Object; session.SearcherMock.FakeSearchResult = CommonMocks.GetSearchResult(ToUpdateCollection(update)); using (WuApiController wu = new WuApiController(session, UpdateCollectionFactory, SystemInfo)) { wu.AutoAcceptEulas = true; wu.BeginSearchUpdates(); WaitForStateChange(wu, WuStateId.SearchCompleted); wu.BeginInstallUpdates(); WaitForStateChange(wu, WuStateId.UserInputRequired); } }
public void Should_ReturnExpectedInstallerStatus_When_RequestInstallerStatus() { UpdateSessionFake session = new UpdateSessionFake(true); using (WuApiController wu = new WuApiController(session, UpdateCollectionFactory, SystemInfo)) { session.InstallerMock.IsBusy = true; Assert.AreEqual(wu.GetInstallerStatus(), InstallerStatus.Busy); session.InstallerMock.IsBusy = false; } using (WuApiController wu = new WuApiController(session, UpdateCollectionFactory, SystemInfo)) { session.InstallerMock.RebootRequiredBeforeInstallation = true; Assert.AreEqual(wu.GetInstallerStatus(), InstallerStatus.RebootRequiredBeforeInstallation); session.InstallerMock.RebootRequiredBeforeInstallation = false; } using (WuApiController wu = new WuApiController(session, UpdateCollectionFactory, SystemInfo)) { Assert.AreEqual(wu.GetInstallerStatus(), InstallerStatus.Ready); } }