public void RegisterValidatableObjectAdapterFactoryGuardClauses()
        {
            DataAnnotationsValidatableObjectAdapterFactory factory = (metadata, context) => null;

            // Attribute type cannot be null
            Assert.ThrowsArgumentNull(
                () => DataAnnotationsModelValidatorProvider.RegisterValidatableObjectAdapterFactory(null, factory),
                "modelType");

            // Factory cannot be null
            Assert.ThrowsArgumentNull(
                () => DataAnnotationsModelValidatorProvider.RegisterValidatableObjectAdapterFactory(typeof(MyValidatableClass), null),
                "factory");

            // Validation attribute must derive from ValidationAttribute
            Assert.Throws <ArgumentException>(
                () => DataAnnotationsModelValidatorProvider.RegisterValidatableObjectAdapterFactory(typeof(object), factory),
                "The type System.Object must derive from System.ComponentModel.DataAnnotations.IValidatableObject\r\nParameter name: modelType");
        }
        public void GetValidatorsReturnsValidationRulesForPropertiesWithMinAndMaxLength()
        { // Dev10 Bug #868619
            // Arrange
            var provider = new DataAnnotationsModelValidatorProvider();
            var context  = new ControllerContext();
            var viewdata = new ViewDataDictionary <DerivedModel>();
            var metadata = ModelMetadata.FromLambdaExpression(m => m.MinMaxProperty, viewdata);

            // Act
            IEnumerable <ModelValidator> validators = provider.GetValidators(metadata, context);

            // Assert
            ModelClientValidationRule[] clientRule = validators
                                                     .SelectMany(v => v.GetClientValidationRules())
                                                     .OrderBy(t => t.GetType().Name)
                                                     .ToArray();
            Assert.IsType <ModelClientValidationMaxLengthRule>(clientRule[0]);
            Assert.IsType <ModelClientValidationMinLengthRule>(clientRule[1]);
        }
Exemplo n.º 3
0
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            ModelBinders.Binders.Add(typeof(DateTime?), new MyDateTimeModelBinder());

            DependencyResolver.SetResolver(new StructureMapDependecyResolver(() => Container ?? ObjectFactory.Container));

            ObjectFactory.Configure(cfg =>
            {
                cfg.AddRegistry(new StandardRegistry());
                cfg.AddRegistry(new ControllerRegistry());
                cfg.AddRegistry(new DataRegistry());
                cfg.AddRegistry(new ActionFilterRegistry(() => Container ?? ObjectFactory.Container));
                cfg.AddRegistry(new TaskRegistry());
                cfg.AddRegistry(new ModelMetadataRegistry());
            });

            using (var container = ObjectFactory.Container.GetNestedContainer())
            {
                foreach (var task in container.GetAllInstances <IRunAtInit>())
                {
                    task.Execute();
                }

                foreach (var task in container.GetAllInstances <IRunAtStartup>())
                {
                    task.Execute();
                }
            }

            ClientDataTypeModelValidatorProvider.ResourceClassKey = "MyNewResource";
            DefaultModelBinder.ResourceClassKey = "MyNewResource";

            DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(RequiredAttribute), typeof(MyRequiredAttributeAdapter));

            ViewEngines.Engines.Clear();
            ViewEngines.Engines.Add(new RazorViewEngine());
        }
Exemplo n.º 4
0
        private void OnStart()
        {
            var      config     = this.Context.Server.MapPath("~/log4net.config");
            FileInfo repository = new FileInfo(config);

            XmlConfigurator.ConfigureAndWatch(repository);

            ILog log = LogManager.GetLogger("app");

            DatabaseInstance.SqlStore = new DirectorySqlStore(Context.Server.MapPath("~/sql"));
            log.Debug("sql store updated");
            SetupContiner();
            log.Debug("SetupContiner");

            SetupSite();
            log.Debug("SetupSite");

            RegisterRoutes();
            log.Debug("RegisterRoutes");

            registerActionFilters();
            log.Debug("registerActionFilters");

            registerModelBinders();
            log.Debug("registerModelBinders");

            registerViewEngines();
            log.Debug("registerViewEngines");

            registerControllerFactory();
            log.Debug("registerControllerFactory");

            BuildSiteCss();
            log.Debug("BuildSiteCss");

            DependencyResolver.SetResolver(new UnityDependencyResolver((IUnityContainer)Application["container"]));
            log.Debug("SetResolver");
            DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(MobileAttribute), typeof(MobileAttributeAdapter));
            log.Debug("RegisterAdapter");

            ValueProviderFactories.Factories.Add(new JsonValueProviderFactory());
            log.Debug("ValueProviderFactories.Factories.Add(new JsonValueProviderFactory())");
        }
    public void UnknownValidationAttributeGetsDefaultAdapter()
    {
        // Arrange
        var provider = new DataAnnotationsModelValidatorProvider(
            new ValidationAttributeAdapterProvider(),
            Options.Create(new MvcDataAnnotationsLocalizationOptions()),
            stringLocalizerFactory: null);
        var metadata = _metadataProvider.GetMetadataForType(typeof(DummyClassWithDummyValidationAttribute));

        var providerContext = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata));

        // Act
        provider.CreateValidators(providerContext);

        // Assert
        var validatorItem = providerContext.Results.Single();

        Assert.IsType <DataAnnotationsModelValidator>(validatorItem.Validator);
    }
        public override void Application_Start(object sender, EventArgs e)
        {
            base.Application_Start(sender, e);

            foreach (var provider in CommerceDbProviders.Providers)
            {
                provider.Initialize();
            }

            // AutoMapper
            AutoMapperConfiguration.Configure();

            // Mvc
            ViewEngines.Engines.Insert(0, new CommerceRazorViewEngine());
            DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(RequiredIfAttribute), typeof(RequiredAttributeAdapter));

            // Async Activity
            Kooboo.Job.Jobs.Instance.AttachJob(typeof(AsyncActivityExecutionJob).FullName, new AsyncActivityExecutionJob(), 30 * 1000, null);
        }
