public void ChangePasswordOnMultipleHostsWithError() { var pwHostEntries = new Collection <IHostPwEntry>() { new InMemoryHostPwEntry() { IPAddress = "localhost1", Username = "******", Password = "******" }, new InMemoryHostPwEntry() { IPAddress = "localhost2", Username = "******", Password = "******" }, new InMemoryHostPwEntry() { IPAddress = "localhost3", Username = "******", Password = "******" }, }; var mock = new Mock <IPasswordChangerService>(); mock.CallBase = true; mock.Setup( m => m.ChangePassword( It.Is <IHostPwEntry>(x => x.IPAddress == pwHostEntries[1].IPAddress), It.IsAny <String>() ) ).Throws <Exception>(); var batchPasswordChangerWorker = new BatchPasswordChangerWorker(mock.Object, pwHostEntries, "newPassword"); batchPasswordChangerWorker.SaveDatabaseAfterEachUpdate = true; int changedEventCount = 0; int errorEventCount = 0; int completedEventCount = 0; batchPasswordChangerWorker.Changed += (o, e) => { changedEventCount++; }; batchPasswordChangerWorker.Error += (o, e) => { errorEventCount++; }; batchPasswordChangerWorker.Completed += (o, e) => { completedEventCount++; }; batchPasswordChangerWorker.Run(); Assert.AreEqual(2, changedEventCount); Assert.AreEqual(1, errorEventCount); Assert.AreEqual(1, completedEventCount); mock.Verify(x => x.ChangePassword(pwHostEntries[0], "newPassword"), Times.Once); mock.Verify(x => x.ChangePassword(pwHostEntries[2], "newPassword"), Times.Once); mock.Verify(x => x.SaveDatabase(), Times.Exactly(2)); }
public void ChangePasswordOnMultipleHostsAndSaveDatabaseAfterEachUpdate() { var passwordChangerService = new MockPasswordChangerService(); var pwHostEntries = new Collection <IHostPwEntry>() { new InMemoryHostPwEntry() { IPAddress = "localhost1", Username = "******", Password = "******" }, new InMemoryHostPwEntry() { IPAddress = "localhost2", Username = "******", Password = "******" }, }; var batchPasswordChangerWorker = new BatchPasswordChangerWorker(passwordChangerService, pwHostEntries, "newPassword"); batchPasswordChangerWorker.SaveDatabaseAfterEachUpdate = true; int changedEventCount = 0; int errorEventCount = 0; int completedEventCount = 0; batchPasswordChangerWorker.Changed += (o, e) => { changedEventCount++; }; batchPasswordChangerWorker.Error += (o, e) => { errorEventCount++; }; batchPasswordChangerWorker.Completed += (o, e) => { completedEventCount++; }; batchPasswordChangerWorker.Run(); Assert.AreEqual(pwHostEntries.Count, changedEventCount); Assert.AreEqual(0, errorEventCount); Assert.AreEqual(1, completedEventCount); Assert.AreEqual(pwHostEntries.Count, passwordChangerService.ChangePasswordCount); Assert.AreEqual(pwHostEntries.Count, passwordChangerService.SaveDatabaseCount); }