コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        public async Task HeaderBinder_BindsHeaders_ToStringType_WithoutInnerModelBinder(HeaderModelBinder binder)
        {
            // Arrange
            var type           = typeof(string);
            var header         = "User-Agent";
            var headerValue    = "UnitTest";
            var bindingContext = CreateContext(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);
        }
コード例 #5
0
        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>);
        }
コード例 #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 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);
        }
コード例 #7
0
        public async Task HeaderBinder_BindsHeaders_ToStringType()
        {
            // Arrange
            var type           = typeof(string);
            var header         = "User-Agent";
            var headerValue    = "UnitTest";
            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, bindingContext.Result.Model);
        }