コード例 #1
0
ファイル: XmlResultTests.cs プロジェクト: martinrue/Tinyweb
        public void ProcessResult_WhenCreatedWithCollection_ReturnsCorrectXmlRepresentation()
        {
            var response = new FakeResponseContext();
            var result = new XmlResult(new List<CustomType> { new CustomType { Data = "data1", Number = 1 }, new CustomType { Data = "data2", Number = 2 } });

            Assert.That(result.Data as List<CustomType>, Is.Not.Empty);

            result.ProcessResult(null, response);

            var expected = "";
            expected += "<?xml version=\"1.0\" encoding=\"utf-16\"?>\r\n";
            expected += "<ArrayOfCustomType xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\r\n";
            expected += "  <CustomType>\r\n";
            expected += "    <Data>data1</Data>\r\n";
            expected += "    <Number>1</Number>\r\n";
            expected += "  </CustomType>\r\n";
            expected += "  <CustomType>\r\n";
            expected += "    <Data>data2</Data>\r\n";
            expected += "    <Number>2</Number>\r\n";
            expected += "  </CustomType>\r\n";
            expected += "</ArrayOfCustomType>";

            Assert.That(response.ContentType, Is.EqualTo("application/xml"));
            Assert.That(response.Response, Is.EqualTo(expected));
        }
コード例 #2
0
ファイル: StringResultTests.cs プロジェクト: jmkelly/Tinyweb
        public void ProcessResult_WhenCreatedWithNewString_ReturnsString()
        {
            var response = new FakeResponseContext();
            var result = new StringResult("test data");

            result.ProcessResult(null, response);

            Assert.That(response.Response, Is.EqualTo("test data"));
        }
コード例 #3
0
ファイル: StringResultTests.cs プロジェクト: jmkelly/Tinyweb
        public void ProcessResult_WhenCreated_ContentTypeIsTextHtml()
        {
            var response = new FakeResponseContext();
            var result = new StringResult("test data");

            result.ProcessResult(null, response);

            Assert.That(response.ContentType, Is.EqualTo("text/html"));
        }
コード例 #4
0
ファイル: HtmlResultTests.cs プロジェクト: jmkelly/Tinyweb
        public void ProcessResult_WhenCreatedWithExistingPath_ReturnsViewData()
        {
            var response = new FakeResponseContext();
            var result = new HtmlResult("..\\..\\Test Data\\HandlerResult\\Views\\View.html");

            result.ProcessResult(null, response);

            Assert.That(response.ContentType, Is.EqualTo("text/html"));
            Assert.That(response.Response, Is.EqualTo("<h1>View</h1>"));
        }
コード例 #5
0
ファイル: JsonResultTests.cs プロジェクト: jmkelly/Tinyweb
        public void ProcessResult_WhenCreatedWithCustomObject_ReturnsCorrectJsonRepresentation()
        {
            var response = new FakeResponseContext();
            var result = new JsonResult(new CustomType { Data = "data", Number = 50 });

            result.ProcessResult(null, response);

            Assert.That(response.ContentType, Is.EqualTo("application/json"));
            Assert.That(response.Response, Is.EqualTo("{\"Data\":\"data\",\"Number\":50}"));
        }
コード例 #6
0
ファイル: JsonResultTests.cs プロジェクト: jmkelly/Tinyweb
        public void ProcessResult_WhenCreatedWithCollection_ReturnsCorrectJsonRepresentation()
        {
            var response = new FakeResponseContext();
            var result = new JsonResult(new List<CustomType> { new CustomType { Data = "data1", Number = 1 }, new CustomType { Data = "data2", Number = 2 } });

            result.ProcessResult(null, response);

            Assert.That(response.ContentType, Is.EqualTo("application/json"));
            Assert.That(response.Response, Is.EqualTo("[{\"Data\":\"data1\",\"Number\":1},{\"Data\":\"data2\",\"Number\":2}]"));
        }
コード例 #7
0
ファイル: JsonResultTests.cs プロジェクト: jmkelly/Tinyweb
        public void ProcessResult_WhenCreatedWithAnonymousObject_ReturnsCorrectJsonRepresentation()
        {
            var response = new FakeResponseContext();
            var result = new JsonResult(new { message = "hello world", number = 42 });

            result.ProcessResult(null, response);

            Assert.That(response.ContentType, Is.EqualTo("application/json"));
            Assert.That(response.Response, Is.EqualTo("{\"message\":\"hello world\",\"number\":42}"));
        }
コード例 #8
0
        public void ProcessResults_WithJsonFormatExtensionOverride_ReturnsJsonResult()
        {
            var request = buildFakeRequestWithAcceptAndRouteValues("application/xml;q=0.7,application/json;q=0.1", new RouteValueDictionary { { "format", "json" } });
            var response = new FakeResponseContext();

            var result = new JsonOrXmlResult(new CustomType { Data = "data", Number = 50 });

            result.ProcessResult(request, response);

            Assert.That(response.ContentType, Is.EqualTo("application/json"));
        }
