public void Perform_MustUseCurrentPasswordIfAvailable() { var url = @"http://www.safeexambrowser.org/whatever.seb"; var location = Path.Combine(Path.GetDirectoryName(GetType().Assembly.Location), nameof(Operations), "Testdata", FILE_NAME); var settings = new AppSettings { ConfigurationMode = ConfigurationMode.Exam }; appConfig.AppDataFilePath = location; settings.Security.AdminPasswordHash = "1234"; repository .Setup(r => r.TryLoadSettings(It.IsAny <Uri>(), out settings, It.IsAny <PasswordParameters>())) .Returns(LoadStatus.PasswordNeeded); repository .Setup(r => r.TryLoadSettings(It.Is <Uri>(u => u.Equals(new Uri(location))), out settings, It.IsAny <PasswordParameters>())) .Returns(LoadStatus.Success); repository .Setup(r => r.TryLoadSettings(It.IsAny <Uri>(), out settings, It.Is <PasswordParameters>(p => p.IsHash == true && p.Password == settings.Security.AdminPasswordHash))) .Returns(LoadStatus.Success); var sut = new ConfigurationOperation(new[] { "blubb.exe", url }, repository.Object, fileSystem.Object, hashAlgorithm.Object, logger.Object, sessionContext); var result = sut.Perform(); repository.Verify(r => r.TryLoadSettings(It.IsAny <Uri>(), out settings, It.Is <PasswordParameters>(p => p.Password == settings.Security.AdminPasswordHash)), Times.AtLeastOnce); Assert.AreEqual(OperationResult.Success, result); }
public void Perform_MustInformAboutClientConfigurationError() { var informed = false; var settings = new AppSettings(); var url = @"http://www.safeexambrowser.org/whatever.seb"; settings.ConfigurationMode = ConfigurationMode.ConfigureClient; repository.Setup(r => r.TryLoadSettings(It.IsAny <Uri>(), out settings, It.IsAny <PasswordParameters>())).Returns(LoadStatus.Success); repository.Setup(r => r.ConfigureClientWith(It.IsAny <Uri>(), It.IsAny <PasswordParameters>())).Returns(SaveStatus.UnexpectedError); var sut = new ConfigurationOperation(new[] { "blubb.exe", url }, repository.Object, fileSystem.Object, hashAlgorithm.Object, logger.Object, sessionContext); sut.ActionRequired += args => { if (args is ClientConfigurationErrorMessageArgs) { informed = true; } }; var result = sut.Perform(); Assert.AreEqual(OperationResult.Failed, result); Assert.IsTrue(informed); }
public void Perform_MustNotAuthenticateIfSameAdminPassword() { var currentSettings = new AppSettings { ConfigurationMode = ConfigurationMode.ConfigureClient }; var nextSettings = new AppSettings { ConfigurationMode = ConfigurationMode.ConfigureClient }; var url = @"http://www.safeexambrowser.org/whatever.seb"; currentSettings.Security.AdminPasswordHash = "1234"; nextSession.Settings = nextSettings; nextSettings.Security.AdminPasswordHash = "1234"; repository.Setup(r => r.TryLoadSettings(It.IsAny <Uri>(), out currentSettings, It.IsAny <PasswordParameters>())).Returns(LoadStatus.Success); repository.Setup(r => r.TryLoadSettings(It.Is <Uri>(u => u.AbsoluteUri == url), out nextSettings, It.IsAny <PasswordParameters>())).Returns(LoadStatus.Success); repository.Setup(r => r.ConfigureClientWith(It.IsAny <Uri>(), It.IsAny <PasswordParameters>())).Returns(SaveStatus.Success); var sut = new ConfigurationOperation(new[] { "blubb.exe", url }, repository.Object, fileSystem.Object, hashAlgorithm.Object, logger.Object, sessionContext); sut.ActionRequired += args => { if (args is PasswordRequiredEventArgs) { Assert.Fail(); } }; var result = sut.Perform(); hashAlgorithm.Verify(h => h.GenerateHashFor(It.IsAny <string>()), Times.Never); Assert.AreEqual(OperationResult.Success, result); }
public void Perform_MustNotAuthenticateIfSameAdminPassword() { var currentSettings = new Settings { AdminPasswordHash = "1234", ConfigurationMode = ConfigurationMode.ConfigureClient }; var nextSettings = new Settings { AdminPasswordHash = "1234", ConfigurationMode = ConfigurationMode.ConfigureClient }; var url = @"http://www.safeexambrowser.org/whatever.seb"; appConfig.AppDataFilePath = Path.Combine(Path.GetDirectoryName(GetType().Assembly.Location), nameof(Operations), FILE_NAME); nextSession.SetupGet(s => s.Settings).Returns(nextSettings); repository.Setup(r => r.TryLoadSettings(It.IsAny<Uri>(), out currentSettings, It.IsAny<PasswordParameters>())).Returns(LoadStatus.Success); repository.Setup(r => r.TryLoadSettings(It.Is<Uri>(u => u.AbsoluteUri == url), out nextSettings, It.IsAny<PasswordParameters>())).Returns(LoadStatus.Success); repository.Setup(r => r.ConfigureClientWith(It.IsAny<Uri>(), It.IsAny<PasswordParameters>())).Returns(SaveStatus.Success); var sut = new ConfigurationOperation(new[] { "blubb.exe", url }, repository.Object, hashAlgorithm.Object, logger.Object, sessionContext); sut.ActionRequired += args => { if (args is PasswordRequiredEventArgs) { Assert.Fail(); } }; var result = sut.Perform(); hashAlgorithm.Verify(h => h.GenerateHashFor(It.IsAny<string>()), Times.Never); Assert.AreEqual(OperationResult.Success, result); }
public void Perform_MustAbortAskingForAdminPasswordIfDecidedByUser() { var password = "******"; var currentSettings = new Settings { AdminPasswordHash = "1234", ConfigurationMode = ConfigurationMode.ConfigureClient }; var nextSettings = new Settings { AdminPasswordHash = "9876", ConfigurationMode = ConfigurationMode.ConfigureClient }; var url = @"http://www.safeexambrowser.org/whatever.seb"; appConfig.AppDataFilePath = Path.Combine(Path.GetDirectoryName(GetType().Assembly.Location), nameof(Operations), FILE_NAME); nextSession.SetupGet(s => s.Settings).Returns(nextSettings); hashAlgorithm.Setup(h => h.GenerateHashFor(It.Is<string>(p => p == password))).Returns(currentSettings.AdminPasswordHash); repository.Setup(r => r.TryLoadSettings(It.IsAny<Uri>(), out currentSettings, It.IsAny<PasswordParameters>())).Returns(LoadStatus.Success); repository.Setup(r => r.TryLoadSettings(It.Is<Uri>(u => u.AbsoluteUri == url), out nextSettings, It.IsAny<PasswordParameters>())).Returns(LoadStatus.Success); var sut = new ConfigurationOperation(new[] { "blubb.exe", url }, repository.Object, hashAlgorithm.Object, logger.Object, sessionContext); sut.ActionRequired += args => { if (args is PasswordRequiredEventArgs p && p.Purpose == PasswordRequestPurpose.LocalAdministrator) { p.Success = false; } }; var result = sut.Perform(); repository.Verify(r => r.ConfigureClientWith(It.IsAny<Uri>(), It.IsAny<PasswordParameters>()), Times.Never); Assert.AreEqual(OperationResult.Aborted, result); }
public void Perform_MustOnlyAllowToEnterSettingsPasswordFiveTimes() { var count = 0; var settings = default(AppSettings); var url = @"http://www.safeexambrowser.org/whatever.seb"; repository.Setup(r => r.TryLoadSettings(It.IsAny <Uri>(), out settings, It.IsAny <PasswordParameters>())).Returns(LoadStatus.PasswordNeeded); var sut = new ConfigurationOperation(new[] { "blubb.exe", url }, repository.Object, fileSystem.Object, hashAlgorithm.Object, logger.Object, sessionContext); sut.ActionRequired += args => { if (args is PasswordRequiredEventArgs p && p.Purpose == PasswordRequestPurpose.Settings) { count++; p.Success = true; } }; var result = sut.Perform(); repository.Verify(r => r.TryLoadSettings(It.IsAny <Uri>(), out settings, It.IsAny <PasswordParameters>()), Times.Exactly(6)); Assert.AreEqual(5, count); Assert.AreEqual(OperationResult.Failed, result); }
public void Repeat_MustDeleteTemporaryFileAfterClientConfiguration() { var currentSettings = new AppSettings(); var location = Path.GetDirectoryName(GetType().Assembly.Location); var resource = new Uri(Path.Combine(location, nameof(Operations), "Testdata", FILE_NAME)); var settings = new AppSettings { ConfigurationMode = ConfigurationMode.ConfigureClient }; var delete = 0; var configure = 0; var order = 0; currentSession.Settings = currentSettings; sessionContext.ReconfigurationFilePath = resource.LocalPath; fileSystem.Setup(f => f.Delete(It.IsAny <string>())).Callback(() => delete = ++order); repository.Setup(r => r.TryLoadSettings(It.Is <Uri>(u => u.Equals(resource)), out settings, It.IsAny <PasswordParameters>())).Returns(LoadStatus.Success); repository.Setup(r => r.ConfigureClientWith(It.Is <Uri>(u => u.Equals(resource)), It.IsAny <PasswordParameters>())).Returns(SaveStatus.Success).Callback(() => configure = ++order); var sut = new ConfigurationOperation(null, repository.Object, fileSystem.Object, hashAlgorithm.Object, logger.Object, sessionContext); var result = sut.Repeat(); fileSystem.Verify(f => f.Delete(It.Is <string>(s => s == resource.LocalPath)), Times.Once); repository.Verify(r => r.TryLoadSettings(It.Is <Uri>(u => u.Equals(resource)), out settings, It.IsAny <PasswordParameters>()), Times.AtLeastOnce); repository.Verify(r => r.ConfigureClientWith(It.Is <Uri>(u => u.Equals(resource)), It.IsAny <PasswordParameters>()), Times.Once); Assert.AreEqual(OperationResult.Success, result); Assert.AreEqual(1, configure); Assert.AreEqual(2, delete); }
public void Repeat_MustAbortForSettingsPasswordIfWishedByUser() { var currentSettings = new AppSettings(); var location = Path.GetDirectoryName(GetType().Assembly.Location); var resource = new Uri(Path.Combine(location, nameof(Operations), "Testdata", FILE_NAME)); var settings = new AppSettings { ConfigurationMode = ConfigurationMode.ConfigureClient }; currentSession.Settings = currentSettings; sessionContext.ReconfigurationFilePath = resource.LocalPath; repository.Setup(r => r.TryLoadSettings(It.Is <Uri>(u => u.Equals(resource)), out settings, It.IsAny <PasswordParameters>())).Returns(LoadStatus.PasswordNeeded); var sut = new ConfigurationOperation(null, repository.Object, fileSystem.Object, hashAlgorithm.Object, logger.Object, sessionContext); sut.ActionRequired += args => { if (args is PasswordRequiredEventArgs p) { p.Success = false; } }; var result = sut.Repeat(); fileSystem.Verify(f => f.Delete(It.Is <string>(s => s == resource.LocalPath)), Times.Once); Assert.AreEqual(OperationResult.Aborted, result); }
/// <summary> /// connect to database /// </summary> /// <param name="connectionName"></param> /// <param name="providerKey"></param> private void Connect(string connectionName) { //Get provider factory providerFactory = GetDbFactory(connectionName); //Read connection from configuration file string connection = ConfigurationOperation.GetConnectionString(connectionName); if (String.IsNullOrEmpty(connection)) { throw new InvalidConnectionException("This connection name is not valid !!!"); } try { //Create DbConnection instance and open it dbConnection = providerFactory.CreateConnection(); dbConnection.ConnectionString = connection; dbConnection.Open(); } catch (DbException ex) { throw new InvalidConnectionException(ex.Message, ex); } }
public void Perform_MustOnlyAllowToEnterAdminPasswordFiveTimes() { var count = 0; var localSettings = new AppSettings(); var settings = new AppSettings { ConfigurationMode = ConfigurationMode.ConfigureClient }; var url = @"http://www.safeexambrowser.org/whatever.seb"; appConfig.AppDataFilePath = Path.Combine(Path.GetDirectoryName(GetType().Assembly.Location), nameof(Operations), "Testdata", FILE_NAME); localSettings.Security.AdminPasswordHash = "1234"; settings.Security.AdminPasswordHash = "9876"; repository.Setup(r => r.TryLoadSettings(It.IsAny <Uri>(), out settings, It.IsAny <PasswordParameters>())).Returns(LoadStatus.Success); repository.Setup(r => r.TryLoadSettings(It.Is <Uri>(u => u.LocalPath.Contains(FILE_NAME)), out localSettings, It.IsAny <PasswordParameters>())).Returns(LoadStatus.Success); nextSession.Settings = settings; var sut = new ConfigurationOperation(new[] { "blubb.exe", url }, repository.Object, fileSystem.Object, hashAlgorithm.Object, logger.Object, sessionContext); sut.ActionRequired += args => { if (args is PasswordRequiredEventArgs p && p.Purpose == PasswordRequestPurpose.LocalAdministrator) { count++; p.Success = true; } }; var result = sut.Perform(); Assert.AreEqual(5, count); Assert.AreEqual(OperationResult.Failed, result); }
public void Perform_MustSucceedIfAdminPasswordTestdata() { var password = "******"; var currentSettings = new ApplicationSettings { AdminPasswordHash = "1234", ConfigurationMode = ConfigurationMode.ConfigureClient }; var nextSettings = new ApplicationSettings { AdminPasswordHash = "9876", ConfigurationMode = ConfigurationMode.ConfigureClient }; var url = @"http://www.safeexambrowser.org/whatever.seb"; nextSession.Settings = nextSettings; hashAlgorithm.Setup(h => h.GenerateHashFor(It.Is <string>(p => p == password))).Returns(currentSettings.AdminPasswordHash); repository.Setup(r => r.TryLoadSettings(It.IsAny <Uri>(), out currentSettings, It.IsAny <PasswordParameters>())).Returns(LoadStatus.Success); repository.Setup(r => r.TryLoadSettings(It.Is <Uri>(u => u.AbsoluteUri == url), out nextSettings, It.IsAny <PasswordParameters>())).Returns(LoadStatus.Success); repository.Setup(r => r.ConfigureClientWith(It.IsAny <Uri>(), It.IsAny <PasswordParameters>())).Returns(SaveStatus.Success); var sut = new ConfigurationOperation(new[] { "blubb.exe", url }, repository.Object, hashAlgorithm.Object, logger.Object, sessionContext); sut.ActionRequired += args => { if (args is PasswordRequiredEventArgs p && p.Purpose == PasswordRequestPurpose.LocalAdministrator) { p.Password = password; p.Success = true; } }; var result = sut.Perform(); repository.Verify(r => r.ConfigureClientWith(It.IsAny <Uri>(), It.IsAny <PasswordParameters>()), Times.Once); Assert.AreEqual(OperationResult.Success, result); }
public void Perform_MustSucceedIfSettingsPasswordCorrect() { var password = "******"; var settings = new AppSettings { ConfigurationMode = ConfigurationMode.Exam }; var url = @"http://www.safeexambrowser.org/whatever.seb"; repository.Setup(r => r.TryLoadSettings(It.IsAny <Uri>(), out settings, It.IsAny <PasswordParameters>())).Returns(LoadStatus.PasswordNeeded); repository.Setup(r => r.TryLoadSettings(It.IsAny <Uri>(), out settings, It.Is <PasswordParameters>(p => p.Password == password))).Returns(LoadStatus.Success); var sut = new ConfigurationOperation(new[] { "blubb.exe", url }, repository.Object, fileSystem.Object, hashAlgorithm.Object, logger.Object, sessionContext); sut.ActionRequired += args => { if (args is PasswordRequiredEventArgs p) { p.Password = password; p.Success = true; } }; var result = sut.Perform(); repository.Verify(r => r.TryLoadSettings(It.IsAny <Uri>(), out settings, It.Is <PasswordParameters>(p => p.Password == password)), Times.AtLeastOnce); Assert.AreEqual(OperationResult.Success, result); }
public void Initialize() { configuration = new ClientConfiguration(); logger = new Mock <ILogger>(); runtime = new Mock <IRuntimeProxy>(); sut = new ConfigurationOperation(configuration, logger.Object, runtime.Object); }
public void Perform_MustNotFailWithInvalidUri() { var uri = @"an/invalid\uri.'*%yolo/()你好"; var sut = new ConfigurationOperation(new[] { "blubb.exe", uri }, repository.Object, fileSystem.Object, hashAlgorithm.Object, logger.Object, sessionContext); var result = sut.Perform(); Assert.AreEqual(OperationResult.Success, result); }
public void Revert_MustDoNothing() { var sut = new ConfigurationOperation(null, repository.Object, hashAlgorithm.Object, logger.Object, sessionContext); var result = sut.Revert(); hashAlgorithm.VerifyNoOtherCalls(); repository.VerifyNoOtherCalls(); Assert.AreEqual(OperationResult.Success, result); }
private DbProviderFactory GetDbFactory(string connectionName) { try { //Get provider factory from factories return(DbProviderFactories.GetFactory(ConfigurationOperation.GetProviderName(connectionName))); } catch (ArgumentException ex) { throw new InvalidProviderException(ex.Message, ex); } }
protected virtual void OnRunConfigurationOperation(ConfigurationOperation operation) { if (operation != GetOperation()) { return; } if (!ValidateProperties(out string message)) { BrowserDialog.ShowInformationMessage(message); return; } StartOperation(); }
public void Perform_MustFallbackToDefaultsAsLastPrio() { var defaultSettings = new AppSettings(); repository.Setup(r => r.LoadDefaultSettings()).Returns(defaultSettings); var sut = new ConfigurationOperation(null, repository.Object, fileSystem.Object, hashAlgorithm.Object, logger.Object, sessionContext); var result = sut.Perform(); repository.Verify(r => r.LoadDefaultSettings(), Times.Once); Assert.AreEqual(OperationResult.Success, result); Assert.AreSame(defaultSettings, nextSession.Settings); }
public void Perform_MustCorrectlyHandleBrowserResource() { var settings = new Settings { ConfigurationMode = ConfigurationMode.Exam }; var url = @"http://www.safeexambrowser.org/whatever.seb"; nextSession.SetupGet(s => s.Settings).Returns(settings); repository.Setup(r => r.TryLoadSettings(It.IsAny<Uri>(), out settings, It.IsAny<PasswordParameters>())).Returns(LoadStatus.LoadWithBrowser); var sut = new ConfigurationOperation(new[] { "blubb.exe", url }, repository.Object, hashAlgorithm.Object, logger.Object, sessionContext); var result = sut.Perform(); Assert.AreEqual(url, settings.Browser.StartUrl); Assert.AreEqual(OperationResult.Success, result); }
public void Perform_MustUseAppDataAs3rdPrio() { var location = Path.Combine(Path.GetDirectoryName(GetType().Assembly.Location), nameof(Operations), "Testdata", FILE_NAME); var settings = default(AppSettings); appConfig.AppDataFilePath = location; repository.Setup(r => r.TryLoadSettings(It.IsAny <Uri>(), out settings, It.IsAny <PasswordParameters>())).Returns(LoadStatus.Success); var sut = new ConfigurationOperation(null, repository.Object, fileSystem.Object, hashAlgorithm.Object, logger.Object, sessionContext); var result = sut.Perform(); repository.Verify(r => r.TryLoadSettings(It.Is <Uri>(u => u.Equals(location)), out settings, It.IsAny <PasswordParameters>()), Times.Once); Assert.AreEqual(OperationResult.Success, result); }
/////////////////////////////////////////////////////////////////////// private static bool GetNoComplain( ConfigurationOperation operation /* in */ ) { switch (operation) { case ConfigurationOperation.Get: { lock (syncRoot) { if (noComplainGet != null) { return((bool)noComplainGet); } } break; } case ConfigurationOperation.Set: { lock (syncRoot) { if (noComplainSet != null) { return((bool)noComplainSet); } } break; } case ConfigurationOperation.Unset: { lock (syncRoot) { if (noComplainUnset != null) { return((bool)noComplainUnset); } } break; } } return(false); }
public void Perform_MustFallbackToDefaultsAsLastPrio() { var actualSettings = default(Settings); var defaultSettings = new Settings(); repository.Setup(r => r.LoadDefaultSettings()).Returns(defaultSettings); nextSession.SetupSet<Settings>(s => s.Settings = It.IsAny<Settings>()).Callback(s => actualSettings = s); var sut = new ConfigurationOperation(null, repository.Object, hashAlgorithm.Object, logger.Object, sessionContext); var result = sut.Perform(); repository.Verify(r => r.LoadDefaultSettings(), Times.Once); nextSession.VerifySet(s => s.Settings = defaultSettings); Assert.AreEqual(OperationResult.Success, result); Assert.AreSame(defaultSettings, actualSettings); }
public void Perform_MustUseCommandLineArgumentAs1stPrio() { var settings = new Settings { ConfigurationMode = ConfigurationMode.Exam }; var url = @"http://www.safeexambrowser.org/whatever.seb"; var location = Path.Combine(Path.GetDirectoryName(GetType().Assembly.Location), nameof(Operations), FILE_NAME); appConfig.AppDataFilePath = location; appConfig.ProgramDataFilePath = location; repository.Setup(r => r.TryLoadSettings(It.IsAny<Uri>(), out settings, It.IsAny<PasswordParameters>())).Returns(LoadStatus.Success); var sut = new ConfigurationOperation(new[] { "blubb.exe", url }, repository.Object, hashAlgorithm.Object, logger.Object, sessionContext); var result = sut.Perform(); var resource = new Uri(url); repository.Verify(r => r.TryLoadSettings(It.Is<Uri>(u => u.Equals(resource)), out settings, It.IsAny<PasswordParameters>()), Times.Once); Assert.AreEqual(OperationResult.Success, result); }
public void Repeat_MustPerformForExamWithCorrectUri() { var currentSettings = new Settings(); var location = Path.GetDirectoryName(GetType().Assembly.Location); var resource = new Uri(Path.Combine(location, nameof(Operations), FILE_NAME)); var settings = new Settings { ConfigurationMode = ConfigurationMode.Exam }; currentSession.SetupGet(s => s.Settings).Returns(currentSettings); sessionContext.ReconfigurationFilePath = resource.LocalPath; repository.Setup(r => r.TryLoadSettings(It.Is<Uri>(u => u.Equals(resource)), out settings, It.IsAny<PasswordParameters>())).Returns(LoadStatus.Success); var sut = new ConfigurationOperation(null, repository.Object, hashAlgorithm.Object, logger.Object, sessionContext); var result = sut.Repeat(); nextSession.VerifySet(s => s.Settings = settings, Times.Once); repository.Verify(r => r.TryLoadSettings(It.Is<Uri>(u => u.Equals(resource)), out settings, It.IsAny<PasswordParameters>()), Times.AtLeastOnce); repository.Verify(r => r.ConfigureClientWith(It.Is<Uri>(u => u.Equals(resource)), It.IsAny<PasswordParameters>()), Times.Never); Assert.AreEqual(OperationResult.Success, result); }
public void Perform_MustNotAllowToAbortIfNotInConfigureClientMode() { var settings = new Settings(); settings.ConfigurationMode = ConfigurationMode.Exam; repository.Setup(r => r.TryLoadSettings(It.IsAny<Uri>(), out settings, It.IsAny<PasswordParameters>())).Returns(LoadStatus.Success); var sut = new ConfigurationOperation(null, repository.Object, hashAlgorithm.Object, logger.Object, sessionContext); sut.ActionRequired += args => { if (args is ConfigurationCompletedEventArgs c) { Assert.Fail(); } }; var result = sut.Perform(); Assert.AreEqual(OperationResult.Success, result); }
public void Perform_MustAbortAskingForSettingsPasswordIfDecidedByUser() { var settings = default(Settings); var url = @"http://www.safeexambrowser.org/whatever.seb"; repository.Setup(r => r.TryLoadSettings(It.IsAny<Uri>(), out settings, It.IsAny<PasswordParameters>())).Returns(LoadStatus.PasswordNeeded); var sut = new ConfigurationOperation(new[] { "blubb.exe", url }, repository.Object, hashAlgorithm.Object, logger.Object, sessionContext); sut.ActionRequired += args => { if (args is PasswordRequiredEventArgs p) { p.Success = false; } }; var result = sut.Perform(); Assert.AreEqual(OperationResult.Aborted, result); }
public void Repeat_MustFailWithInvalidUri() { var resource = new Uri("file:///C:/does/not/exist.txt"); var settings = default(Settings); sessionContext.ReconfigurationFilePath = null; repository.Setup(r => r.TryLoadSettings(It.IsAny<Uri>(), out settings, It.IsAny<PasswordParameters>())).Returns(LoadStatus.Success); var sut = new ConfigurationOperation(null, repository.Object, hashAlgorithm.Object, logger.Object, sessionContext); var result = sut.Repeat(); repository.Verify(r => r.TryLoadSettings(It.Is<Uri>(u => u.Equals(resource)), out settings, It.IsAny<PasswordParameters>()), Times.Never); Assert.AreEqual(OperationResult.Failed, result); sessionContext.ReconfigurationFilePath = resource.LocalPath; result = sut.Repeat(); repository.Verify(r => r.TryLoadSettings(It.Is<Uri>(u => u.Equals(resource)), out settings, It.IsAny<PasswordParameters>()), Times.Never); Assert.AreEqual(OperationResult.Failed, result); }
public void Perform_MustNotAbortIfNotWishedByUser() { var settings = new Settings(); var url = @"http://www.safeexambrowser.org/whatever.seb"; settings.ConfigurationMode = ConfigurationMode.ConfigureClient; repository.Setup(r => r.TryLoadSettings(It.IsAny<Uri>(), out settings, It.IsAny<PasswordParameters>())).Returns(LoadStatus.Success); repository.Setup(r => r.ConfigureClientWith(It.IsAny<Uri>(), It.IsAny<PasswordParameters>())).Returns(SaveStatus.Success); var sut = new ConfigurationOperation(new[] { "blubb.exe", url }, repository.Object, hashAlgorithm.Object, logger.Object, sessionContext); sut.ActionRequired += args => { if (args is ConfigurationCompletedEventArgs c) { c.AbortStartup = false; } }; var result = sut.Perform(); Assert.AreEqual(OperationResult.Success, result); }
public void Perform_MustNotFailWithoutCommandLineArgs() { var defaultSettings = new AppSettings(); var result = OperationResult.Failed; repository.Setup(r => r.LoadDefaultSettings()).Returns(defaultSettings); var sut = new ConfigurationOperation(null, repository.Object, fileSystem.Object, hashAlgorithm.Object, logger.Object, sessionContext); result = sut.Perform(); repository.Verify(r => r.LoadDefaultSettings(), Times.Once); Assert.AreEqual(OperationResult.Success, result); Assert.AreSame(defaultSettings, nextSession.Settings); sut = new ConfigurationOperation(new string[] { }, repository.Object, fileSystem.Object, hashAlgorithm.Object, logger.Object, sessionContext); result = sut.Perform(); repository.Verify(r => r.LoadDefaultSettings(), Times.Exactly(2)); Assert.AreEqual(OperationResult.Success, result); Assert.AreSame(defaultSettings, nextSession.Settings); }