Beispiel #1
0
        public void Should_CallProgressCallback_When_NewProgessNotEqualsOldProgress()
        {
            int progressChangedCallbackCounter = 0;

            WuStateAsyncJob.ProgressChangedCallback progressCallback = (j, cu, ci, co, p) => { progressChangedCallbackCounter++; };
            WuStateAsyncJob.TimeoutCallback         timeoutCallback  = (j, t) => { Assert.Fail("Should not be called."); };

            UpdateFake update1 = new UpdateFake("update1");
            UpdateFake update2 = new UpdateFake("update2");

            Tuple <IUpdate, int, int, int>[] progessChanges =
            {
                new Tuple <IUpdate, int, int, int>(update1, 0, 1,   0),
                new Tuple <IUpdate, int, int, int>(update1, 0, 1, 100),
                new Tuple <IUpdate, int, int, int>(update1, 1, 1, 100),
                new Tuple <IUpdate, int, int, int>(update2, 1, 1, 100)
            };

            using (var asyncJob = new WuStateAsyncJobProxy(WuStateId.Downloading, "name", 10000, timeoutCallback, progressCallback))
            {
                foreach (var pc in progessChanges)
                {
                    asyncJob.SimulateOnProgressNow(pc.Item1, pc.Item2, pc.Item3, pc.Item4);
                }
            }
            Assert.AreEqual(progessChanges.Length, progressChangedCallbackCounter);
        }
        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_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));
            }
        }
Beispiel #4
0
        public void Should_CallProgressCallback_When_OnProgressIsCalled()
        {
            ManualResetEvent callbackSignal = new ManualResetEvent(false);
            int             timeoutSec = 1;
            IUpdate         callbackUpdate = null, inputUpdate = new UpdateFake("id");
            int             callbackIndex = -1, callbackCount = -1, callbackPercent = -1, inputIndex = 0, inputCount = 1, inputPercent = 37;
            WuStateAsyncJob callbackJob = null;

            WuStateAsyncJob.ProgressChangedCallback callback = (sender, update, index, count, percent) =>
            {
                callbackJob     = sender;
                callbackUpdate  = update;
                callbackIndex   = index;
                callbackCount   = count;
                callbackPercent = percent;
                callbackSignal.Set();
            };

            var job = (new WuStateAsyncJobProxy(WuStateId.Downloading, "name", timeoutSec, (x, y) => { }, callback));

            job.EnterState(new WuStateReady());
            job.SimulateOnProgressNow(inputUpdate, inputIndex, inputCount, inputPercent);
            if (!callbackSignal.WaitOne(timeoutSec * 2000))
            {
                Assert.Fail($"progress callback was not called");
            }
            Assert.AreEqual(callbackIndex, inputIndex);
            Assert.AreEqual(callbackCount, inputCount);
            Assert.AreSame(callbackUpdate, inputUpdate);
            Assert.AreSame(callbackJob, job);

            job.Dispose();
        }
        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_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);
            }
        }
Beispiel #8
0
        public void Should_EnterInstallFailedState_When_InstallationFailed()
        {
            var session = new UpdateSessionFake(true);
            var update  = new UpdateFake("update1", true);

            update.IsDownloaded = true;
            session.SearcherMock.FakeSearchResult = CommonMocks.GetSearchResult(ToUpdateCollection(update));

            List <IInstallationResult> results = new List <IInstallationResult>();

            results.Add(CommonMocks.GetInstallationResult(OperationResultCode.orcFailed));
            results.Add(CommonMocks.GetInstallationResult(OperationResultCode.orcAborted));
            results.Add(CommonMocks.GetInstallationResult(OperationResultCode.orcNotStarted));

            foreach (var result in results)
            {
                session.InstallerMock.FakeInstallResult = result;
                using (WuApiController wu = new WuApiController(session, UpdateCollectionFactory, SystemInfo))
                {
                    wu.AutoAcceptEulas = true;
                    wu.BeginSearchUpdates();
                    WaitForStateChange(wu, WuStateId.SearchCompleted);
                    wu.BeginInstallUpdates();
                    WaitForStateChange(wu, WuStateId.InstallFailed);
                }
            }
        }
