public async Task BindModel() { // Arrange var metadataProvider = new EmptyModelMetadataProvider(); ModelBindingContext bindingContext = new ModelBindingContext { ModelMetadata = metadataProvider.GetMetadataForType(typeof(IDictionary<int, string>)), ModelName = "someName", ValueProvider = new SimpleHttpValueProvider { { "someName[0]", new KeyValuePair<int, string>(42, "forty-two") }, { "someName[1]", new KeyValuePair<int, string>(84, "eighty-four") } }, OperationBindingContext = new OperationBindingContext { ModelBinder = CreateKvpBinder(), MetadataProvider = metadataProvider } }; var binder = new DictionaryModelBinder<int, string>(); // Act var retVal = await binder.BindModelAsync(bindingContext); // Assert Assert.NotNull(retVal); var dictionary = Assert.IsAssignableFrom<IDictionary<int, string>>(retVal.Model); Assert.NotNull(dictionary); Assert.Equal(2, dictionary.Count); Assert.Equal("forty-two", dictionary[42]); Assert.Equal("eighty-four", dictionary[84]); }
private static DefaultModelBindingContext GetBindingContext(Type modelType, HttpContext httpContext) { var metadataProvider = new EmptyModelMetadataProvider(); var bindingContext = new DefaultModelBindingContext { ActionContext = new ActionContext() { HttpContext = httpContext, }, ModelMetadata = metadataProvider.GetMetadataForType(modelType), ModelName = "file", ValidationState = new ValidationStateDictionary(), }; return bindingContext; }
private static DefaultModelBindingContext GetBindingContext(Type modelType) { var metadataProvider = new EmptyModelMetadataProvider(); DefaultModelBindingContext bindingContext = new DefaultModelBindingContext { ActionContext = new ActionContext() { HttpContext = new DefaultHttpContext(), }, ModelMetadata = metadataProvider.GetMetadataForType(modelType), ModelName = "someName", ValueProvider = new SimpleValueProvider(), ValidationState = new ValidationStateDictionary(), }; return bindingContext; }
private static ModelBindingContext GetBindingContext(Type modelType) { var metadataProvider = new EmptyModelMetadataProvider(); ModelBindingContext bindingContext = new ModelBindingContext { ModelMetadata = metadataProvider.GetMetadataForType(modelType), ModelName = "someName", ValueProvider = new SimpleHttpValueProvider(), OperationBindingContext = new OperationBindingContext { ModelBinder = new CancellationTokenModelBinder(), MetadataProvider = metadataProvider, HttpContext = new DefaultHttpContext(), } }; return bindingContext; }
public async Task ReadAsync_AcceptsUTF16Characters() { // Arrange var expectedInt = 10; var expectedString = "TestString"; var input = "<?xml version=\"1.0\" encoding=\"UTF-16\"?>" + "<TestLevelOne><SampleInt>" + expectedInt + "</SampleInt>" + "<sampleString>" + expectedString + "</sampleString></TestLevelOne>"; var formatter = new XmlDataContractSerializerInputFormatter(new MvcOptions()); var contentBytes = Encoding.Unicode.GetBytes(input); var modelState = new ModelStateDictionary(); var httpContext = GetHttpContext(contentBytes, contentType: "application/xml; charset=utf-16"); var provider = new EmptyModelMetadataProvider(); var metadata = provider.GetMetadataForType(typeof(TestLevelOne)); var context = new InputFormatterContext( httpContext, modelName: string.Empty, modelState: modelState, metadata: metadata, readerFactory: new TestHttpRequestStreamReaderFactory().CreateReader); // Act var result = await formatter.ReadAsync(context); // Assert Assert.NotNull(result); Assert.False(result.HasError); var model = Assert.IsType <TestLevelOne>(result.Model); Assert.Equal(expectedInt, model.SampleInt); Assert.Equal(expectedString, model.sampleString); }
public void CanRead_ReturnsTrueForAnySupportedContentType(string requestContentType, bool expectedCanRead) { // Arrange var formatter = new XmlSerializerInputFormatter(new MvcOptions()); var contentBytes = Encoding.UTF8.GetBytes("content"); var modelState = new ModelStateDictionary(); var httpContext = GetHttpContext(contentBytes, contentType: requestContentType); var provider = new EmptyModelMetadataProvider(); var metadata = provider.GetMetadataForType(typeof(string)); var formatterContext = new InputFormatterContext( httpContext, modelName: string.Empty, modelState: modelState, metadata: metadata, readerFactory: new TestHttpRequestStreamReaderFactory().CreateReader); // Act var result = formatter.CanRead(formatterContext); // Assert Assert.Equal(expectedCanRead, result); }
public static ModelMetadata MetaData(this Type type) { return(Provider.GetMetadataForType(type)); }
private static ModelMetadata GetMetadata(Type modelType) { EmptyModelMetadataProvider provider = new EmptyModelMetadataProvider(); return(provider.GetMetadataForType(null, modelType)); }
private static ModelBindingContext GetBindingContext( IValueProvider valueProvider, IModelBinder innerBinder = null, Type keyValuePairType = null) { var metataProvider = new EmptyModelMetadataProvider(); var bindingContext = new ModelBindingContext { ModelMetadata = metataProvider.GetMetadataForType(keyValuePairType ?? typeof(KeyValuePair<int, string>)), ModelName = "someName", ValueProvider = valueProvider, OperationBindingContext = new OperationBindingContext { ModelBinder = innerBinder ?? CreateIntBinder(), MetadataProvider = metataProvider, ValidatorProvider = new DataAnnotationsModelValidatorProvider() } }; return bindingContext; }
private static ModelBindingContext GetBindingContext(IValueProvider valueProvider) { var metadataProvider = new EmptyModelMetadataProvider(); ModelBindingContext bindingContext = new ModelBindingContext { ModelMetadata = metadataProvider.GetMetadataForType(null, typeof(int[])), ModelName = "someName", ValueProvider = valueProvider, ModelBinder = CreateIntBinder(), MetadataProvider = metadataProvider }; return bindingContext; }
private static ModelBindingContext GetBindingContext(IValueProvider valueProvider, Type modelType) { var metadataProvider = new EmptyModelMetadataProvider(); var bindingContext = new ModelBindingContext { ModelMetadata = metadataProvider.GetMetadataForType(modelType), ModelName = "foo", ModelState = new ModelStateDictionary(), ValueProvider = valueProvider, OperationBindingContext = new OperationBindingContext { MetadataProvider = metadataProvider, } }; return bindingContext; }
public async Task ProcessAsync_CallsGeneratorWithExpectedValues_ItemsAndMultiple( IEnumerable <SelectListItem> inputItems, string multiple, IEnumerable <SelectListItem> expectedItems, bool expectedAllowMultiple) { // Arrange var contextAttributes = new Dictionary <string, object> { // Attribute will be restored if value matches "multiple". { "multiple", multiple }, }; var originalAttributes = new Dictionary <string, string>(); var propertyName = "Property1"; var expectedTagName = "select"; var tagHelperContext = new TagHelperContext( contextAttributes, uniqueId: "test", getChildContentAsync: () => Task.FromResult("Something")); var output = new TagHelperOutput(expectedTagName, originalAttributes); var metadataProvider = new EmptyModelMetadataProvider(); string model = null; var metadata = metadataProvider.GetMetadataForType(() => model, typeof(string)); var htmlGenerator = new Mock <IHtmlGenerator>(MockBehavior.Strict); var viewContext = TestableHtmlGenerator.GetViewContext(model, htmlGenerator.Object, metadataProvider); // Simulate a (model => model) scenario. E.g. the calling helper may appear in a low-level template. var modelExpression = new ModelExpression(string.Empty, metadata); viewContext.ViewData.TemplateInfo.HtmlFieldPrefix = propertyName; ICollection <string> selectedValues = new string[0]; htmlGenerator .Setup(real => real.GenerateSelect( viewContext, metadata, null, // optionLabel string.Empty, // name expectedItems, expectedAllowMultiple, null, // htmlAttributes out selectedValues)) .Returns((TagBuilder)null) .Verifiable(); var tagHelper = new SelectTagHelper { For = modelExpression, Items = inputItems, Generator = htmlGenerator.Object, Multiple = multiple, ViewContext = viewContext, }; // Act await tagHelper.ProcessAsync(tagHelperContext, output); // Assert htmlGenerator.Verify(); Assert.NotNull(viewContext.FormContext?.FormData); var keyValuePair = Assert.Single( viewContext.FormContext.FormData, entry => entry.Key == SelectTagHelper.SelectedValuesFormDataKey); Assert.Same(selectedValues, keyValuePair.Value); }
private static ModelBindingContext GetModelBindingContext(IValueProvider valueProvider) { var metadataProvider = new EmptyModelMetadataProvider(); var bindingContext = new ModelBindingContext { ModelMetadata = metadataProvider.GetMetadataForType(typeof(int)), ModelName = "someName", ValueProvider = valueProvider, OperationBindingContext = new OperationBindingContext { ModelBinder = CreateIntBinder(), MetadataProvider = metadataProvider } }; return bindingContext; }
public static ModelMetadata CreateModelMetadata <T>() { var provider = new EmptyModelMetadataProvider(); return(provider.GetMetadataForType(null, typeof(T))); }
private static ModelBindingContext GetBindingContext(IValueProvider valueProvider, IModelBinder innerBinder = null) { var metataProvider = new EmptyModelMetadataProvider(); var bindingContext = new ModelBindingContext { ModelMetadata = metataProvider.GetMetadataForType(null, typeof(KeyValuePair<int, string>)), ModelName = "someName", ValueProvider = valueProvider, ModelBinder = innerBinder ?? CreateIntBinder(), MetadataProvider = metataProvider, ValidatorProviders = Enumerable.Empty<IModelValidatorProvider>() }; return bindingContext; }
private static ModelMetadata GetMetadata() { ModelMetadataProvider provider = new EmptyModelMetadataProvider(); return provider.GetMetadataForType(null, typeof(object)); }
private static ModelBindingContext GetBindingContext( IValueProvider valueProvider, IModelBinder innerBinder = null, Type keyValuePairType = null) { var metataProvider = new EmptyModelMetadataProvider(); var bindingContext = new ModelBindingContext { ModelMetadata = metataProvider.GetMetadataForType( keyValuePairType ?? typeof(KeyValuePair<int, string>)), ModelName = "someName", ModelState = new ModelStateDictionary(), ValueProvider = valueProvider, OperationBindingContext = new OperationBindingContext { ModelBinder = innerBinder ?? CreateIntBinder(), MetadataProvider = metataProvider, ValidatorProvider = new DataAnnotationsModelValidatorProvider( new TestOptionsManager<MvcDataAnnotationsLocalizationOptions>(), stringLocalizerFactory: null) } }; return bindingContext; }
public void AddValidation_ExistingInteger() { IModelMetadataProvider provider = new EmptyModelMetadataProvider(); ModelMetadata metadata = provider.GetMetadataForType(typeof(Int64)); Dictionary <String, String> attributes = new() { ["data-val-integer"] = "Test" };
public async Task ProcessAsync_CallsGeneratorWithExpectedValues_ItemsAndMultiple( IEnumerable <SelectListItem> inputItems, string multiple, IEnumerable <SelectListItem> expectedItems, bool expectedAllowMultiple) { // Arrange var contextAttributes = new Dictionary <string, object> { // Attribute will be restored if value matches "multiple". { "multiple", multiple }, }; var originalAttributes = new Dictionary <string, string>(); var content = "original content"; var propertyName = "Property1"; var expectedTagName = "select"; var tagHelperContext = new TagHelperContext(contextAttributes); var output = new TagHelperOutput(expectedTagName, originalAttributes, content); // TODO: https://github.com/aspnet/Mvc/issues/1253 // In real (model => model) scenario, ModelExpression should have name "" and // TemplateInfo.HtmlFieldPrefix should be "Property1" but empty ModelExpression name is not currently // supported, see also #1408. var metadataProvider = new EmptyModelMetadataProvider(); string model = null; var metadata = metadataProvider.GetMetadataForType(() => model, typeof(string)); var modelExpression = new ModelExpression(propertyName, metadata); var htmlGenerator = new Mock <IHtmlGenerator>(MockBehavior.Strict); var viewContext = TestableHtmlGenerator.GetViewContext(model, htmlGenerator.Object, metadataProvider); ICollection <string> selectedValues = new string[0]; htmlGenerator .Setup(real => real.GenerateSelect( viewContext, metadata, null, // optionLabel propertyName, // name expectedItems, expectedAllowMultiple, null, // htmlAttributes out selectedValues)) .Returns((TagBuilder)null) .Verifiable(); var tagHelper = new SelectTagHelper { For = modelExpression, Items = inputItems, Generator = htmlGenerator.Object, Multiple = multiple, ViewContext = viewContext, }; // Act await tagHelper.ProcessAsync(tagHelperContext, output); // Assert htmlGenerator.Verify(); Assert.NotNull(viewContext.FormContext?.FormData); var keyValuePair = Assert.Single( viewContext.FormContext.FormData, entry => entry.Key == SelectTagHelper.SelectedValuesFormDataKey); Assert.Same(selectedValues, keyValuePair.Value); }
private static ModelMetadata GetMetadata() { ModelMetadataProvider provider = new EmptyModelMetadataProvider(); return(provider.GetMetadataForType(null, typeof(object))); }
private static ModelValidationNode GetValidationNode() { var provider = new EmptyModelMetadataProvider(); var metadata = provider.GetMetadataForType(null, typeof(object)); return new ModelValidationNode(metadata, "someKey"); }