コード例 #9
0
        public void ProcessResults_WithHigherPriorityXmlAcceptHeader_ReturnsJsonResult()
        {
            var request = buildFakeRequestWithAccept("application/xml;q=0.7,application/json;q=0.6");
            var response = new FakeResponseContext();

            var result = new JsonOrXmlResult(new CustomType { Data = "data", Number = 50 });

            result.ProcessResult(request, response);

            Assert.That(response.ContentType, Is.EqualTo("application/xml"));
        }
コード例 #10
0
ファイル: FileResultTests.cs プロジェクト: jmkelly/Tinyweb
        public void ProcessResult_WhenCreatedWithPathToUnknownFile_ReturnsPathToFileAndHasDispositionHeader()
        {
            var response = new FakeResponseContext();
            var result = new FileResult("..\\..\\Test Data\\HandlerResult\\Files\\Download.unknown");

            result.ProcessResult(null, response);

            Assert.That(response.ContentType, Is.EqualTo("application/unknown"));
            Assert.IsTrue(response.Response.EndsWith("\\Test Data\\HandlerResult\\Files\\Download.unknown"));
            Assert.That(response.Headers["Content-Disposition"], Is.EqualTo("attachment; filename=Download.unknown"));
        }
コード例 #11
0
        public void ProcessResult_WhenCreatedWithValidUri_ReturnsUri()
        {
            var response = new FakeResponseContext();
            var result = new RedirectResult("someuri");

            Assert.That(result.Uri, Is.EqualTo("someuri"));

            result.ProcessResult(null, response);

            Assert.That(response.RedirectUrl, Is.EqualTo("someuri"));
        }
コード例 #12
0
        public void ProcessResults_WithNoAcceptHeader_ReturnsJsonResult()
        {
            var request = buildFakeRequestWithAccept(String.Empty);
            var response = new FakeResponseContext();

            var result = new JsonOrXmlResult(new CustomType { Data = "data", Number = 50 });

            result.ProcessResult(request, response);

            Assert.That(response.ContentType, Is.EqualTo("application/json"));
        }
コード例 #13
0
        public void Execute_WithHttpPOSTOnResource1Handler_CallsHandlerGetMethodAndReturnsCorrectData()
        {
            requestContext.HttpContext.Request.SetHttpMethodResult("POST");

            var response = new FakeResponseContext();
            var result = defaultHandlerInvoker.Execute(new Resource1Handler(), requestContext, null);

            result.Result.ProcessResult(null, response);

            Assert.That(response.ContentType, Is.EqualTo("text/html"));
            Assert.That(response.Response, Is.EqualTo("Post"));
        }
コード例 #14
0
ファイル: FileResultTests.cs プロジェクト: martinrue/Tinyweb
        public void ProcessResult_WhenCreatedWithPathToHtmlFile_ReturnsPathToFileAndHasDispositionHeader()
        {
            var response = new FakeResponseContext();
            var result = new FileResult("..\\..\\Test Data\\HandlerResult\\Views\\View.html");

            Assert.That(result.FilePath, Is.EqualTo("..\\..\\Test Data\\HandlerResult\\Views\\View.html"));

            result.ProcessResult(null, response);

            Assert.That(response.ContentType, Is.EqualTo("text/html"));
            Assert.IsTrue(response.Response.EndsWith("\\Test Data\\HandlerResult\\Views\\View.html"));
            Assert.That(response.Headers["Content-Disposition"], Is.EqualTo("attachment; filename=View.html"));
        }
コード例 #15
0
        public void HttpGET_WithQueryStringParameters_CallsHandlerGetMethodAndReturnsCorrectData()
        {
            requestContext.HttpContext = MvcMockHelpers.FakeHttpContext(queryString: new NameValueCollection { {"param1", "1"}, {"param2", "world"} });
            requestContext.HttpContext.Request.SetHttpMethodResult("GET");

            var response = new FakeResponseContext();
            var result = defaultHandlerInvoker.Execute(new InvokeHandler(), requestContext, null);

            result.Result.ProcessResult(null, response);

            Assert.That(result.Result, Is.InstanceOf<StringResult>());
            Assert.That(response.ContentType, Is.EqualTo("text/html"));
            Assert.That(response.Response, Is.EqualTo("1world"));
        }
コード例 #16
0
        public void ProcessResults_WithImplicitEqualPriorityXmlAndJsonAcceptHeader_ReturnsJsonResult()
        {
            var request = buildFakeRequestWithAccept("application/xml,application/json");
            var response = new FakeResponseContext();

            var result = new JsonOrXmlResult(new CustomType { Data = "data", Number = 50 });

            Assert.That((result.Data as CustomType).Data, Is.EqualTo("data"));
            Assert.That((result.Data as CustomType).Number, Is.EqualTo(50));

            result.ProcessResult(request, response);

            Assert.That(response.ContentType, Is.EqualTo("application/json"));
        }