Beispiel #9
0
        public void Should_ThrowException_When_UnselectUnkownUpdate()
        {
            UpdateFake update1 = new UpdateFake("update1");
            var        holder  = new WuUpdateHolder();

            holder.SetApplicableUpdates(ToUpdateCollection(update1));
            holder.UnselectUpdate("update2");
        }
Beispiel #10
0
        public void Should_ReturnEmtpyEnum_When_NoUpdatesAreSelected()
        {
            UpdateFake update1 = new UpdateFake("update1");
            var        holder  = new WuUpdateHolder();

            Assert.IsFalse(holder.GetSelectedUpdates().Any());
            holder.SetApplicableUpdates(ToUpdateCollection(update1));
            Assert.IsFalse(holder.GetSelectedUpdates().Any());
        }
Beispiel #11
0
        public void Should_ReturnTrue_When_VerifySelectedUpdate()
        {
            UpdateFake update1 = new UpdateFake("update1");
            var        holder  = new WuUpdateHolder();

            holder.SetApplicableUpdates(ToUpdateCollection(update1));
            Assert.IsFalse(holder.IsSelected("update1"));
            holder.SelectUpdate("update1");
            Assert.IsTrue(holder.IsSelected("update1"));
        }
Beispiel #12
0
        public void Should_BeImportant_When_UpdateIsMandatory()
        {
            UpdateFake update = new UpdateFake("update1");

            update.IsMandatory = true;
            var holder = new WuUpdateHolder();
            var ud     = holder.ToUpdateDescription(update);

            Assert.IsTrue(ud.IsImportant);
        }
Beispiel #13
0
        public void Should_BeImportant_When_UpdateIsAutoSelectOnWebSites()
        {
            UpdateFake update = new UpdateFake("update1", false);

            update.AutoSelectOnWebSites = true;
            var holder = new WuUpdateHolder();
            var ud     = holder.ToUpdateDescription(update);

            Assert.IsTrue(ud.IsImportant);
        }
Beispiel #14
0
        public void Should_ApplyUpdateSelection_When_UseValidUpdateId()
        {
            UpdateFake update1 = new UpdateFake("update1");
            UpdateFake update2 = new UpdateFake("update2");
            UpdateFake update3 = new UpdateFake("update3");
            var        holder  = new WuUpdateHolder();

            holder.SetApplicableUpdates(ToUpdateCollection(update1, update2, update3));
            holder.SelectUpdate("update2");
            Assert.IsTrue(holder.GetSelectedUpdates().Single() == update2);
            holder.UnselectUpdate("update2");
            Assert.IsFalse(holder.GetSelectedUpdates().Any());
        }
Beispiel #15
0
        public void Should_NotSelectUpdates_When_AutoSelectIsDisabled()
        {
            UpdateFake update1 = new UpdateFake("update1");
            UpdateFake update2 = new UpdateFake("update2");
            UpdateFake update3 = new UpdateFake("update3");

            update2.IsMandatory = true;
            update3.IsMandatory = true;
            var holder = new WuUpdateHolder();

            holder.AutoSelectUpdates = false;
            holder.SetApplicableUpdates(ToUpdateCollection(update1, update2, update3));
            Assert.IsFalse(holder.GetSelectedUpdates().Any());
        }
Beispiel #16
0
        public void Should_ReplaceApplicableUpdates_When_AddNewSearchResult()
        {
            UpdateFake update1       = new UpdateFake("update1");
            UpdateFake update2       = new UpdateFake("update2");
            var        searchresult1 = ToUpdateCollection(update1);
            var        searchresult2 = ToUpdateCollection(update2);

            var holder = new WuUpdateHolder();

            holder.SetApplicableUpdates(searchresult1);
            Assert.IsTrue(holder.ApplicableUpdates.OfType <IUpdate>().Single() == update1);
            holder.SetApplicableUpdates(searchresult2);
            Assert.IsTrue(holder.ApplicableUpdates.OfType <IUpdate>().Single() == update2);
        }
        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");
            }
        }
Beispiel #18
0
        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_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);
            }
        }
Beispiel #20
0
        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();
            }
        }
