Exemplo n.º 1
0
        public async Task BindModelAsync_ReturnsNonEmptyResult_ForAllTypes_WithHeaderBindingSource(Type type)
        {
            // Arrange
            var binder = new HeaderModelBinder();
            var modelBindingContext = GetBindingContext(type);

            // Act
            var result = await binder.BindModelResultAsync(modelBindingContext);

            // Assert
            Assert.NotEqual(default(ModelBindingResult), result);
        }
Exemplo n.º 2
0
        public async Task HeaderBinder_BindsHeaders_ToStringType()
        {
            // Arrange
            var type                = typeof(string);
            var header              = "User-Agent";
            var headerValue         = "UnitTest";
            var binder              = new HeaderModelBinder();
            var modelBindingContext = GetBindingContext(type);

            modelBindingContext.FieldName = header;
            modelBindingContext.OperationBindingContext.HttpContext.Request.Headers.Add(header, new[] { headerValue });

            // Act
            var result = await binder.BindModelResultAsync(modelBindingContext);

            // Assert
            Assert.NotEqual(default(ModelBindingResult), result);
            Assert.Equal(headerValue, result.Model);
        }
Exemplo n.º 3
0
        public async Task HeaderBinder_BindsHeaders_ToStringCollection()
        {
            // Arrange
            var type                = typeof(string[]);
            var header              = "Accept";
            var headerValue         = "application/json,text/json";
            var binder              = new HeaderModelBinder();
            var modelBindingContext = GetBindingContext(type);

            modelBindingContext.FieldName = header;
            modelBindingContext.OperationBindingContext.HttpContext.Request.Headers.Add(header, new[] { headerValue });

            // Act
            var result = await binder.BindModelResultAsync(modelBindingContext);

            // Assert
            Assert.NotEqual(default(ModelBindingResult), result);
            Assert.Equal(headerValue.Split(','), result.Model);
        }
Exemplo n.º 4
0
        public async Task HeaderBinder_BindsHeaders_ForCollectionsItCanCreate(Type destinationType)
        {
            // Arrange
            var header              = "Accept";
            var headerValue         = "application/json,text/json";
            var binder              = new HeaderModelBinder();
            var modelBindingContext = GetBindingContext(destinationType);

            modelBindingContext.FieldName = header;
            modelBindingContext.OperationBindingContext.HttpContext.Request.Headers.Add(header, new[] { headerValue });

            // Act
            var result = await binder.BindModelResultAsync(modelBindingContext);

            // Assert
            Assert.NotEqual(default(ModelBindingResult), result);
            Assert.True(result.IsModelSet);
            Assert.IsAssignableFrom(destinationType, result.Model);
            Assert.Equal(headerValue.Split(','), result.Model as IEnumerable <string>);
        }
Exemplo n.º 5
0
        public async Task HeaderBinder_ReturnsFailedResult_ForCollectionsItCannotCreate()
        {
            // Arrange
            var header              = "Accept";
            var headerValue         = "application/json,text/json";
            var binder              = new HeaderModelBinder();
            var modelBindingContext = GetBindingContext(typeof(ISet <string>));

            modelBindingContext.FieldName = header;
            modelBindingContext.OperationBindingContext.HttpContext.Request.Headers.Add(header, new[] { headerValue });

            // Act
            var result = await binder.BindModelResultAsync(modelBindingContext);

            // Assert
            Assert.NotEqual(default(ModelBindingResult), result);
            Assert.False(result.IsModelSet);
            Assert.Equal("modelName", result.Key);
            Assert.Null(result.Model);
        }
Exemplo n.º 6
0
        public async Task HeaderBinder_ReturnsNothing_ForNonHeaderBindingSource()
        {
            // Arrange
            var type        = typeof(string);
            var header      = "User-Agent";
            var headerValue = "UnitTest";

            var binder = new HeaderModelBinder();
            var modelBindingContext = GetBindingContext(type);

            modelBindingContext.BindingSource = BindingSource.Body;

            modelBindingContext.FieldName = header;
            modelBindingContext.OperationBindingContext.HttpContext.Request.Headers.Add(header, new[] { headerValue });

            // Act
            var result = await binder.BindModelResultAsync(modelBindingContext);

            // Assert
            Assert.Equal(default(ModelBindingResult), result);
        }