Exemplo n.º 7
0
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            GlobalConfiguration.Configure(WebApiConfig.Register);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            // Enable arabic validation messages
            ClientDataTypeModelValidatorProvider.ResourceClassKey = "Messages";
            DefaultModelBinder.ResourceClassKey = "Meassages";


            // Register adapter class
            DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(RequiredAttribute), typeof(MyRequiredAttributeAdapter));
            DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(RegularExpressionAttribute), typeof(MyRegExAttributeAdapter));
            DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(RangeAttribute), typeof(MyRangeAttributeAdapter));
            DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(StringLengthAttribute), typeof(MyStringLengthAttributeAdapter));
        }
        public async Task TryUpdateModelNonGeneric_ModelTypeOverload_ReturnsTrue_IfModelBindsAndValidatesSuccessfully()
        {
            // Arrange
            var binders = new IModelBinder[]
            {
                new TypeConverterModelBinder(),
                new ComplexModelDtoModelBinder(),
                new MutableObjectModelBinder()
            };

            var validator = new DataAnnotationsModelValidatorProvider();
            var model     = new MyModel {
                MyProperty = "Old-Value"
            };
            var modelStateDictionary = new ModelStateDictionary();
            var values = new Dictionary <string, object>
            {
                { "", null },
                { "MyProperty", "MyPropertyValue" }
            };
            var valueProvider    = new TestValueProvider(values);
            var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider();

            // Act
            var result = await ModelBindingHelper.TryUpdateModelAsync(
                model,
                model.GetType(),
                "",
                Mock.Of <HttpContext>(),
                modelStateDictionary,
                TestModelMetadataProvider.CreateDefaultProvider(),
                GetCompositeBinder(binders),
                valueProvider,
                new List <IInputFormatter>(),
                new DefaultObjectValidator(
                    new IExcludeTypeValidationFilter[0],
                    metadataProvider),
                validator);

            // Assert
            Assert.True(result);
            Assert.Equal("MyPropertyValue", model.MyProperty);
        }
Exemplo n.º 9
0
        public void RegisterAdapterFactoryGuardClauses()
        {
            DataAnnotationsModelValidationFactory factory = (metadata, context, attribute) => null;

            // Attribute type cannot be null
            ExceptionHelper.ExpectArgumentNullException(
                () => DataAnnotationsModelValidatorProvider.RegisterAdapterFactory(null, factory),
                "attributeType");

            // Factory cannot be null
            ExceptionHelper.ExpectArgumentNullException(
                () => DataAnnotationsModelValidatorProvider.RegisterAdapterFactory(typeof(MyValidationAttribute), null),
                "factory");

            // Validation attribute must derive from ValidationAttribute
            ExceptionHelper.ExpectArgumentException(
                () => DataAnnotationsModelValidatorProvider.RegisterAdapterFactory(typeof(object), factory),
                "The type System.Object must derive from System.ComponentModel.DataAnnotations.ValidationAttribute\r\nParameter name: attributeType");
        }
Exemplo n.º 10
0
        protected void Application_Start()
        {
            Nybble.Validators.Initializer.RegisterAdapters();
            DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(PostalCodeRemoteAttribute), typeof(RemoteAttributeAdapter));

            log4net.Config.XmlConfigurator.Configure();

            ViewEngines.Engines.Clear();
            ViewEngines.Engines.Add(new AreaViewEngine());

            ModelBinders.Binders.DefaultBinder = new SharpModelBinder();

            ModelValidatorProviders.Providers.Add(new NHibernateValidatorProvider());

            InitializeServiceLocator();

            AreaRegistration.RegisterAllAreas();
            RouteRegistrar.RegisterRoutesTo(RouteTable.Routes);
        }
