public RoutineMiddleware(RequestDelegate next, IHttpContextAccessor httpContextAccessor, IJsonSerializer jsonSerializer, IServiceContext serviceContext)
        {
            this.next = next;

            rootPath                = serviceContext.ServiceConfiguration.GetPath();
            enableTestApp           = serviceContext.ServiceConfiguration.GetEnableTestApp();
            testAppPath             = serviceContext.ServiceConfiguration.GetPath(serviceContext.ServiceConfiguration.GetTestAppPath());
            indexHandler            = new IndexRequestHandler(serviceContext, jsonSerializer, httpContextAccessor);
            fileHandler             = new FileRequestHandler(serviceContext, jsonSerializer, httpContextAccessor);
            fontsHandler            = new FontsRequestHandler(serviceContext, jsonSerializer, httpContextAccessor);
            configurationHandler    = new ConfigurationRequestHandler(serviceContext, jsonSerializer, httpContextAccessor);
            applicationModelHandler = new ApplicationModelRequestHandler(serviceContext, jsonSerializer, httpContextAccessor);
            handleHandler           = new HandleRequestHandler(serviceContext, jsonSerializer, httpContextAccessor,
                                                               actionFactory: resolution => resolution.HasOperation
                    ? new DoRequestHandler(serviceContext, jsonSerializer, httpContextAccessor, resolution)
                    : new GetRequestHandler(serviceContext, jsonSerializer, httpContextAccessor, resolution)
                                                               );
        }
Esempio n. 2
0
        public override void SetUp()
        {
            base.SetUp();

            httpContextAccessor = new Mock <IHttpContextAccessor>();
            var httpContext = new Mock <HttpContext>();

            serviceContext      = new Mock <IServiceContext>();
            objectService       = new Mock <IObjectService>();
            request             = new Mock <HttpRequest>();
            response            = new Mock <HttpResponse>();
            featureCollection   = new Mock <IFeatureCollection>();
            httpResponseFeature = new Mock <IHttpResponseFeature>();
            requestHeaders      = new HeaderDictionary();
            responseHeaders     = new HeaderDictionary();
            requestQueryString  = new QueryString();
            requestQuery        = new QueryCollection();
            serializer          = new JsonSerializerAdapter();

            serviceContext.Setup(sc => sc.ObjectService).Returns(objectService.Object);
            config = BuildRoutine.ServiceConfig().FromBasic();
            serviceContext.Setup(sc => sc.ServiceConfiguration).Returns(config);
            objectService.Setup(os => os.ApplicationModel).Returns(() => GetApplicationModel());
            objectService.Setup(os => os.Get(It.IsAny <ReferenceData>())).Returns((ReferenceData referenceData) =>
            {
                if (referenceData.Id == null)
                {
                    referenceData = new ReferenceData
                    {
                        Id          = "instance",
                        ModelId     = referenceData.ModelId,
                        ViewModelId = referenceData.ViewModelId
                    };
                }

                return(objectDictionary[referenceData]);
            });
            request.Setup(r => r.Headers).Returns(requestHeaders);
            request.Setup(r => r.QueryString).Returns(requestQueryString);
            request.Setup(r => r.Query).Returns(requestQuery);
            request.Setup(r => r.Method).Returns("POST");
            request.Setup(r => r.Body).Returns(new MemoryStream()).Verifiable();

            // https://stackoverflow.com/questions/34677203/testing-the-result-of-httpresponse-statuscode/34677864#34677864
            response.SetupAllProperties();
            response.Setup(r => r.Body).Returns(new MemoryStream()).Verifiable();
            response.Setup(r => r.Headers).Returns(responseHeaders);
            httpContextAccessor.Setup(hca => hca.HttpContext).Returns(httpContext.Object);
            httpContextAccessor.Setup(hca => hca.HttpContext.Request).Returns(request.Object);
            httpContextAccessor.Setup(hca => hca.HttpContext.Response).Returns(response.Object);
            httpContextAccessor.Setup(hca => hca.HttpContext.Features).Returns(featureCollection.Object);
            httpContextAccessor.Setup(hca => hca.HttpContext.Response.HttpContext.Features.Get <IHttpResponseFeature>()).Returns(httpResponseFeature.Object);
            httpContextAccessor.Setup(hca => hca.HttpContext.Items).Returns(new Dictionary <object, object>());

            RequestHandlerBase.ClearModelIndex();
            testing = new HandleRequestHandler(serviceContext.Object, serializer, httpContextAccessor.Object,
                                               actionFactory: resolution => resolution.HasOperation
                    ? new DoRequestHandler(serviceContext.Object, serializer, httpContextAccessor.Object, resolution)
                    : new GetRequestHandler(serviceContext.Object, serializer, httpContextAccessor.Object, resolution)
                                               );
        }