package org.webpieces.webserver.tags; import org.junit.Before; import org.junit.Test; import org.webpieces.httpcommon.Requests; import org.webpieces.httpcommon.api.RequestId; import org.webpieces.httpcommon.api.RequestListener; import org.webpieces.httpparser.api.dto.HttpRequest; import org.webpieces.httpparser.api.dto.KnownHttpMethod; import org.webpieces.httpparser.api.dto.KnownStatusCode; import org.webpieces.util.file.VirtualFileClasspath; import org.webpieces.webserver.ResponseExtract; import org.webpieces.webserver.WebserverForTest; import org.webpieces.webserver.test.FullResponse; import org.webpieces.webserver.test.MockResponseSender; import org.webpieces.webserver.test.PlatformOverridesForTest; public class TestGetSetTags { private MockResponseSender socket = new MockResponseSender(); private RequestListener server; @Before public void setUp() { VirtualFileClasspath metaFile = new VirtualFileClasspath("tagsMeta.txt", WebserverForTest.class.getClassLoader()); WebserverForTest webserver = new WebserverForTest(new PlatformOverridesForTest(), null, false, metaFile); server = webserver.start(); } @Test public void testSimpleSetGet() { HttpRequest req = Requests.createRequest(KnownHttpMethod.GET, "/setget"); server.incomingRequest(req, new RequestId(0), true, socket); FullResponse response = ResponseExtract.assertSingleResponse(socket); response.assertStatusCode(KnownStatusCode.HTTP_200_OK); response.assertContains("result=Jeff M"); response.assertContains("key not exist so body is printed 'COOL' and test failfast:false works"); response.assertContains("This is set body result='testing set body here Dean Hiller'"); //tests whitespace cleaned up the line with #{set}# so these don't take up lines in the output response.assertContains("<body>\n The above line should be cleared"); response.assertContains("<a href=""/>"); //ensure we properly escape html from get/set response.assertContains("<h2>Title2</h2>"); //ensure we use escape:false //by default we do not escape the body of set when using get as it is used heavily in //templating. to avoid this if you like, there is an escapeHtml on the set element response.assertContains("<h1 class=\"\">Some Header</h1>"); response.assertContains("<h3 class="">Header3</h1>"); //ensure we use escape:true } }