package org.webpieces.webserver.domains; 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.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 TestDomainMatching { private RequestListener server; private MockResponseSender socket = new MockResponseSender(); @Before public void setUp() { VirtualFileClasspath metaFile = new VirtualFileClasspath("domainsMeta.txt", WebserverForTest.class.getClassLoader()); WebserverForTest webserver = new WebserverForTest(new PlatformOverridesForTest(), null, false, metaFile); server = webserver.start(); } @Test public void testDomain1RequestDomain1Route() { HttpRequest req = Requests.createGetRequest("mydomain.com", "/domain1", true); server.incomingRequest(req, new RequestId(0), true, socket); FullResponse response = ResponseExtract.assertSingleResponse(socket); response.assertStatusCode(KnownStatusCode.HTTP_200_OK); response.assertContains("This is domain1"); } @Test public void testDomain1RequestDomain1RouteWithPort() { HttpRequest req = Requests.createGetRequest("mydomain.com:9000", "/domain1", true); server.incomingRequest(req, new RequestId(0), true, socket); FullResponse response = ResponseExtract.assertSingleResponse(socket); response.assertStatusCode(KnownStatusCode.HTTP_200_OK); response.assertContains("This is domain1"); } @Test public void testDomain1RequestDomain2Route() { HttpRequest req = Requests.createGetRequest("mydomain.com", "/domain2", true); server.incomingRequest(req, new RequestId(0), true, socket); FullResponse response = ResponseExtract.assertSingleResponse(socket); response.assertStatusCode(KnownStatusCode.HTTP_404_NOTFOUND); response.assertContains("Your page for Domain1 was not found"); } @Test public void testDomain2RequestDomain1Route() { HttpRequest req = Requests.createGetRequest("domain2.com", "/domain1", true); server.incomingRequest(req, new RequestId(0), true, socket); FullResponse response = ResponseExtract.assertSingleResponse(socket); response.assertStatusCode(KnownStatusCode.HTTP_404_NOTFOUND); response.assertContains("Your page was not found"); } @Test public void testDomain2RequestDomain2Route() { HttpRequest req = Requests.createGetRequest("domain2.com", "/domain2", true); server.incomingRequest(req, new RequestId(0), true, socket); FullResponse response = ResponseExtract.assertSingleResponse(socket); response.assertStatusCode(KnownStatusCode.HTTP_200_OK); response.assertContains("This is domain2"); } @Test public void testStaticFileFromDomain1() { HttpRequest req = Requests.createGetRequest("mydomain.com", "/public/myfile", true); server.incomingRequest(req, new RequestId(0), true, socket); FullResponse response = ResponseExtract.assertSingleResponse(socket); response.assertStatusCode(KnownStatusCode.HTTP_200_OK); response.assertContains("org.webpieces.webserver"); } @Test public void testStaticFileFromDomain2() { HttpRequest req = Requests.createGetRequest("domain2.com", "/public/myfile", true); server.incomingRequest(req, new RequestId(0), true, socket); FullResponse response = ResponseExtract.assertSingleResponse(socket); response.assertStatusCode(KnownStatusCode.HTTP_200_OK); response.assertContains("org.webpieces.webserver"); } @Test public void testStaticDirFromDomain1() { HttpRequest req = Requests.createGetRequest("mydomain.com", "/public/asyncMeta.txt", true); server.incomingRequest(req, new RequestId(0), true, socket); FullResponse response = ResponseExtract.assertSingleResponse(socket); response.assertStatusCode(KnownStatusCode.HTTP_200_OK); response.assertContains("org.webpieces.webserver"); } @Test public void testStaticDirFromDomain2() { HttpRequest req = Requests.createGetRequest("domain2.com", "/public/asyncMeta.txt", true); server.incomingRequest(req, new RequestId(0), true, socket); FullResponse response = ResponseExtract.assertSingleResponse(socket); response.assertStatusCode(KnownStatusCode.HTTP_200_OK); response.assertContains("org.webpieces.webserver"); } }