Exemplo n.º 11
0
        protected void Application_Start()
        {
            log4net.Config.XmlConfigurator.Configure();

            ViewEngines.Engines.Clear();
            ViewEngines.Engines.Add(new AreaViewEngine());

            ModelBinders.Binders.DefaultBinder = new SharpModelBinder();

            DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;
            DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(EmailAttribute), typeof(RegularExpressionAttributeAdapter));

            ModelValidatorProviders.Providers.Clear();
            ModelValidatorProviders.Providers.Add(new DataAnnotationsModelValidatorProvider());

            InitializeServiceLocator();

            AreaRegistration.RegisterAllAreas();
            RouteRegistrar.RegisterRoutesTo(RouteTable.Routes);
        }
        public void StringLengthValidatorsMatch()
        {
            var controllerContext = new ControllerContext();

            var expectedValidatorCount = new DataAnnotationsModelValidatorProvider()
                                         .GetValidators(Expected, controllerContext)
                                         .OfType <StringLengthAttributeAdapter>()
                                         .Count();

            Assert.InRange(expectedValidatorCount, 0, 1);

            Assert.Equal(
                expectedValidatorCount,
                new FluentValidationProvider()
                .GetValidators(Fluent, controllerContext)
                .OfType <RuleModelValidator>()
                .SelectMany(rmv => rmv.GetClientValidationRules())
                .OfType <ModelClientValidationStringLengthRule>()
                .Count());
        }
Exemplo n.º 13
0
        public void NonNullableValueTypeDoesntGetImplicitRequiredAttributeWhenFlagIsOff()
        {
            DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;

            try {
                // Arrange
                var provider = new DataAnnotationsModelValidatorProvider();
                var context  = new ControllerContext();
                var metadata = ModelMetadataProviders.Current.GetMetadataForProperty(() => null, typeof(DummyRequiredAttributeHelperClass), "WithoutAttribute");

                // Act
                IEnumerable <ModelValidator> validators = provider.GetValidators(metadata, context);

                // Assert
                Assert.AreEqual(0, validators.Count());
            }
            finally {
                DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = true;
            }
        }
Exemplo n.º 14
0
        public void RegisterDefaultAdapter()
        {
            var oldFactory = DataAnnotationsModelValidatorProvider.DefaultAttributeFactory;

            try {
                // Arrange
                var metadata = ModelMetadataProviders.Current.GetMetadataForType(() => null, typeof(MyValidatedClass));
                var context  = new ControllerContext();
                DataAnnotationsModelValidatorProvider.RegisterDefaultAdapter(typeof(MyDefaultValidationAttributeAdapter));

                // Act
                var result = new DataAnnotationsModelValidatorProvider().GetValidators(metadata, context).Single();

                // Assert
                Assert.AreEqual(typeof(MyDefaultValidationAttributeAdapter), result.GetType());
            }
            finally {
                DataAnnotationsModelValidatorProvider.DefaultAttributeFactory = oldFactory;
            }
        }
Exemplo n.º 15
0
        protected void Application_Start()
        {
            //Yoonus
            ViewEngines.Engines.Clear();
            ViewEngines.Engines.Add(new RazorViewEngine());
            //Yoonus

            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
            GlobalFilters.Filters.Add(new app.bsms.FilterAttribute());
            DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(RequiredIfAttribute), typeof(RequiredIfValidator));
            DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(AssertThatAttribute), typeof(AssertThatValidator));

            //Yoonus //Previously these 2 lines were here
            //ViewEngines.Engines.Clear();
            //ViewEngines.Engines.Add(new RazorViewEngine());
            //Yoonus
        }
Exemplo n.º 16
0
        public void GetValidatorsReturnsClientValidatorForDerivedTypeAppliedAgainstBaseTypeViaFromLambdaExpression()   // Dev10 Bug #868619
        // Arrange
        {
            var provider = new DataAnnotationsModelValidatorProvider();
            var context  = new ControllerContext();
            var viewdata = new ViewDataDictionary <DerivedModel>();
            var metadata = ModelMetadata.FromLambdaExpression(m => m.MyProperty, viewdata); // Bug is in FromLambdaExpression

            // Act
            IEnumerable <ModelValidator> validators = provider.GetValidators(metadata, context);

            // Assert
            ModelValidator            validator  = validators.Single();
            ModelClientValidationRule clientRule = validator.GetClientValidationRules().Single();

            Assert.IsInstanceOfType(clientRule, typeof(ModelClientValidationStringLengthRule));
            ModelClientValidationStringLengthRule stringLengthRule = (ModelClientValidationStringLengthRule)clientRule;

            Assert.AreEqual(10, stringLengthRule.ValidationParameters["max"]);
        }
    public void CreateValidators_ReturnsValidatorForIValidatableObject()
    {
        // Arrange
        var provider = new DataAnnotationsModelValidatorProvider(
            new ValidationAttributeAdapterProvider(),
            Options.Create(new MvcDataAnnotationsLocalizationOptions()),
            stringLocalizerFactory: null);
        var mockValidatable = Mock.Of <IValidatableObject>();
        var metadata        = _metadataProvider.GetMetadataForType(mockValidatable.GetType());

        var providerContext = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata));

        // Act
        provider.CreateValidators(providerContext);

        // Assert
        var validatorItem = Assert.Single(providerContext.Results);

        Assert.IsType <ValidatableObjectAdapter>(validatorItem.Validator);
    }
    public void CreateValidators_InsertsRequiredValidatorsFirst()
    {
        var provider = new DataAnnotationsModelValidatorProvider(
            new ValidationAttributeAdapterProvider(),
            Options.Create(new MvcDataAnnotationsLocalizationOptions()),
            stringLocalizerFactory: null);
        var metadata = _metadataProvider.GetMetadataForProperty(
            typeof(ClassWithProperty),
            "PropertyWithMultipleValidationAttributes");

        var providerContext = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata));

        // Act
        provider.CreateValidators(providerContext);

        // Assert
        Assert.Equal(4, providerContext.Results.Count);
        Assert.IsAssignableFrom <RequiredAttribute>(((DataAnnotationsModelValidator)providerContext.Results[0].Validator).Attribute);
        Assert.IsAssignableFrom <RequiredAttribute>(((DataAnnotationsModelValidator)providerContext.Results[1].Validator).Attribute);
    }
        public void NonNullableValueTypesGetImplicitRequiredAttribute()
        {
            // Arrange
            var provider = new DataAnnotationsModelValidatorProvider();
            var context  = new ControllerContext();
            var metadata = ModelMetadataProviders.Current.GetMetadataForProperty(
                () => null,
                typeof(DummyRequiredAttributeHelperClass),
                "WithoutAttribute"
                );

            // Act
            IEnumerable <ModelValidator> validators = provider.GetValidators(metadata, context);

            // Assert
            ModelValidator            validator = validators.Single();
            ModelClientValidationRule rule      = validator.GetClientValidationRules().Single();

            Assert.IsType <ModelClientValidationRequiredRule>(rule);
        }
