Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
        }