예제 #1
0
        public ScriptedController(ControllerContext context, LoadedModuleHandle module) : base(module, true)
        {
            _ctx         = context;
            HttpRequest  = new HttpRequestImpl(_ctx.HttpContext.Request);
            HttpResponse = new HttpResponseImpl(_ctx.HttpContext.Response);

            if (_ctx.RouteData != null)
            {
                RouteValues = new MapImpl();
                foreach (var routeData in _ctx.RouteData.Values)
                {
                    var rv = RouteValues.AsObject();
                    rv.SetIndexedValue(
                        ValueFactory.Create(routeData.Key),
                        CustomMarshaller.ConvertToIValueSafe(routeData.Value, routeData.Value.GetType())
                        );
                }
            }
            else
            {
                RouteValues = ValueFactory.Create();
            }

            var typeClr = (Type)context.ActionDescriptor.Properties["type"];
            var type    = TypeManager.RegisterType(typeClr.Name, typeof(ScriptedController));

            DefineType(type);
            InitOwnData();
        }
예제 #2
0
        public void RequestHeadersAccessibleThrough_MapImpl()
        {
            var request = new Mock <HttpRequest>();
            var headers = new HeaderDictionary();

            headers.Add("Content-Length", "12312");
            headers.Add("Content-Encoding", "utf-8");
            request.SetupGet(x => x.Headers).Returns(headers);

            var scriptRequest = new HttpRequestImpl(request.Object);

            Assert.Equal(2, scriptRequest.Headers.Count());
            Assert.Equal(headers["Content-Length"], scriptRequest.Headers.GetIndexedValue(ValueFactory.Create("Content-Length")).AsString());
            Assert.Equal(headers["Content-Encoding"], scriptRequest.Headers.GetIndexedValue(ValueFactory.Create("Content-Encoding")).AsString());
        }
예제 #3
0
        public void CookiesAreAccessible()
        {
            var fakeCookies = new Dictionary <string, string>();

            fakeCookies["test"] = "test";
            var reqCookies = new Mock <IRequestCookieCollection>();

            reqCookies.Setup(x => x.GetEnumerator()).Returns(fakeCookies.GetEnumerator());
            var requestMock = new Mock <HttpRequest>();

            requestMock.SetupGet(x => x.Cookies).Returns(reqCookies.Object);

            var request = new HttpRequestImpl(requestMock.Object);

            Assert.Equal(request.Cookies.GetIndexedValue(ValueFactory.Create("test")).AsString(), "test");
        }
예제 #4
0
        public void FormDataIsAccessible()
        {
            lock (TestOrderingLock.Lock)
            {
                var se = new MinimalTypeSystemHack();

                var fileMock = new Mock <IFormFile>();
                fileMock.SetupGet(x => x.Name).Returns("uploaded");

                var filesMock = new Mock <IFormFileCollection>();
                filesMock.SetupGet(x => x.Count).Returns(1);
                filesMock.Setup(x => x.GetFile("uploaded")).Returns(fileMock.Object);
                filesMock.Setup(x => x.GetEnumerator()).Returns(() =>
                {
                    var arr = new List <IFormFile>
                    {
                        fileMock.Object
                    };
                    return(arr.GetEnumerator());
                });

                var formMock = new Mock <IFormCollection>();
                formMock.SetupGet(x => x.Files).Returns(filesMock.Object);

                var requestMock = new Mock <HttpRequest>();
                requestMock.SetupGet(x => x.Form).Returns(formMock.Object);
                requestMock.SetupGet(x => x.Headers).Returns(new HeaderDictionary());

                var request = new HttpRequestImpl(requestMock.Object);

                Assert.Equal(1, request.FormData.Files.Count());
                Assert.IsType(typeof(FormDataCollectionContext), request.FormData);
                Assert.IsType(typeof(FormFilesCollectionContext), request.FormData.Files);

                var fFile    = request.FormData.Files[0];
                var fFileInt = request.FormData.Files["uploaded"];

                Assert.Equal(fFile, fFileInt);
            }
        }
예제 #5
0
 public HttpContextImpl(HttpContext context)
 {
     this.context = context;
     request = new HttpRequestImpl(context.Request);
     response = new HttpResponseImpl(context.Response);
 }
예제 #6
0
 public HttpContextImpl(HttpContext context)
 {
     this.context = context;
     request      = new HttpRequestImpl(context.Request);
     response     = new HttpResponseImpl(context.Response);
 }