Exemplo n.º 20
0
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            UnityConfig.RegisterComponents();
            GlobalConfiguration.Configure(WebApiConfig.Register);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
            WebHelper.Log = new LogService();

            ModelBinders.Binders.Add(typeof(decimal), new DecimalModelBinder());
            ModelBinders.Binders.Add(typeof(decimal?), new DecimalModelBinder());
            ModelBinders.Binders.Add(typeof(double), new DecimalModelBinder());
            ModelBinders.Binders.Add(typeof(double?), new DecimalModelBinder());
            CriteriaOperator.RegisterCustomFunction(new AccentFilter());
            //Data annotations
            DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(RequiredAttribute), typeof(CustomRequiredAttributeAdapter));
            DevExpress.XtraReports.Web.Extensions.ReportStorageWebExtension.RegisterExtensionGlobal(new CustomReportStorageWebExtension());
            ModelBinders.Binders.DefaultBinder = new DevExpress.Web.Mvc.DevExpressEditorsBinder();
        }
Exemplo n.º 21
0
        public async Task TryUpdateModel_ReturnsFalse_IfModelValidationFails()
        {
            // Arrange
            var expectedMessage = TestPlatformHelper.IsMono ? "The field MyProperty is invalid." :
                                  "The MyProperty field is required.";
            var binders = new IModelBinder[]
            {
                new TypeConverterModelBinder(),
                new ComplexModelDtoModelBinder(),
                new MutableObjectModelBinder()
            };

            var validator            = new DataAnnotationsModelValidatorProvider();
            var model                = new MyModel();
            var modelStateDictionary = new ModelStateDictionary();
            var values               = new Dictionary <string, object>
            {
                { "", null }
            };
            var valueProvider         = new TestValueProvider(values);
            var modelMetadataProvider = TestModelMetadataProvider.CreateDefaultProvider();

            // Act
            var result = await ModelBindingHelper.TryUpdateModelAsync(
                model,
                "",
                Mock.Of <HttpContext>(),
                modelStateDictionary,
                modelMetadataProvider,
                GetCompositeBinder(binders),
                valueProvider,
                new List <IInputFormatter>(),
                new DefaultObjectValidator(new IExcludeTypeValidationFilter[0], modelMetadataProvider),
                validator);

            // Assert
            Assert.False(result);
            var error = Assert.Single(modelStateDictionary["MyProperty"].Errors);

            Assert.Equal(expectedMessage, error.ErrorMessage);
        }
Exemplo n.º 22
0
        protected void Application_Start()
        {
#if DEBUG
            Database.SetInitializer <TaskDBContext>(new TaskDbContextInitializer());
            using (var init = new TaskDBContext())
            {
                init.Database.Initialize(force: false);
            }


            Database.SetInitializer <SchoolContext>(new SchoolInitializer());
            //  Database.SetInitializer<ImageContext>(new ImageInitializer());
            Database.SetInitializer <MovieContext>(new MovieInitializer());

            Log.SingletonLogger.Instance.Attach(new Log.ObserverLogToConsole());
#endif
            //ModelBinders.Binders.Add(typeof(Appointment), new ValidatingModelBinder());

            //ModelValidatorProviders.Providers.Clear();
            //ModelValidatorProviders.Providers.Add(new CustomValidationProvider());

            //HtmlHelper.ClientValidationEnabled = true;
            //HtmlHelper.UnobtrusiveJavaScriptEnabled = true;

            AreaRegistration.RegisterAllAreas();

            RegisterGlobalFilters(GlobalFilters.Filters);
            RegisterRoutes(RouteTable.Routes);

            DataAnnotationsModelValidatorProvider.RegisterAdapter(
                typeof(RemoteUID_Attribute),
                typeof(RemoteValidator));

            ControllerBuilder.Current.SetControllerFactory(new NinjectControllerFactory());

            ModelBinders.Binders.Add(typeof(Cart), new CartModelBinder());

            ModelBinders.Binders.Add(typeof(Appointment), new ValidatingModelBinder());

            //odelBinders.Binders.Add(typeof(DateTime), new DateBinder());
        }
