Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
		}
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        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);
            }
        }
Exemplo n.º 10
0
        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);
        }
Exemplo n.º 12
0
        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);
        }
Exemplo n.º 13
0
        public void Initialize()
        {
            configuration = new ClientConfiguration();
            logger        = new Mock <ILogger>();
            runtime       = new Mock <IRuntimeProxy>();

            sut = new ConfigurationOperation(configuration, logger.Object, runtime.Object);
        }
Exemplo n.º 14
0
        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();
 }
Exemplo n.º 18
0
        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);
		}
Exemplo n.º 20
0
        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);
        }
Exemplo n.º 21
0
        ///////////////////////////////////////////////////////////////////////

        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);
		}
Exemplo n.º 29
0
        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);
        }