Beispiel #21
0
        public void Should_EnterInstallCompletedState_When_InstallCompleted()
        {
            var session = new UpdateSessionFake(true);
            var update  = new UpdateFake("update1", true);

            update.IsDownloaded = true;
            session.SearcherMock.FakeSearchResult = CommonMocks.GetSearchResult(ToUpdateCollection(update));

            using (WuApiController wuau = new WuApiController(session, UpdateCollectionFactory, SystemInfo))
            {
                wuau.AutoAcceptEulas = true;
                wuau.BeginSearchUpdates();
                WaitForStateChange(wuau, WuStateId.SearchCompleted);
                wuau.BeginInstallUpdates();
                WaitForStateChange(wuau, WuStateId.InstallCompleted);
            }
        }
        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");
            }
        }
Beispiel #23
0
        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_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));
            }
        }
Beispiel #25
0
        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);
            }
        }
Beispiel #26
0
        public void Should_EnterInstallFailedState_When_AbortInstall()
        {
            var session = new UpdateSessionFake(true);
            var update  = new UpdateFake("update1", true);

            update.IsDownloaded = true;
            session.SearcherMock.FakeSearchResult   = CommonMocks.GetSearchResult(ToUpdateCollection(update));
            session.InstallerMock.FakeInstallTimeMs = 10000;

            using (WuApiController wu = new WuApiController(session, UpdateCollectionFactory, SystemInfo))
            {
                wu.AutoAcceptEulas = true;
                wu.BeginSearchUpdates();
                WaitForStateChange(wu, WuStateId.SearchCompleted);
                wu.BeginInstallUpdates();
                Assert.AreEqual(WuStateId.InstallFailed, wu.AbortInstallUpdates());
                Assert.AreEqual(WuStateId.InstallFailed, wu.GetWuStatus().StateId);
            }
        }
        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"));
            }
        }
Beispiel #28
0
        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_FireProgressChangedEvent_When_ProgressHasChanged()
        {
            var session = new UpdateSessionFake(true);

            var u1 = new UpdateFake("1", true);
            var u2 = new UpdateFake("2", true);

            List <Action> asserts = new List <Action>(); // assert in others threads will not be caught

            session.SearcherMock.FakeSearchResult     = CommonMocks.GetSearchResult(ToUpdateCollection(u1, u2));
            session.DownloaderMock.FakeDownloadTimeMs = 101;

            using (WuApiController wu = new WuApiController(session, UpdateCollectionFactory, SystemInfo))
            {
                wu.AutoAcceptEulas = true;
                wu.BeginSearchUpdates();
                WaitForStateChange(wu, WuStateId.SearchCompleted);
                wu.BeginDownloadUpdates();

                wu.OnProgressChanged += (sender, args) =>
                {
                    if (args.Progress.CurrentUpdate.ID == u1.Identity.UpdateID)
                    {
                        asserts.Add(() => { Assert.AreEqual(args.Progress.CurrentIndex, 0); });
                        asserts.Add(() => { Assert.AreEqual(args.Progress.Count, 2); });
                    }
                    else if (args.Progress.CurrentUpdate.ID == u2.Identity.UpdateID)
                    {
                        asserts.Add(() => { Assert.AreEqual(args.Progress.CurrentIndex, 1); });
                        asserts.Add(() => { Assert.AreEqual(args.Progress.Count, 2); });
                    }
                    else
                    {
                        asserts.Add(() => { Assert.Fail("unkown update"); });
                    }
                };
                WaitForStateChange(wu, WuStateId.DownloadCompleted);
                asserts.ForEach(a => a()); // fire asserts
            }
        }
Beispiel #30
0
        public void Should_UpdateApplicableUpdateList_When_SearchCompleted()
        {
            UpdateSessionFake session = new UpdateSessionFake(true);

            UpdateFake update = new UpdateFake("update1");

            update.IsMandatory = true;
            UpdateFake update2 = new UpdateFake("update2");

            update2.IsMandatory = false;

            session.SearcherMock.FakeSearchResult = CommonMocks.GetSearchResult(ToUpdateCollection(update, update2));

            using (WuApiController wu = new WuApiController(session, UpdateCollectionFactory, SystemInfo))
            {
                wu.AutoSelectUpdates = true;
                wu.BeginSearchUpdates();
                WaitForStateChange(wu, WuStateId.SearchCompleted);
                Assert.IsTrue(wu.GetAvailableUpdates().Count == 2);
                Assert.IsTrue(wu.GetAvailableUpdates().First().ID == "update1");
                Assert.IsTrue(wu.GetAvailableUpdates().Skip(1).First().ID == "update2");
            }
        }