Exemplo n.º 23
0
        public void RegisterAdapterFactory()
        {
            var oldFactories = DataAnnotationsModelValidatorProvider.AttributeFactories;

            try {
                // Arrange
                DataAnnotationsModelValidatorProvider.AttributeFactories = new Dictionary <Type, DataAnnotationsModelValidationFactory>();
                DataAnnotationsModelValidationFactory factory = delegate { return(null); };

                // Act
                DataAnnotationsModelValidatorProvider.RegisterAdapterFactory(typeof(MyValidationAttribute), factory);

                // Assert
                var type = DataAnnotationsModelValidatorProvider.AttributeFactories.Keys.Single();
                Assert.AreEqual(typeof(MyValidationAttribute), type);
                Assert.AreSame(factory, DataAnnotationsModelValidatorProvider.AttributeFactories.Values.Single());
            }
            finally {
                DataAnnotationsModelValidatorProvider.AttributeFactories = oldFactories;
            }
        }
Exemplo n.º 24
0
        protected void Application_Start()
        {
            MvcHandler.DisableMvcResponseHeader = true;
            ViewEngines.Engines.Clear();
            ViewEngines.Engines.Add(new RazorViewEngine());
            DependencyRegistrar.Register("Web.Admin");
            //DependencyRegistrar.Container
            AreaRegistration.RegisterAllAreas();
            //GlobalConfiguration.Configure(WebApiConfig.Register);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
            DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(RequiredIfAttribute), typeof(RequiredAttributeAdapter));
            ModelMetadataProviders.Current = new CachedDataAnnotationsModelMetadataProvider();
            System.Web.Mvc.ModelBinders.Binders.Add(typeof(DataTablesModel), new DataTablesModelBinder());

            string publicKey = WebConfigurationManager.AppSettings["RecaptchaPublicKey"];
            string secretKey = WebConfigurationManager.AppSettings["RecaptchaPrivateKey"];

            ReCaptcha.Configure(publicKey, secretKey);
        }
Exemplo n.º 25
0
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            WebApiConfig.Register(GlobalConfiguration.Configuration);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
            GlobalConfiguration.Configuration.MessageHandlers.Add(new AccessTokenHandler());

            DependencyResolver.SetResolver(new NinjectDependecyResolver());

            AutoMapperPortalConfiguration.Configure();

            Mapper.AssertConfigurationIsValid();

            log4net.Config.XmlConfigurator.Configure();

            DataAnnotationsModelValidatorProvider.RegisterAdapter(
                typeof(PhoneNumberAttribute),
                typeof(RegularExpressionAttributeAdapter));
        }
Exemplo n.º 26
0
        /// <summary>
        /// Sets up Autofac to work with an MVC3 environment.
        /// Should be called from Application_Start
        /// </summary>
        /// <param name="d">A lambda that takes a container builder that then registers any dependencies within the application</param>
        /// <returns>The container so that the application can do any resolves necessary within Application_Start</returns>
        public IContainer RegisterDependencies(Dependencies d)
        {
            var builder = new ContainerBuilder();

            RegisterWebbyStuff(builder);
            builder.RegisterModule <AuthModule>();

            d(builder);

            var container = builder.Build();

            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

            // Enable the flow forms model metadata provider
            ModelMetadataProviders.Current = new MetadataProvider();

            // Enable the flow forms Validator Provider to fix MVC bug
            DataAnnotationsModelValidatorProvider.RegisterDefaultValidatableObjectAdapterFactory((m, c) => new CustomValidatableObjectAdapter(m, c));

            return(container);
        }
Exemplo n.º 27
0
        public async Task TryUpdateModel_ReturnsFalse_IfModelValidationFails()
        {
            // Arrange
            var expectedMessage = TestPlatformHelper.IsMono ? "The field MyProperty is invalid." :
                                                               "The MyProperty field is required.";
            var binders = new IModelBinder[]
            {
                new TypeConverterModelBinder(),
                new ComplexModelDtoModelBinder(),
                new MutableObjectModelBinder()
            };

            var validator = new DataAnnotationsModelValidatorProvider();
            var model = new MyModel();
            var modelStateDictionary = new ModelStateDictionary();
            var values = new Dictionary<string, object>
            {
                { "", null }
            };
            var valueProvider = new TestValueProvider(values);
            var modelMetadataProvider = TestModelMetadataProvider.CreateDefaultProvider();

            // Act
            var result = await ModelBindingHelper.TryUpdateModelAsync(
                model,
                "",
                Mock.Of<HttpContext>(),
                modelStateDictionary,
                modelMetadataProvider,
                GetCompositeBinder(binders),
                valueProvider,
                new List<IInputFormatter>(),
                new DefaultObjectValidator(new IExcludeTypeValidationFilter[0], modelMetadataProvider),
                validator);

            // Assert
            Assert.False(result);
            var error = Assert.Single(modelStateDictionary["MyProperty"].Errors);
            Assert.Equal(expectedMessage, error.ErrorMessage);
        }
