public void Route_Get_Action_With_Query_Parameters() { // Arrange ApiController api = new UsersRpcController(); HttpRouteData route = new HttpRouteData(new HttpRoute()); route.Values.Add("action", "EchoUser"); Uri requestUri = new Uri("http://localhost/?firstName=QueryFirstName&lastName=QueryLastName"); HttpControllerContext controllerContext = ContextUtil.CreateControllerContext(instance: api, routeData: route, request: new HttpRequestMessage() { Method = HttpMethod.Post, RequestUri = requestUri }); controllerContext.ControllerDescriptor = new HttpControllerDescriptor(controllerContext.Configuration, "test", typeof(UsersRpcController)); // Act HttpResponseMessage message = api.ExecuteAsync(controllerContext, CancellationToken.None).Result; User user = message.Content.ReadAsAsync <User>().Result; // Assert Assert.Equal("QueryFirstName", user.FirstName); Assert.Equal("QueryLastName", user.LastName); }
public void IsDefined_Retruns_True_WhenParameterAttributeIsFound() { UsersRpcController controller = new UsersRpcController(); Action<User> addUserMethod = controller.AddUser; ReflectedHttpActionDescriptor actionDescriptor = new ReflectedHttpActionDescriptor { MethodInfo = addUserMethod.Method }; ParameterInfo parameterInfo = addUserMethod.Method.GetParameters()[0]; ReflectedHttpParameterDescriptor parameterDescriptor = new ReflectedHttpParameterDescriptor(actionDescriptor, parameterInfo); }
public void IsOptional_Returns_True_ForOptionalParameter() { UsersRpcController controller = new UsersRpcController(); MethodInfo methodWithOptionalParam = GetType().GetMethod("MethodWithOptionalParam", BindingFlags.Static | BindingFlags.NonPublic); ReflectedHttpActionDescriptor actionDescriptor = new ReflectedHttpActionDescriptor { MethodInfo = methodWithOptionalParam }; ParameterInfo parameterInfo = methodWithOptionalParam.GetParameters()[0]; ReflectedHttpParameterDescriptor parameterDescriptor = new ReflectedHttpParameterDescriptor(actionDescriptor, parameterInfo); Assert.True(parameterDescriptor.IsOptional); }
public void ParameterBinderAttribute_NotNull_WhenParameterAttributeIsFound() { UsersRpcController controller = new UsersRpcController(); Action<User> addUserMethod = controller.AddUser; ReflectedHttpActionDescriptor actionDescriptor = new ReflectedHttpActionDescriptor { MethodInfo = addUserMethod.Method }; ParameterInfo parameterInfo = addUserMethod.Method.GetParameters()[0]; ReflectedHttpParameterDescriptor parameterDescriptor = new ReflectedHttpParameterDescriptor(actionDescriptor, parameterInfo); Assert.NotNull(parameterDescriptor.ParameterBinderAttribute); }
public void IsDefined_Retruns_True_WhenParameterAttributeIsFound() { UsersRpcController controller = new UsersRpcController(); Action <User> addUserMethod = controller.AddUser; ReflectedHttpActionDescriptor actionDescriptor = new ReflectedHttpActionDescriptor { MethodInfo = addUserMethod.Method }; ParameterInfo parameterInfo = addUserMethod.Method.GetParameters()[0]; ReflectedHttpParameterDescriptor parameterDescriptor = new ReflectedHttpParameterDescriptor(actionDescriptor, parameterInfo); }
public void GetCustomAttributes_AttributeType_Returns_ParameterAttributes() { UsersRpcController controller = new UsersRpcController(); Action<User> addUserMethod = controller.AddUser; ReflectedHttpActionDescriptor actionDescriptor = new ReflectedHttpActionDescriptor { MethodInfo = addUserMethod.Method }; ParameterInfo parameterInfo = addUserMethod.Method.GetParameters()[0]; ReflectedHttpParameterDescriptor parameterDescriptor = new ReflectedHttpParameterDescriptor(actionDescriptor, parameterInfo); IEnumerable<FromBodyAttribute> attributes = parameterDescriptor.GetCustomAttributes<FromBodyAttribute>(); Assert.Equal(1, attributes.Count()); }
public void IsOptional_Returns_True_ForOptionalParameter() { UsersRpcController controller = new UsersRpcController(); MethodInfo methodWithOptionalParam = GetType().GetMethod("MethodWithOptionalParam", BindingFlags.Static | BindingFlags.NonPublic); ReflectedHttpActionDescriptor actionDescriptor = new ReflectedHttpActionDescriptor { MethodInfo = methodWithOptionalParam }; ParameterInfo parameterInfo = methodWithOptionalParam.GetParameters()[0]; ReflectedHttpParameterDescriptor parameterDescriptor = new ReflectedHttpParameterDescriptor(actionDescriptor, parameterInfo); Assert.True(parameterDescriptor.IsOptional); }
public void GetCustomAttributes_Returns_ParameterAttributes() { UsersRpcController controller = new UsersRpcController(); Action<User> addUserMethod = controller.AddUser; ReflectedHttpActionDescriptor actionDescriptor = new ReflectedHttpActionDescriptor { MethodInfo = addUserMethod.Method }; ParameterInfo parameterInfo = addUserMethod.Method.GetParameters()[0]; ReflectedHttpParameterDescriptor parameterDescriptor = new ReflectedHttpParameterDescriptor(actionDescriptor, parameterInfo); object[] attributes = parameterDescriptor.GetCustomAttributes<object>().ToArray(); Assert.Equal(1, attributes.Length); Assert.Equal(typeof(FromBodyAttribute), attributes[0].GetType()); }
public void ParameterBinderAttribute_NotNull_WhenParameterAttributeIsFound() { UsersRpcController controller = new UsersRpcController(); Action <User> addUserMethod = controller.AddUser; ReflectedHttpActionDescriptor actionDescriptor = new ReflectedHttpActionDescriptor { MethodInfo = addUserMethod.Method }; ParameterInfo parameterInfo = addUserMethod.Method.GetParameters()[0]; ReflectedHttpParameterDescriptor parameterDescriptor = new ReflectedHttpParameterDescriptor(actionDescriptor, parameterInfo); Assert.NotNull(parameterDescriptor.ParameterBinderAttribute); }
public void GetCustomAttributes_AttributeType_Returns_ParameterAttributes() { UsersRpcController controller = new UsersRpcController(); Action <User> addUserMethod = controller.AddUser; ReflectedHttpActionDescriptor actionDescriptor = new ReflectedHttpActionDescriptor { MethodInfo = addUserMethod.Method }; ParameterInfo parameterInfo = addUserMethod.Method.GetParameters()[0]; ReflectedHttpParameterDescriptor parameterDescriptor = new ReflectedHttpParameterDescriptor(actionDescriptor, parameterInfo); IEnumerable <FromBodyAttribute> attributes = parameterDescriptor.GetCustomAttributes <FromBodyAttribute>(); Assert.Equal(1, attributes.Count()); }
public void Route_Post_Action_With_Content_Parameter() { // Arrange ApiController api = new UsersRpcController(); HttpRouteData route = new HttpRouteData(new HttpRoute()); route.Values.Add("action", "EchoUserObject"); User postedUser = new User() { FirstName = "SampleFirstName", LastName = "SampleLastName" }; HttpRequestMessage request = new HttpRequestMessage() { Method = HttpMethod.Post }; // Create a serialized request because this test directly calls the controller // which would have normally been working with a serialized request content. string serializedUserAsString = null; using (HttpRequestMessage tempRequest = new HttpRequestMessage() { Content = new ObjectContent <User>(postedUser, new XmlMediaTypeFormatter()) }) { serializedUserAsString = tempRequest.Content.ReadAsStringAsync().Result; } StringContent stringContent = new StringContent(serializedUserAsString); stringContent.Headers.ContentType = new MediaTypeHeaderValue("application/xml"); request.Content = stringContent; HttpControllerContext controllerContext = ContextUtil.CreateControllerContext(instance: api, routeData: route, request: request); controllerContext.ControllerDescriptor = new HttpControllerDescriptor(controllerContext.Configuration, "test", typeof(UsersRpcController)); // Act HttpResponseMessage message = api.ExecuteAsync( controllerContext, CancellationToken.None).Result; User user = message.Content.ReadAsAsync <User>().Result; // Assert Assert.Equal(postedUser.FirstName, user.FirstName); Assert.Equal(postedUser.LastName, user.LastName); }
public void GetCustomAttributes_Returns_ParameterAttributes() { UsersRpcController controller = new UsersRpcController(); Action <User> addUserMethod = controller.AddUser; ReflectedHttpActionDescriptor actionDescriptor = new ReflectedHttpActionDescriptor { MethodInfo = addUserMethod.Method }; ParameterInfo parameterInfo = addUserMethod.Method.GetParameters()[0]; ReflectedHttpParameterDescriptor parameterDescriptor = new ReflectedHttpParameterDescriptor(actionDescriptor, parameterInfo); object[] attributes = parameterDescriptor.GetCustomAttributes <object>().ToArray(); Assert.Equal(1, attributes.Length); Assert.Equal(typeof(FromBodyAttribute), attributes[0].GetType()); }
public void GetCustomAttributes_Returns_ParameterAttributes() { UsersRpcController controller = new UsersRpcController(); Action <User> addUserMethod = controller.AddUser; ReflectedHttpActionDescriptor actionDescriptor = new ReflectedHttpActionDescriptor { MethodInfo = addUserMethod.Method }; ParameterInfo parameterInfo = addUserMethod.Method.GetParameters()[0]; ReflectedHttpParameterDescriptor parameterDescriptor = new ReflectedHttpParameterDescriptor(actionDescriptor, parameterInfo); object[] attributes = parameterDescriptor.GetCustomAttributes <object>().ToArray(); object attribute = Assert.Single(attributes); Assert.IsType <FromBodyAttribute>(attribute); }
public void Parameter_Constructor() { UsersRpcController controller = new UsersRpcController(); Func<string, string, User> echoUserMethod = controller.EchoUser; ReflectedHttpActionDescriptor actionDescriptor = new ReflectedHttpActionDescriptor { MethodInfo = echoUserMethod.Method }; ParameterInfo parameterInfo = echoUserMethod.Method.GetParameters()[0]; ReflectedHttpParameterDescriptor parameterDescriptor = new ReflectedHttpParameterDescriptor(actionDescriptor, parameterInfo); Assert.Equal(actionDescriptor, parameterDescriptor.ActionDescriptor); Assert.Null(parameterDescriptor.DefaultValue); Assert.Equal(parameterInfo, parameterDescriptor.ParameterInfo); Assert.Equal(parameterInfo.Name, parameterDescriptor.ParameterName); Assert.Equal(typeof(string), parameterDescriptor.ParameterType); Assert.Null(parameterDescriptor.Prefix); Assert.Null(parameterDescriptor.ModelBinderAttribute); }
public void Parameter_Constructor() { UsersRpcController controller = new UsersRpcController(); Func <string, string, User> echoUserMethod = controller.EchoUser; ReflectedHttpActionDescriptor actionDescriptor = new ReflectedHttpActionDescriptor { MethodInfo = echoUserMethod.Method }; ParameterInfo parameterInfo = echoUserMethod.Method.GetParameters()[0]; ReflectedHttpParameterDescriptor parameterDescriptor = new ReflectedHttpParameterDescriptor(actionDescriptor, parameterInfo); Assert.Equal(actionDescriptor, parameterDescriptor.ActionDescriptor); Assert.Null(parameterDescriptor.DefaultValue); Assert.Equal(parameterInfo, parameterDescriptor.ParameterInfo); Assert.Equal(parameterInfo.Name, parameterDescriptor.ParameterName); Assert.Equal(typeof(string), parameterDescriptor.ParameterType); Assert.Null(parameterDescriptor.Prefix); Assert.Null(parameterDescriptor.ModelBinderAttribute); }
public void Route_ActionName() { // Arrange ApiController api = new UsersRpcController(); HttpRouteData route = new HttpRouteData(new HttpRoute()); route.Values.Add("action", "Admin"); HttpControllerContext controllerContext = ContextUtil.CreateControllerContext(instance: api, routeData: route, request: new HttpRequestMessage() { Method = HttpMethod.Post }); controllerContext.ControllerDescriptor = new HttpControllerDescriptor(controllerContext.Configuration, "test", typeof(UsersRpcController)); // Act HttpResponseMessage message = api.ExecuteAsync(controllerContext, CancellationToken.None).Result; User user = message.Content.ReadAsAsync <User>().Result; // Assert Assert.Equal("Yao", user.FirstName); Assert.Equal("Huang", user.LastName); }
public void Route_Post_Action_With_Content_Parameter() { // Arrange ApiController api = new UsersRpcController(); HttpRouteData route = new HttpRouteData(new HttpRoute()); route.Values.Add("action", "EchoUserObject"); User postedUser = new User() { FirstName = "SampleFirstName", LastName = "SampleLastName" }; HttpRequestMessage request = new HttpRequestMessage() { Method = HttpMethod.Post }; // Create a serialized request because this test directly calls the controller // which would have normally been working with a serialized request content. string serializedUserAsString = null; using (HttpRequestMessage tempRequest = new HttpRequestMessage() { Content = new ObjectContent<User>(postedUser, new XmlMediaTypeFormatter()) }) { serializedUserAsString = tempRequest.Content.ReadAsStringAsync().Result; } StringContent stringContent = new StringContent(serializedUserAsString); stringContent.Headers.ContentType = new MediaTypeHeaderValue("application/xml"); request.Content = stringContent; HttpControllerContext controllerContext = ContextUtil.CreateControllerContext(instance: api, routeData: route, request: request); controllerContext.ControllerDescriptor = new HttpControllerDescriptor(controllerContext.Configuration, "test", typeof(UsersRpcController)); // Act HttpResponseMessage message = api.ExecuteAsync( controllerContext, CancellationToken.None).Result; User user = message.Content.ReadAsAsync<User>().Result; // Assert Assert.Equal(postedUser.FirstName, user.FirstName); Assert.Equal(postedUser.LastName, user.LastName); }
public void Route_Get_Action_With_Query_Parameters() { // Arrange ApiController api = new UsersRpcController(); HttpRouteData route = new HttpRouteData(new HttpRoute()); route.Values.Add("action", "EchoUser"); Uri requestUri = new Uri("http://localhost/?firstName=QueryFirstName&lastName=QueryLastName"); HttpControllerContext controllerContext = ContextUtil.CreateControllerContext(instance: api, routeData: route, request: new HttpRequestMessage() { Method = HttpMethod.Post, RequestUri = requestUri }); controllerContext.ControllerDescriptor = new HttpControllerDescriptor(controllerContext.Configuration, "test", typeof(UsersRpcController)); // Act HttpResponseMessage message = api.ExecuteAsync(controllerContext, CancellationToken.None).Result; User user = message.Content.ReadAsAsync<User>().Result; // Assert Assert.Equal("QueryFirstName", user.FirstName); Assert.Equal("QueryLastName", user.LastName); }
public void Route_ActionName() { // Arrange ApiController api = new UsersRpcController(); HttpRouteData route = new HttpRouteData(new HttpRoute()); route.Values.Add("action", "Admin"); HttpControllerContext controllerContext = ContextUtil.CreateControllerContext(instance: api, routeData: route, request: new HttpRequestMessage() { Method = HttpMethod.Post }); controllerContext.ControllerDescriptor = new HttpControllerDescriptor(controllerContext.Configuration, "test", typeof(UsersRpcController)); // Act HttpResponseMessage message = api.ExecuteAsync(controllerContext, CancellationToken.None).Result; User user = message.Content.ReadAsAsync<User>().Result; // Assert Assert.Equal("Yao", user.FirstName); Assert.Equal("Huang", user.LastName); }