public async Task BindModelAsync_ReturnsNonEmptyResult_ForAllTypes_WithHeaderBindingSource(Type type)
        {
            // Arrange
            var binder         = new HeaderModelBinder();
            var bindingContext = GetBindingContext(type);

            // Act
            await binder.BindModelAsync(bindingContext);

            // Assert
            Assert.False(bindingContext.Result.IsModelSet);
        }
Example #2
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);
        }
        public async Task HeaderBinder_ReturnsFailedResult_ForCollectionsItCannotCreate()
        {
            // Arrange
            var header         = "Accept";
            var headerValue    = "application/json,text/json";
            var binder         = new HeaderModelBinder();
            var bindingContext = GetBindingContext(typeof(ISet <string>));

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

            // Act
            await binder.BindModelAsync(bindingContext);

            // Assert
            Assert.False(bindingContext.Result.IsModelSet);
            Assert.Null(bindingContext.Result.Model);
        }
        public async Task HeaderBinder_ReturnsFailedResult_ForReadOnlyDestination()
        {
            // Arrange
            var header         = "Accept";
            var headerValue    = "application/json,text/json";
            var binder         = new HeaderModelBinder();
            var bindingContext = GetBindingContextForReadOnlyArray();

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

            // Act
            await binder.BindModelAsync(bindingContext);

            // Assert
            Assert.False(bindingContext.Result.IsModelSet);
            Assert.Null(bindingContext.Result.Model);
        }
Example #5
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.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);
        }
Example #6
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.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);
        }
        public async Task HeaderBinder_BindsHeaders_ForCollectionsItCanCreate(Type destinationType)
        {
            // Arrange
            var header         = "Accept";
            var headerValue    = "application/json,text/json";
            var binder         = new HeaderModelBinder();
            var bindingContext = GetBindingContext(destinationType);

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

            // Act
            await binder.BindModelAsync(bindingContext);

            // Assert
            Assert.True(bindingContext.Result.IsModelSet);
            Assert.IsAssignableFrom(destinationType, bindingContext.Result.Model);
            Assert.Equal(headerValue.Split(','), bindingContext.Result.Model as IEnumerable <string>);
        }
        public async Task HeaderBinder_BindsHeaders_ToStringType()
        {
            // Arrange
            var type           = typeof(string);
            var header         = "User-Agent";
            var headerValue    = "UnitTest";
            var binder         = new HeaderModelBinder();
            var bindingContext = GetBindingContext(type);

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

            // Act
            await binder.BindModelAsync(bindingContext);

            // Assert
            Assert.True(bindingContext.Result.IsModelSet);
            Assert.Equal(headerValue, bindingContext.Result.Model);
        }
        public async Task HeaderBinder_BindsHeaders_ToStringCollection()
        {
            // Arrange
            var type           = typeof(string[]);
            var header         = "Accept";
            var headerValue    = "application/json,text/json";
            var binder         = new HeaderModelBinder(NullLoggerFactory.Instance);
            var bindingContext = GetBindingContext(type);

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

            // Act
            await binder.BindModelAsync(bindingContext);

            // Assert
            Assert.True(bindingContext.Result.IsModelSet);
            Assert.Equal(headerValue.Split(','), bindingContext.Result.Model);
        }
Example #10
0
        public async Task HeaderBinder_ReturnsFailedResult_ForReadOnlyDestination()
        {
            // Arrange
            var header              = "Accept";
            var headerValue         = "application/json,text/json";
            var binder              = new HeaderModelBinder();
            var modelBindingContext = GetBindingContextForReadOnlyArray();

            modelBindingContext.FieldName = header;
            modelBindingContext.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);
        }
Example #11
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);
        }