Exemplo n.º 28
0
        public override void Boot(RouteCollection routes)
        {
            base.Boot(routes);

            routes.RegisterArea(_installRegistration);
            //register all component areas
            foreach (var c in _componentAreas)
            {
                routes.RegisterArea(c);
            }

            //IMPORTANT: We need to register the Umbraco area after the components because routes overlap.
            // For example, a surface controller might have a url of:
            //   /Umbraco/MyPackage/Surface/MySurface
            // and because the default action is 'Index' its not required to be there, however this same route
            // matches the default Umbraco back office route of Umbraco/{controller}/{action}/{id}
            // so we want to make sure that the plugin routes are matched first
            routes.RegisterArea(_areaRegistration);

            //ensure that the IAttributeTypeRegistry is set
            AttributeTypeRegistry.SetCurrent(_attributeTypeRegistry);

            //register validation extensions
            DataAnnotationsModelValidatorProviderExtensions.RegisterValidationExtensions();

            LocalizationWebConfig.RegisterRoutes(routes, _settings.UmbracoPaths.LocalizationPath);

            //If this is outside of an ASP.Net application (i.e. Unit test) and RegisterVirtualPathProvider is called then an exception is thrown.
            if (HostingEnvironment.IsHosted)
            {
                HostingEnvironment.RegisterVirtualPathProvider(new EmbeddedViewVirtualPathProvider());
            }


            //register custom validation adapters
            DataAnnotationsModelValidatorProvider.RegisterAdapterFactory(
                typeof(HiveIdRequiredAttribute),
                (metadata, controllerContext, attribute) =>
                new RequiredHiveIdAttributeAdapter(metadata, controllerContext, (HiveIdRequiredAttribute)attribute));
        }
Exemplo n.º 29
0
        public async Task BindModel_WithDefaultValidators_ValidatesInstance()
        {
            // Arrange
            var validatorProvider = new DataAnnotationsModelValidatorProvider();
            var binder            = CreateBinderWithDefaults();
            var valueProvider     = new SimpleHttpValueProvider
            {
                { "user.password", "password" },
                { "user.confirmpassword", "password" },
            };
            var bindingContext = CreateBindingContext(binder, valueProvider, typeof(User), new[] { validatorProvider });

            bindingContext.ModelName = "user";

            // Act
            var isBound = await binder.BindModelAsync(bindingContext);

            // Assert
            var error = Assert.Single(bindingContext.ModelState["user"].Errors);

            Assert.Equal("Password does not meet complexity requirements.", error.ErrorMessage);
        }
Exemplo n.º 30
0
        public async Task BindModel_WithDefaultValidators_ValidatesSubProperties()
        {
            // Arrange
            var validatorProvider = new DataAnnotationsModelValidatorProvider();
            var binder            = CreateBinderWithDefaults();
            var valueProvider     = new SimpleHttpValueProvider
            {
                { "user.password", "password-val" },
                { "user.confirmpassword", "not-password-val" },
            };
            var bindingContext = CreateBindingContext(binder, valueProvider, typeof(User), new[] { validatorProvider });

            bindingContext.ModelName = "user";

            // Act
            var isBound = await binder.BindModelAsync(bindingContext);

            // Assert
            var error = Assert.Single(bindingContext.ModelState["user.confirmpassword"].Errors);

            Assert.Equal("'ConfirmPassword' and 'Password' do not match.", error.ErrorMessage);
        }
