public void ChangePassword() { // Arrange var passwordDatabaseMock = new Mock <IPasswordDatabase>(); var passwordChangerMock = new Mock <IPasswordChanger>(); var now = DateTime.Now; var clockMock = new Mock <IClock>(); clockMock.Setup(x => x.Now).Returns(now); var passwordChangerService = new PasswordChangerServiceWrapper( passwordDatabaseMock.Object, passwordChangerMock.Object, clockMock.Object ); var hostPwEntryMock = new Mock <IHostPwEntry>(); hostPwEntryMock.SetupGet(x => x.IPAddress).Returns("localhost"); hostPwEntryMock.Setup(x => x.GetUsername()).Returns("username"); hostPwEntryMock.Setup(x => x.GetPassword()).Returns("password"); // Act passwordChangerService.ChangePassword(hostPwEntryMock.Object, "newPassword"); // Assert hostPwEntryMock.Verify(x => x.UpdatePassword("newPassword"), Times.Once); hostPwEntryMock.VerifySet(v => v.LastModificationTime = now, Times.Once); passwordDatabaseMock.Verify(v => v.Save(), Times.Never); passwordChangerMock.Verify(v => v.ChangePassword("localhost", "username", "password", "newPassword"), Times.Once); clockMock.Verify(v => v.Now, Times.Once); }
public void SaveDatabase() { // Arrange var passwordDatabaseMock = new Mock <IPasswordDatabase>(); var passwordChangerMock = new Mock <IPasswordChanger>(); var now = DateTime.Now; var clockMock = new Mock <IClock>(); clockMock.Setup(x => x.Now).Returns(now); var passwordChangerService = new PasswordChangerServiceWrapper( passwordDatabaseMock.Object, passwordChangerMock.Object, clockMock.Object ); // Act passwordChangerService.SaveDatabase(); // Assert passwordDatabaseMock.Verify(v => v.Save(), Times.Once); passwordChangerMock.Verify(v => v.ChangePassword(It.IsAny <String>(), It.IsAny <String>(), It.IsAny <String>(), It.IsAny <String>()), Times.Never); clockMock.Verify(v => v.Now, Times.Never); }
private ToolStripMenuItem createChangePasswordMenuItem(HostPwEntry hostPwEntry) { IPasswordChanger pwChanger = null; var hostTypeMapper = new HostTypeMapper(new HostTypeSafeConverter()); var hostType = hostTypeMapper.Get(hostPwEntry); if (hostType == HostType.ESXi && QuickConnectUtils.IsVSpherePowerCLIInstalled()) { pwChanger = new ESXiPasswordChanger(); } else if (hostType == HostType.Windows && !String.IsNullOrEmpty(this.Settings.PsPasswdPath) && File.Exists(this.Settings.PsPasswdPath) && PsPasswdWrapper.IsPsPasswdUtility(this.Settings.PsPasswdPath) && PsPasswdWrapper.IsSupportedVersion(this.Settings.PsPasswdPath) ) { pwChanger = new WindowsPasswordChanger(new PsPasswdWrapper(this.Settings.PsPasswdPath)); } else if (hostType == HostType.Linux) { PuttyOptions puttyOptions = null; bool success = PuttyOptionsParser.TryParse(hostPwEntry.AdditionalOptions, out puttyOptions); // Disable change password menu item if authentication is done using SSH key file. if (!success || (success && !puttyOptions.HasKeyFile())) { int?sshPort = null; if (success) { sshPort = puttyOptions.Port; } pwChanger = new LinuxPasswordChanger() { SshPort = sshPort }; } } var menuItem = new ToolStripMenuItem() { Text = ChangePasswordMenuItemText, Enabled = hostPwEntry.HasIPAddress && pwChanger != null }; menuItem.Click += new EventHandler( delegate(object obj, EventArgs ev) { try { var pwDatabase = new PasswordDatabase(this.pluginHost.Database); var pwChangerService = new PasswordChangerServiceWrapper(pwDatabase, pwChanger); using (var formPasswordChange = new FormPasswordChanger(hostPwEntry, pwChangerService)) { formPasswordChange.ShowDialog(); } } catch (Exception ex) { log(ex); } } ); return(menuItem); }
static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); var pwDatabase = new FakePasswordDatabase(); var hostPwEntry = new InMemoryHostPwEntry() { Username = "******", Password = "******", IPAddress = "host", }; hostPwEntry.ConnectionMethods.Add(ConnectionMethodType.RemoteDesktop); var pwChanger = new FakePasswordChanger(HostType.Windows) { ThreadSleepDuration = 20000 }; var pwChangerService = new PasswordChangerServiceWrapper(pwDatabase, pwChanger, new SystemClock()); var formPasswordChange = new FormPasswordChanger(hostPwEntry, pwChangerService); Application.Run(formPasswordChange); }