private Mock <HttpContext> BuildContext(string routePath, IService serviceInstance, Type requestDto = null, string requestBody = "", Type responseDto = null, string routeTemplate = "", string contentType = "application/json", string method = "GET", Dictionary <string, object> routeValues = null, IQueryCollection query = null, ISerializationProvider provider = null) { RestVerbs restMethods; Enum.TryParse(method, true, out restMethods); var route = new RouteAttribute(routePath, restMethods); var context = new Mock <HttpContext>().SetupAllProperties(); var request = new Mock <HttpRequest>().SetupAllProperties(); var response = new Mock <HttpResponse>().SetupAllProperties(); var reqBody = new MemoryStream(Encoding.ASCII.GetBytes(requestBody)); var resBody = new MemoryStream(); var features = new Mock <IFeatureCollection>().SetupAllProperties(); var rserviceFeature = new RServiceFeature(); var routingFeature = new RoutingFeature(); var serializationProvider = provider ?? new NetJsonProvider(); features.Setup(x => x[typeof(IRServiceFeature)]).Returns(rserviceFeature); features.Setup(x => x[typeof(IRoutingFeature)]).Returns(routingFeature); rserviceFeature.RequestDtoType = requestDto; rserviceFeature.ResponseDtoType = responseDto; rserviceFeature.MethodActivator = _rservice.Routes[Utils.GetRouteKey(route, 0)].ServiceMethod; rserviceFeature.Service = serviceInstance; rserviceFeature.RequestSerializer = serializationProvider; rserviceFeature.ResponseSerializer = serializationProvider; if (!string.IsNullOrWhiteSpace(routeTemplate)) { routingFeature.RouteData = new RouteData(); var constraints = new Mock <IInlineConstraintResolver>().SetupAllProperties(); var irouter = new Mock <IRouter>().SetupAllProperties(); var router = new Mock <Route>(irouter.Object, routeTemplate, constraints.Object) .SetupAllProperties(); foreach (var kvp in routeValues ?? new Dictionary <string, object>()) { routingFeature.RouteData.Values.Add(kvp.Key, kvp.Value); } routingFeature.RouteData.Routers.Add(null); routingFeature.RouteData.Routers.Add(router.Object); routingFeature.RouteData.Routers.Add(null); } request.Object.Method = method; request.Object.ContentType = contentType; request.Object.Body = reqBody; request.Object.Query = query; response.Object.Body = resBody; context.SetupGet(x => x.Request).Returns(request.Object); context.SetupGet(x => x.Response).Returns(response.Object); context.SetupGet(x => x.Features).Returns(features.Object); return(context); }
public void GetResponseDtoType__GetsHandlerFromRServiceFeature() { var expectedDtoType = typeof(ResponseDto); var context = new Mock <HttpContext>().SetupAllProperties(); var features = new Mock <IFeatureCollection>().SetupAllProperties(); var rserviceFeature = new RServiceFeature(); context.SetupGet(x => x.Features).Returns(features.Object); features.Setup(x => x[typeof(IRServiceFeature)]).Returns(rserviceFeature); rserviceFeature.ResponseDtoType = expectedDtoType; var type = context.Object.GetResponseDtoType(); type.Should().NotBeNull().And.Be(expectedDtoType); }
public void GetResponseSerializationProvider__GetResponseSerializationProviderFromRServiceFeature() { var expectedProvider = new Mock <ISerializationProvider>(); var context = new Mock <HttpContext>().SetupAllProperties(); var features = new Mock <IFeatureCollection>().SetupAllProperties(); var rserviceFeature = new RServiceFeature(); context.SetupGet(x => x.Features).Returns(features.Object); features.Setup(x => x[typeof(IRServiceFeature)]).Returns(rserviceFeature); rserviceFeature.ResponseSerializer = expectedProvider.Object; var requestSerializationProvider = context.Object.GetResponseSerializationProvider(); requestSerializationProvider.Should().NotBeNull().And.Be(expectedProvider.Object); }
public void GetMetadata__GeMetadataFromRServiceFeature() { var expectedMetadata = new ServiceMetadata(); var context = new Mock <HttpContext>().SetupAllProperties(); var features = new Mock <IFeatureCollection>().SetupAllProperties(); var rserviceFeature = new RServiceFeature(); context.SetupGet(x => x.Features).Returns(features.Object); features.Setup(x => x[typeof(IRServiceFeature)]).Returns(rserviceFeature); rserviceFeature.Metadata = expectedMetadata; var type = context.Object.GetServiceMetadata(); type.Should().NotBeNull().And.Be(expectedMetadata); }
public void GetServiceInstance__GeServiceInstanceFromRServiceFeature() { var expectedServiceInstance = new Mock <SvcWithMethodRoute>().Object; var context = new Mock <HttpContext>().SetupAllProperties(); var features = new Mock <IFeatureCollection>().SetupAllProperties(); var rserviceFeature = new RServiceFeature(); context.SetupGet(x => x.Features).Returns(features.Object); features.Setup(x => x[typeof(IRServiceFeature)]).Returns(rserviceFeature); rserviceFeature.Service = expectedServiceInstance; var type = context.Object.GetServiceInstance(); type.Should().NotBeNull().And.Be(expectedServiceInstance); }
public void GetServiceMethodActivator__GetActivatorFromRServiceFeature() { var expectedActivator = new Mock <Delegate.Activator>().Object; var context = new Mock <HttpContext>().SetupAllProperties(); var features = new Mock <IFeatureCollection>().SetupAllProperties(); var rserviceFeature = new RServiceFeature(); context.SetupGet(x => x.Features).Returns(features.Object); features.Setup(x => x[typeof(IRServiceFeature)]).Returns(rserviceFeature); rserviceFeature.MethodActivator = expectedActivator; var type = context.Object.GetServiceMethodActivator(); type.Should().NotBeNull().And.Be(expectedActivator); }