Exemplo n.º 31
0
        protected void Application_Start()
        {
            //Prevents information leakage from the X-AspNetMvc-Version header of the HTTP response
            MvcHandler.DisableMvcResponseHeader = true;

            //Adds Installation route
            RouteTable.Routes.MapRoute(
                name: "Installation",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Installation", action = "Index", id = UrlParameter.Optional }
                );

            BundleConfig.RegisterBundles(BundleTable.Bundles);

            //I did not apply the following fix as I've decided to use a String data type rather then a DateTime
            //Fixes issue where MVC DateTime is bound with incorrect date format http://stackoverflow.com/a/17651519/496676
            //ModelBinders.Binders.Add(typeof(DateTime), new CustomDateBinder());
            //ModelBinders.Binders.Add(typeof(DateTime?), new NullableCustomDateBinder());

            //Registers the custom attributes with the relative validation providers http://forums.asp.net/t/1528277.aspx
            DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(DataAnnotationsDomainName), typeof(RegularExpressionAttributeAdapter));
            DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(DataAnnotationsRange), typeof(RangeAttributeAdapter));
            DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(DataAnnotationsNotEqualTo), typeof(RegularExpressionAttributeAdapter));
            DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(DataAnnotationsOnlyDecimal), typeof(RegularExpressionAttributeAdapter));
            DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(DataAnnotationsOnlyIntegers), typeof(RegularExpressionAttributeAdapter));
            DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(DataAnnotationsOnlyLetters), typeof(RegularExpressionAttributeAdapter));
            DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(DataAnnotationsOnlyLettersNumbers), typeof(RegularExpressionAttributeAdapter));
            DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(DataAnnotationsOnlyNonAccentedLettersNumbersDashes), typeof(RegularExpressionAttributeAdapter));
            DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(DataAnnotationsOnlyNonAccentedLettersNumbersDashesSpaces), typeof(RegularExpressionAttributeAdapter));
            DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(DataAnnotationsOnlyNumbers), typeof(RegularExpressionAttributeAdapter));
            DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(DataAnnotationsOnlySafeCharacters), typeof(RegularExpressionAttributeAdapter));
            DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(DataAnnotationsRequired), typeof(RequiredAttributeAdapter));
            DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(DataAnnotationsStringLengthMax), typeof(StringLengthAttributeAdapter));
            DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(DataAnnotationsStringLengthMin), typeof(MinLengthAttributeAdapter));
            DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(DataAnnotationsStringLengthRange), typeof(StringLengthAttributeAdapter));
            DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(DataAnnotationsURL), typeof(RegularExpressionAttributeAdapter));

            IsApplicationStart = true;
        }
Exemplo n.º 32
0
        public async Task BindModel_WithDefaultValidators_ValidatesInstance()
        {
            // Arrange
            var validatorProvider = new DataAnnotationsModelValidatorProvider();
            var binder = CreateBinderWithDefaults();
            var valueProvider = new SimpleHttpValueProvider
            {
                { "user.password", "password" },
                { "user.confirmpassword", "password" },
            };
            var bindingContext = CreateBindingContext(binder, valueProvider, typeof(User), new[] { validatorProvider });
            bindingContext.ModelName = "user";

            // Act
            var isBound = await binder.BindModelAsync(bindingContext);

            // Assert
            var error = Assert.Single(bindingContext.ModelState["user"].Errors);
            Assert.Equal("Password does not meet complexity requirements.", error.ErrorMessage);
        }
Exemplo n.º 33
0
        public async Task TryUpdateModel_UsingIncludeExpressionOverload_ReturnsTrue_ModelBindsAndValidatesSuccessfully()
        {
            // Arrange
            var binders = new IModelBinder[]
            {
                new TypeConverterModelBinder(),
                new ComplexModelDtoModelBinder(),
                new MutableObjectModelBinder()
            };

            var validator = new DataAnnotationsModelValidatorProvider();
            var model = new MyModel
            {
                MyProperty = "Old-Value",
                IncludedProperty = "Old-IncludedPropertyValue",
                ExcludedProperty = "Old-ExcludedPropertyValue"
            };

            var modelStateDictionary = new ModelStateDictionary();
            var values = new Dictionary<string, object>
            {
                { "", null },
                { "MyProperty", "MyPropertyValue" },
                { "IncludedProperty", "IncludedPropertyValue" },
                { "ExcludedProperty", "ExcludedPropertyValue" }
            };

            var valueProvider = new TestValueProvider(values);
            var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider();

            // Act
            var result = await ModelBindingHelper.TryUpdateModelAsync(
                model,
                "",
                Mock.Of<HttpContext>(),
                modelStateDictionary,
                TestModelMetadataProvider.CreateDefaultProvider(),
                GetCompositeBinder(binders),
                valueProvider,
                new DefaultObjectValidator(Mock.Of<IValidationExcludeFiltersProvider>(), metadataProvider),
                validator,
                m => m.IncludedProperty,
                m => m.MyProperty);

            // Assert
            Assert.True(result);
            Assert.Equal("MyPropertyValue", model.MyProperty);
            Assert.Equal("IncludedPropertyValue", model.IncludedProperty);
            Assert.Equal("Old-ExcludedPropertyValue", model.ExcludedProperty);
        }
Exemplo n.º 34
0
        public async Task BindModel_WithDefaultValidators_ValidatesSubProperties()
        {
            // Arrange
            var validatorProvider = new DataAnnotationsModelValidatorProvider();
            var binder = CreateBinderWithDefaults();
            var valueProvider = new SimpleHttpValueProvider
            {
                { "user.password", "password-val" },
                { "user.confirmpassword", "not-password-val" },
            };
            var bindingContext = CreateBindingContext(binder, valueProvider, typeof(User), new[] { validatorProvider });
            bindingContext.ModelName = "user";

            // Act
            var isBound = await binder.BindModelAsync(bindingContext);

            // Assert
            var error = Assert.Single(bindingContext.ModelState["user.confirmpassword"].Errors);
            Assert.Equal("'ConfirmPassword' and 'Password' do not match.", error.ErrorMessage);
        }