コード例 #17
0
        public void ProcessResult_WhenCreatedWithValidHandler_ReturnsHandlerUri()
        {
            Url.ApplicationPathProvider = new FakeApplicationPathProvider();

            Tinyweb.Handlers = new[] { new HandlerData { Type = typeof(Resource1Handler), Uri = "uri" } };

            var response = new FakeResponseContext();
            var result = new RedirectResult<Resource1Handler>();

            Assert.That(result.Uri, Is.EqualTo("/uri"));

            result.ProcessResult(null, response);

            Assert.That(response.RedirectUrl, Is.EqualTo("/uri"));
        }
コード例 #18
0
        public void HttpDELETE_WithComplexModelParameter_CallsHandlerDeleteMethodAndReturnsCorrectData()
        {
            requestContext.HttpContext = MvcMockHelpers.FakeHttpContext(queryString: new NameValueCollection { { "number1", "13" }, { "number2", "11" } }, formData: new NameValueCollection { { "factor", "10" } });
            requestContext.RouteData.Values.Add("label", "the total is");
            requestContext.HttpContext.Request.SetHttpMethodResult("DELETE");

            var response = new FakeResponseContext();
            var result = defaultHandlerInvoker.Execute(new InvokeHandler(), requestContext, null);

            result.Result.ProcessResult(null, response);

            Assert.That(result.Result, Is.InstanceOf<StringResult>());
            Assert.That(response.ContentType, Is.EqualTo("text/html"));
            Assert.That(response.Response, Is.EqualTo("the total is 240"));
        }
コード例 #19
0
        public void HttpGET_WithRouteDataParameters_CallsHandlerGetMethodAndReturnsCorrectData()
        {
            requestContext.HttpContext = MvcMockHelpers.FakeHttpContext();
            requestContext.RouteData.Values.Add("param1", "10");
            requestContext.RouteData.Values.Add("param2", "strings");
            requestContext.HttpContext.Request.SetHttpMethodResult("GET");

            var response = new FakeResponseContext();
            var result = defaultHandlerInvoker.Execute(new InvokeHandler(), requestContext, null);

            result.Result.ProcessResult(null, response);

            Assert.That(result.Result, Is.InstanceOf<StringResult>());
            Assert.That(response.ContentType, Is.EqualTo("text/html"));
            Assert.That(response.Response, Is.EqualTo("10strings"));
        }
コード例 #20
0
ファイル: XmlResultTests.cs プロジェクト: martinrue/Tinyweb
        public void ProcessResult_WhenCreatedWithCustomObject_ReturnsCorrectXmlRepresentation()
        {
            var response = new FakeResponseContext();
            var result = new XmlResult(new CustomType { Data = "data", Number = 50 });

            Assert.That((result.Data as CustomType).Data, Is.EqualTo("data"));
            Assert.That((result.Data as CustomType).Number, Is.EqualTo(50));

            result.ProcessResult(null, response);

            var expected = "";
            expected += "<?xml version=\"1.0\" encoding=\"utf-16\"?>\r\n";
            expected += "<CustomType xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\r\n";
            expected += "  <Data>data</Data>\r\n";
            expected += "  <Number>50</Number>\r\n";
            expected += "</CustomType>";

            Assert.That(response.ContentType, Is.EqualTo("application/xml"));
            Assert.That(response.Response, Is.EqualTo(expected));
        }
コード例 #21
0
        public void HttpPUT_WithSimpleModelParameter_CallsHandlerPutMethodAndReturnsCorrectData()
        {
            requestContext.HttpContext = MvcMockHelpers.FakeHttpContext(queryString: new NameValueCollection { { "number1", "4" }, { "number2", "5" } });
            requestContext.HttpContext.Request.SetHttpMethodResult("PUT");

            var response = new FakeResponseContext();
            var result = defaultHandlerInvoker.Execute(new InvokeHandler(), requestContext, null);

            result.Result.ProcessResult(null, response);

            Assert.That(result.Result, Is.InstanceOf<StringResult>());
            Assert.That(response.ContentType, Is.EqualTo("text/html"));
            Assert.That(response.Response, Is.EqualTo("Result: 9"));
        }
コード例 #22
0
        public void HttpPOST_WithAllParameterSources_CallsHandlerPostMethodAndReturnsCorrectData()
        {
            requestContext.HttpContext = MvcMockHelpers.FakeHttpContext(queryString: new NameValueCollection { { "param1", "42" } }, formData: new NameValueCollection { {"param2", "1.141"} });
            requestContext.RouteData.Values.Add("param3", "true");
            requestContext.HttpContext.Request.SetHttpMethodResult("POST");

            var response = new FakeResponseContext();
            var result = defaultHandlerInvoker.Execute(new InvokeHandler(), requestContext, null);

            result.Result.ProcessResult(null, response);

            Assert.That(result.Result, Is.InstanceOf<StringResult>());
            Assert.That(response.ContentType, Is.EqualTo("text/html"));
            Assert.That(response.Response, Is.EqualTo("421.141True"));
        }