public void Check_CustomModelBinder_On_Parameter() { HttpConfiguration config = new HttpConfiguration(); config.Services.ReplaceRange( typeof(ValueProviderFactory), new ValueProviderFactory[] { new CustomValueProviderFactory(), } ); DefaultActionValueBinder binder = new DefaultActionValueBinder(); var binding = binder.GetBinding( GetAction("Action_CustomModelBinder_On_Parameter_WithProvider", config) ); Assert.Single(binding.ParameterBindings); AssertIsModelBound(binding, 0); ModelBinderParameterBinding p = (ModelBinderParameterBinding)binding.ParameterBindings[ 0 ]; Assert.IsType <CustomModelBinder>(p.Binder); // Since the ModelBinderAttribute didn't specify the valueproviders, we should pull those from config. ValueProviderFactory valueProviderFactory = Assert.Single(p.ValueProviderFactories); Assert.IsType <CustomValueProviderFactory>(valueProviderFactory); }
public void Check_IntArray_Is_FromBody() { DefaultActionValueBinder binder = new DefaultActionValueBinder(); var binding = binder.GetBinding(GetAction("Action_IntArray")); Assert.Single(binding.ParameterBindings); AssertIsBody(binding, 0); }
public void Check_String_TypeConverter_Is_ModelBound() { DefaultActionValueBinder binder = new DefaultActionValueBinder(); var binding = binder.GetBinding(GetAction("Action_ComplexTypeWithStringConverter")); Assert.Single(binding.ParameterBindings); AssertIsModelBound(binding, 0); }
public void Check_Request_Parameter() { DefaultActionValueBinder binder = new DefaultActionValueBinder(); var binding = binder.GetBinding(GetAction("Action_Request_Parameter")); Assert.Single(binding.ParameterBindings); AssertIsCustomBinder <HttpRequestParameterBinding>(binding, 0); }
public void Check_CustomBindingAttribute() { DefaultActionValueBinder binder = new DefaultActionValueBinder(); var binding = binder.GetBinding(GetAction("Action_CustomBindingAttribute")); Assert.Equal(1, binding.ParameterBindings.Length); Assert.Same(CustomBindingAttribute.MockBinding, binding.ParameterBindings[0]); }
public void Check_HttpContent() { DefaultActionValueBinder binder = new DefaultActionValueBinder(); var binding = binder.GetBinding(GetAction("Action_HttpContent_Parameter")); Assert.Equal(1, binding.ParameterBindings.Length); AssertIsError(binding, 0); }
public void Check_Complex_Type_FromBody() { DefaultActionValueBinder binder = new DefaultActionValueBinder(); var binding = binder.GetBinding(GetAction("Action_Complex_Type")); Assert.Equal(1, binding.ParameterBindings.Length); AssertIsBody(binding, 0); }
public void Check_NullableInt_Is_ModelBound() { DefaultActionValueBinder binder = new DefaultActionValueBinder(); var binding = binder.GetBinding(GetAction("Action_NullableInt")); Assert.Equal(1, binding.ParameterBindings.Length); AssertIsModelBound(binding, 0); }
public void Check_Empty_Action() { DefaultActionValueBinder binder = new DefaultActionValueBinder(); var binding = binder.GetBinding(GetAction("Action_Empty")); Assert.NotNull(binding.ParameterBindings); Assert.Empty(binding.ParameterBindings); }
public void Check_Cancellation_Token() { DefaultActionValueBinder binder = new DefaultActionValueBinder(); var binding = binder.GetBinding(GetAction("Action_CancellationToken")); Assert.Single(binding.ParameterBindings); AssertIsCancellationToken(binding, 0); }
public void Check_Int_Is_ModelBound() { DefaultActionValueBinder binder = new DefaultActionValueBinder(); var binding = binder.GetBinding(GetAction("Action_Int")); Assert.Single(binding.ParameterBindings); AssertIsModelBound(binding, 0); }
public void Check_String_TypeConverter_With_Body_Override() { DefaultActionValueBinder binder = new DefaultActionValueBinder(); var binding = binder.GetBinding(GetAction("Action_ComplexTypeWithStringConverter_Body_Override")); Assert.Equal(1, binding.ParameterBindings.Length); AssertIsBody(binding, 0); }
public void Check_Parameter_With_ModelBinder_Attribute_On_Type() { DefaultActionValueBinder binder = new DefaultActionValueBinder(); var binding = binder.GetBinding(GetAction("Action_ComplexParameter_With_ModelBinder")); Assert.Single(binding.ParameterBindings); AssertIsModelBound(binding, 0); }
public void Check_Complex_ValueType_FromBody() { DefaultActionValueBinder binder = new DefaultActionValueBinder(); var binding = binder.GetBinding(GetAction("Action_Complex_ValueType")); Assert.Single(binding.ParameterBindings); AssertIsBody(binding, 0); }
public void Check_Derived_HttpContent() { DefaultActionValueBinder binder = new DefaultActionValueBinder(); var binding = binder.GetBinding(GetAction("Action_Derived_HttpContent_Parameter")); Assert.Single(binding.ParameterBindings); AssertIsError(binding, 0); }
public void Check_Complex_Type_FromUri() { // [FromUri] is just a specific instance of ModelBinder attribute DefaultActionValueBinder binder = new DefaultActionValueBinder(); var binding = binder.GetBinding(GetAction("Action_Complex_Type_Uri")); Assert.Single(binding.ParameterBindings); AssertIsModelBound(binding, 0); }
public void Check_Complex_Type_FromBody_And_FromUri() { DefaultActionValueBinder binder = new DefaultActionValueBinder(); var binding = binder.GetBinding(GetAction("Action_Complex_Type_UriAndBody")); Assert.Equal(2, binding.ParameterBindings.Length); AssertIsModelBound(binding, 0); AssertIsBody(binding, 1); }
public void Check_String_String_IsModelBound() { DefaultActionValueBinder binder = new DefaultActionValueBinder(); var binding = binder.GetBinding(GetAction("Action_String_String")); Assert.Equal(2, binding.ParameterBindings.Length); AssertIsModelBound(binding, 0); AssertIsModelBound(binding, 1); }
public void Check_Explicit_Int_Is_ModelBound() { // Even though int is implicitly model bound, still ok to specify it explicitly DefaultActionValueBinder binder = new DefaultActionValueBinder(); var binding = binder.GetBinding(GetAction("Action_Int_FromUri")); Assert.Single(binding.ParameterBindings); AssertIsModelBound(binding, 0); }
public void Check_CustomBindingAttribute() { DefaultActionValueBinder binder = new DefaultActionValueBinder(); var binding = binder.GetBinding(GetAction("Action_CustomBindingAttribute")); HttpParameterBinding parameterBinding = Assert.Single(binding.ParameterBindings); Assert.Same(CustomBindingAttribute.MockBinding, parameterBinding); }
public void Check_Closest_Attribute_Wins() { DefaultActionValueBinder binder = new DefaultActionValueBinder(); var binding = binder.GetBinding(GetAction("Action_Closest_Attribute_Wins")); // Have 2 attributes that conflict with each other. Still get the contract, but it has an error in it. Assert.Single(binding.ParameterBindings); AssertIsModelBound(binding, 0); }
public void Error_Conflicting_Attributes() { DefaultActionValueBinder binder = new DefaultActionValueBinder(); var binding = binder.GetBinding(GetAction("Action_Conflicting_Attributes")); // Have 2 attributes that conflict with each other. Still get the contract, but it has an error in it. Assert.Single(binding.ParameterBindings); AssertIsError(binding, 0); }
public void Check_SimpleTypes_Are_ModelBound() { DefaultActionValueBinder binder = new DefaultActionValueBinder(); var binding = binder.GetBinding(GetAction("Action_SimpleTypes")); for (int i = 0; i < binding.ParameterBindings.Length; i++) { AssertIsModelBound(binding, 0); } }
public void Check_Customer_Binder() { // Mere presence of a ModelBinder attribute means the type is model bound. DefaultActionValueBinder binder = new DefaultActionValueBinder(); var binding = binder.GetBinding(GetAction("Action_Default_Custom_Model_Binder")); Assert.Single(binding.ParameterBindings); AssertIsModelBound(binding, 0); }
public void Check_Config_Override_Use_ModelBinding() { HttpConfiguration config = new HttpConfiguration(); config.ParameterBindingRules.Add(param => param.BindWithModelBinding()); DefaultActionValueBinder binder = new DefaultActionValueBinder(); var binding = binder.GetBinding(GetAction("Action_Complex_Type", config)); Assert.Single(binding.ParameterBindings); AssertIsModelBound(binding, 0); }
public void Check_Two_Complex_Types_FromBody() { DefaultActionValueBinder binder = new DefaultActionValueBinder(); // It's illegal to have multiple parameters from the body. // But we should still be able to get a binding for it. We just can't execute it. var binding = binder.GetBinding(GetAction("Action_Two_Complex_Types")); Assert.Equal(2, binding.ParameterBindings.Length); AssertIsError(binding, 0); AssertIsError(binding, 1); }
public void Check_Config_Override_Use_Formatters() { HttpConfiguration config = new HttpConfiguration(); config.ParameterBindingRules.Add(param => param.BindWithFormatter()); // overrides DefaultActionValueBinder binder = new DefaultActionValueBinder(); var binding = binder.GetBinding(GetAction("Action_Int", config)); Assert.Single(binding.ParameterBindings); AssertIsBody(binding, 0); }
public void Check_CustomModelBinder_On_Parameter() { HttpConfiguration config = new HttpConfiguration(); config.ServiceResolver.SetServices(typeof(ValueProviderFactory), new ValueProviderFactory[] { new CustomValueProviderFactory(), }); DefaultActionValueBinder binder = new DefaultActionValueBinder(); var binding = binder.GetBinding(GetAction("Action_CustomModelBinder_On_Parameter_WithProvider", config)); Assert.Equal(1, binding.ParameterBindings.Length); AssertIsModelBound(binding, 0); ModelBinderParameterBinding p = (ModelBinderParameterBinding)binding.ParameterBindings[0]; Assert.IsType <CustomModelBinderProvider>(p.ModelBinderProvider); // Since the ModelBinderAttribute didn't specify the valueproviders, we should pull those from config. Assert.Equal(1, p.ValueProviderFactories.Count()); Assert.IsType <CustomValueProviderFactory>(p.ValueProviderFactories.First()); }