package org.webpieces.webserver.filters; import java.util.List; import org.junit.Assert; 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.filters.app.Remote; import org.webpieces.webserver.https.MockRemote; import org.webpieces.webserver.test.FullResponse; import org.webpieces.webserver.test.MockResponseSender; import org.webpieces.webserver.test.PlatformOverridesForTest; import com.google.inject.AbstractModule; public class TestFilters { private RequestListener server; private MockResponseSender socket = new MockResponseSender(); private MockRemote mockRemote = new MockRemote(); @Before public void setUp() { VirtualFileClasspath metaFile = new VirtualFileClasspath("filtersMeta.txt", WebserverForTest.class.getClassLoader()); WebserverForTest webserver = new WebserverForTest(new PlatformOverridesForTest(), new AppOverrides(), false, metaFile); server = webserver.start(); } @Test public void testFilterOrderAndUniqueInit() { HttpRequest req = Requests.createRequest(KnownHttpMethod.GET, "/test/something"); server.incomingRequest(req, new RequestId(0), true, socket); FullResponse response = ResponseExtract.assertSingleResponse(socket); response.assertStatusCode(KnownStatusCode.HTTP_200_OK); List<Integer> recorded = mockRemote.getRecorded(); Assert.assertEquals(2, recorded.size()); Assert.assertEquals(new Integer(1), recorded.get(0)); Assert.assertEquals(new Integer(2), recorded.get(1)); } private class AppOverrides extends AbstractModule { @Override protected void configure() { bind(Remote.class).toInstance(mockRemote); } } }