public void GetValidationHandler_SimpleSettings_ReturnsValidationHandlerWithNoSuccessor()
        {
            var settings = new PasswordValidationSettings();
            var result   = ValidationServiceLocator.GetValidationHandlerChain(settings);

            Assert.IsInstanceOf <MinimumLengthValidationHandler>(result.Handler);
            Assert.IsNull(result.Successor);
        }
 /// <summary>
 /// Constructs an instance of the `Validator` class using the settings passed
 /// into the constructor.
 /// </summary>
 /// <param name="settings">The settings that define the rules by which
 /// to validate a password.</param>
 public Validator(IPasswordValidationSettings settings)
 {
     if (settings == null)
     {
         throw new ArgumentNullException("settings");
     }
     _validationChain = ValidationServiceLocator.GetValidationHandlerChain(settings);
 }
        public void GetValidationHandler_CustomValidationHandler_ReturnsChainWithCustomHandler()
        {
            var settings = new PasswordValidationSettings();

            settings.CustomValidators.Add(typeof(AlwaysFailsValidationHandler));
            var result = ValidationServiceLocator.GetValidationHandlerChain(settings);

            Assert.IsInstanceOf <MinimumLengthValidationHandler>(result.Handler);
            Assert.IsInstanceOf <AlwaysFailsValidationHandler>(result.Successor.Handler);
        }
        public void getValidationHandler_NeedsSymbolIsTrue_ReturnsChainWithNeedsSymbolValidator()
        {
            var settings = new PasswordValidationSettings();

            settings.NeedsSymbol = true;
            var result = ValidationServiceLocator.GetValidationHandlerChain(settings);

            Assert.IsInstanceOf <MinimumLengthValidationHandler>(result.Handler);
            Assert.IsInstanceOf <NeedsSymbolValidationHandler>(result.Successor.Handler);
        }
        public void GetValidationHandler_NeedsLetter_ReturnsTwoChainedHandlers()
        {
            var settings = new PasswordValidationSettings();

            settings.NeedsLetter = true;
            var result = ValidationServiceLocator.GetValidationHandlerChain(settings);

            Assert.IsInstanceOf <MinimumLengthValidationHandler>(result.Handler);
            Assert.IsInstanceOf <NeedsLetterValidationHandler>(result.Successor.Handler);
            Assert.IsNull(result.Successor.Successor);
        }