1 package net.pterodactylus.sone.main;
3 import static org.hamcrest.MatcherAssert.assertThat;
4 import static org.hamcrest.Matchers.is;
5 import static org.hamcrest.Matchers.startsWith;
6 import static org.mockito.Mockito.mock;
8 import java.io.ByteArrayOutputStream;
10 import java.io.IOException;
11 import java.io.OutputStream;
12 import java.io.StringWriter;
14 import java.net.URISyntaxException;
16 import net.pterodactylus.sone.web.page.FreenetRequest;
17 import net.pterodactylus.util.template.Template;
18 import net.pterodactylus.util.template.TemplateContext;
19 import net.pterodactylus.util.web.Method;
20 import net.pterodactylus.util.web.Page;
21 import net.pterodactylus.util.web.Response;
23 import freenet.clients.http.ToadletContext;
24 import freenet.support.api.HTTPRequest;
26 import com.google.common.base.Charsets;
27 import com.google.common.io.Files;
28 import org.junit.Before;
29 import org.junit.Rule;
30 import org.junit.Test;
31 import org.junit.rules.TemporaryFolder;
34 * Unit test for {@link DebugLoaders}.
36 * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
38 public class DebugLoadersTest {
41 public final TemporaryFolder temporaryFolder = new TemporaryFolder();
43 private final StringWriter stringWriter = new StringWriter();
44 private final TemplateContext templateContext = new TemplateContext();
45 private Loaders loaders;
48 public void setupLoader() throws IOException {
49 String templatePath = temporaryFolder.newFolder("temps").getPath();
50 loaders = new DebugLoaders(templatePath);
51 File templateFile = new File(templatePath, "template.txt");
52 Files.write("<%if foo>foo<%else>bar<%/if>", templateFile, Charsets.UTF_8);
56 public void debugLoaderCanLoadTemplatesFromFilesystem() throws IOException {
57 Template template = loaders.loadTemplate("/template.txt");
58 template.render(templateContext, stringWriter);
59 assertThat(stringWriter.toString(), is("bar"));
63 public void staticPageIsServedFromFilesystem() throws URISyntaxException, IOException {
64 Page<FreenetRequest> page = loaders.loadStaticPage("text/", "", "text/plain");
65 URI uri = new URI("http://some.host/text/template.txt");
66 Method method = Method.GET;
67 HTTPRequest httpRequest = mock(HTTPRequest.class);
68 ToadletContext toadletContext = mock(ToadletContext.class);
69 FreenetRequest request = new FreenetRequest(uri, method, httpRequest, toadletContext);
70 OutputStream outputStream = new ByteArrayOutputStream();
71 Response response = new Response(outputStream);
72 page.handleRequest(request, response);
73 assertThat(response.getContentType(), startsWith("text/plain"));
74 assertThat(response.getStatusCode(), is(200));