Exemplo n.º 35
0
        public async Task TryUpdateModel_ReturnsTrue_IfModelBindsAndValidatesSuccessfully()
        {
            // Arrange
            var binders = new IModelBinder[]
            {
                new TypeConverterModelBinder(),
                new ComplexModelDtoModelBinder(),
                new MutableObjectModelBinder()
            };

            var validator = new DataAnnotationsModelValidatorProvider();
            var model = new MyModel { MyProperty = "Old-Value" };
            var modelStateDictionary = new ModelStateDictionary();
            var values = new Dictionary<string, object>
            {
                { "", null },
                { "MyProperty", "MyPropertyValue" }
            };
            var valueProvider = new TestValueProvider(values);
            var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider();

            // Act
            var result = await ModelBindingHelper.TryUpdateModelAsync(
                model,
                "",
                Mock.Of<HttpContext>(),
                modelStateDictionary,
                metadataProvider,
                GetCompositeBinder(binders),
                valueProvider,
                new List<IInputFormatter>(),
                new DefaultObjectValidator(new IExcludeTypeValidationFilter[0], metadataProvider),
                validator);

            // Assert
            Assert.True(result);
            Assert.Equal("MyPropertyValue", model.MyProperty);
        }
Exemplo n.º 36
0
        public async Task TryUpdateModelNonGeneric_PredicateOverload_ReturnsTrue_ModelBindsAndValidatesSuccessfully()
        {
            // Arrange
            var binders = new IModelBinder[]
            {
                new TypeConverterModelBinder(),
                new ComplexModelDtoModelBinder(),
                new MutableObjectModelBinder()
            };

            var validator = new DataAnnotationsModelValidatorProvider();
            var model = new MyModel
            {
                MyProperty = "Old-Value",
                IncludedProperty = "Old-IncludedPropertyValue",
                ExcludedProperty = "Old-ExcludedPropertyValue"
            };

            var modelStateDictionary = new ModelStateDictionary();
            var values = new Dictionary<string, object>
            {
                { "", null },
                { "MyProperty", "MyPropertyValue" },
                { "IncludedProperty", "IncludedPropertyValue" },
                { "ExcludedProperty", "ExcludedPropertyValue" }
            };

            Func<ModelBindingContext, string, bool> includePredicate =
                (context, propertyName) =>
                                string.Equals(propertyName, "IncludedProperty", StringComparison.OrdinalIgnoreCase) ||
                                string.Equals(propertyName, "MyProperty", StringComparison.OrdinalIgnoreCase);

            var valueProvider = new TestValueProvider(values);
            var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider();

            // Act
            var result = await ModelBindingHelper.TryUpdateModelAsync(
                                                    model,
                                                    model.GetType(),
                                                    "",
                                                    Mock.Of<HttpContext>(),
                                                    modelStateDictionary,
                                                    metadataProvider,
                                                    GetCompositeBinder(binders),
                                                    valueProvider,
                                                    new List<IInputFormatter>(),
                                                    new DefaultObjectValidator(
                                                        new IExcludeTypeValidationFilter[0],
                                                        metadataProvider),
                                                    validator,
                                                    includePredicate);

            // Assert
            Assert.True(result);
            Assert.Equal("MyPropertyValue", model.MyProperty);
            Assert.Equal("IncludedPropertyValue", model.IncludedProperty);
            Assert.Equal("Old-ExcludedPropertyValue", model.ExcludedProperty);
        }
Exemplo n.º 37
0
        public async Task TryUpdateModel_UsingDefaultIncludeOverload_IncludesAllProperties()
        {
            // Arrange
            var binders = new IModelBinder[]
            {
                new TypeConverterModelBinder(),
                new MutableObjectModelBinder()
            };

            var validator = new DataAnnotationsModelValidatorProvider();
            var model = new MyModel
            {
                MyProperty = "Old-Value",
                IncludedProperty = "Old-IncludedPropertyValue",
                ExcludedProperty = "Old-ExcludedPropertyValue"
            };

            var modelStateDictionary = new ModelStateDictionary();
            var values = new Dictionary<string, object>
            {
                { "", null },
                { "MyProperty", "MyPropertyValue" },
                { "IncludedProperty", "IncludedPropertyValue" },
                { "ExcludedProperty", "ExcludedPropertyValue" }
            };

            var valueProvider = new TestValueProvider(values);
            var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider();

            // Act
            var result = await ModelBindingHelper.TryUpdateModelAsync(
                model,
                "",
                Mock.Of<HttpContext>(),
                modelStateDictionary,
                metadataProvider,
                GetCompositeBinder(binders),
                valueProvider,
                new List<IInputFormatter>(),
                new DefaultObjectValidator(new IExcludeTypeValidationFilter[0], metadataProvider),
                validator);

            // Assert
            // Includes everything.
            Assert.True(result);
            Assert.Equal("MyPropertyValue", model.MyProperty);
            Assert.Equal("IncludedPropertyValue", model.IncludedProperty);
            Assert.Equal("ExcludedPropertyValue", model.ExcludedProperty);
        }